给linux内核打实时补丁preempt_rt

  1. 下载内核和补丁
    运行uname -a可以看到当前内核版本。
    补丁地址: https://www.kernel.org/pub/linux/kernel/projects/rt/ 从中选择一个与当前内核版本接近并且更新的补丁下载(系统启动时会自动选择版本更高的内核)
    内核地址: http://www.kernel.org/pub/linux/kernel/ 根据下载的补丁版本下载内核,内核版本要和补丁一致。
    下面以linux-5.4.54内核与patch-5.4.54-rt32.patch补丁为例进行说明。

  2. 打补丁

$ sudo mkdir /usr/src/rt-preempt-linux

将下载的内核与补丁解压,先将解压后的补丁放到解压后的内核文件夹里面,然后再将内核文件夹放到刚创建的rt-preempt-linux文件夹里面。

$ sudo cp -r linux-5.4.54/ /usr/src/rt-preempt-linux/

然后运行以下命令打补丁。

$ cd /usr/src/rt-preempt-linux/linux-5.4.54
$ sudo patch -p1 < patch-5.4.54-rt32.patch
  1. 内核配置
    继续在/usr/src/rt-preempt-linux/linux-5.4.54路径下执行指令
$ sudo make mrproper # 删除目录下残留的.o文件和其他从属文件

在boot文件夹下可以找到与当前内核版本匹配的config文件,例如:config-3.16.0-30-generic 。将其拷贝到当前目录/usr/src/rt-preempt-linux/linux-5.4.54 下并命名为.config

$ sudo cp /boot/config-3.16.0-30-generic .config

安装几个必要的套件

$ sudo apt-get install libncurses5-dev flex bison

进入菜单配置界面,此时窗口必须足够大。

$ sudo make menuconfig

进入“General setup”
在"Preemption Model"中选择“Fully Preemptible Kernel(Real-Time)”

menuconfig_1.png

回到上一层,进入”Device Drivers”中,去掉“Staging drivers”

menuconfig_2.png

  1. 编译内核

下面的编译过程会比较费时,大约需要2个小时左右。

仍然在/usr/src/rt-preempt-linux/linux-5.4.54路径下执行指令

$ sudo make -jn

(n是要衍生的作业数,在实际中,每个处理器上一般衍生一个或两个作业。例如在一个双核处理器上可以使用$make -j4)

$ sudo make modules_install 
$ sudo make install  
$ cd /boot
$ sudo mkinitramfs -k -o initrd.img-5.4.54-rt32 5.4.54-rt32

最后重启就可以选择使用打过补丁的内核了,如果重启后找不到相应选项,再对/boot/grub/grub.cfg进行修改,修改方法可以上网查。

参考:

http://blog.csdn.net/zzsfqiuyigui/article/details/7621665
http://blog.csdn.net/deng_sai/article/details/38080603
http://blog.csdn.net/fjt19900921/article/details/8316481

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。