(一)安装所需软件
sudo apt update
sudo apt install libncurses5-dev openssl libssl-dev build-essential pkg-config libc6-dev bison flex libelf-dev zlibc minizip libidn11-dev libidn11
(二)下载linux内核及实时补丁,版本必须对应。
下载实时内核补丁:patches-5.2.21-rt15.tar.gz
下载linux内核:linux-5.2.21.tar.gz
解压命令查看:https://blog.csdn.net/zlf19910726/article/details/122316448
(三)打实时补丁
#!/bin/sh
# patches.sh
cat ./patches/series | while read line
do
patch -p1 < ./patches/$line
done
gedit patches.sh
cp -R ./patches ./patches.sh ./linux-5.2.21/
cd ./linux-5.2.21/
sh ./patches.sh
(四)配置
查看帮助,注意不是make --help
make help
Now you can use this config as the default to configure the build:
make olddefconfig
make menuconfig
The second command brings up a terminal interface
in which you can configure the preemption model.
Navigate with the arrow keys to
General Setup > Preemption Model
and select Fully Preemptible Kernel (Real-Time).
[make olddefconfig]没有图形界面,
[make menuconfig]通过图形界面配置。
都选择完全抢占实时内核。其他默认。
(五)编译
首先运行
(1)fakeroot make -j4 deb-pkg
提示:如果编译结束后,给内核打deb格式包的时候报错:recipe for traget 'deb-pkg' failed.
则去到你现在编译这个目录下 ctrl+h 显示隐藏文件,
找到并且修改 .config 文件,
把 CONFIG_MODULE_SIG_ALL、CONFIG_MODULE_SIG_KEY、CONFIG_SYSTEM_TRUSTED_KEYS 三项注释掉,
编译时系统会自动生成一次性密钥来加密。
把 CONFIG_DEBUG_INFO=y 去掉,不然新内核带巨量debug信息占用硬盘磁盘空间。
重新运行 make -j4 deb-pkg,
注意命令前不加fakeroot,不加fakeroot,
不要使用sudo,不要使用sudo。
(2)make -j4 deb-pkg
最后,你已准备好安装新创建的包。
edda@edda-test:~/文档/zhenglf/kernel/5.2.21/linux-5.2.21$ ll ../
总用量 398208
drwxrwxr-x 4 edda edda 4096 1月 4 21:54 ./
drwxrwxr-x 4 edda edda 4096 1月 5 09:40 ../
drwxrwxr-x 27 edda edda 4096 1月 4 21:51 linux-5.2.21/
-rw-rw-r-- 1 edda edda 5872 1月 4 21:54 linux-5.2.21-rt15_5.2.21-rt15-1_amd64.buildinfo
-rw-rw-r-- 1 edda edda 2935 1月 4 21:54 linux-5.2.21-rt15_5.2.21-rt15-1_amd64.changes
-rw-rw-r-- 1 edda edda 988483 1月 4 19:23 linux-5.2.21-rt15_5.2.21-rt15-1.diff.gz
-rw-rw-r-- 1 edda edda 1183 1月 4 19:23 linux-5.2.21-rt15_5.2.21-rt15-1.dsc
-rw-rw-r-- 1 edda edda 172577245 1月 4 19:17 linux-5.2.21-rt15_5.2.21-rt15.orig.tar.gz
-rw-rw-r-- 1 edda edda 164540395 12月 31 14:54 linux-5.2.21.tar.gz
-rw-r--r-- 1 edda edda 11494108 1月 4 21:52 linux-headers-5.2.21-rt15_5.2.21-rt15-1_amd64.deb
-rw-r--r-- 1 edda edda 56710580 1月 4 21:54 linux-image-5.2.21-rt15_5.2.21-rt15-1_amd64.deb
-rw-r--r-- 1 edda edda 1059968 1月 4 21:52 linux-libc-dev_5.2.21-rt15-1_amd64.deb
drwxrwxr-x 2 edda edda 28672 12月 17 2019 patches/
-rw-rw-r-- 1 edda edda 313902 1月 4 15:33 patches-5.2.21-rt15.tar.gz
-rw-rw-r-- 1 edda edda 97 1月 4 15:39 patches.sh
edda@edda-test:~/文档/zhenglf/kernel/5.2.21/linux-5.2.21$
(六)安装
sudo dpkg -i ../linux-headers-5.2.21-rt15_5.2.21-rt15-1_amd64.deb ../linux-image-5.2.21-rt15_5.2.21-rt15-1_amd64.deb
(七)修改grub
编辑/etc/default/grub文件,改动三处:
将 "GRUB_TIMEOUT_STYLE=hidden" 注释掉(在前面加上“#”)。
将 "GRUB_TIMEOUT" 的值改为“15”。
将 "GRUB_CMDLINE_LINUX_DEFAULT" 的值改为“text”。
sudo update-grub
(八)重新启动进入实时内核
重新启动后选择【高级选项】或者【Advaced options for Ubuntu】,选择相应的内核。