下载内核和补丁
运行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补丁为例进行说明。打补丁
$ 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
- 内核配置
继续在/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)”
回到上一层,进入”Device Drivers”中,去掉“Staging drivers”
- 编译内核
下面的编译过程会比较费时,大约需要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