Ubuntu18下实时Linux内核的编译安装记录(保姆级)

发布时间 2023-12-22 09:11:00作者: QAQ_BIU

本人系统是虚拟机上的ubuntu18,过程参考了以下3个链接:

https://blog.csdn.net/huangjunsheng123/article/details/116202848

https://blog.51cto.com/u_15899439/5907513

https://kunaly.blog.csdn.net/article/details/101111502?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-101111502-blog-116202848.235%5Ev39%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-101111502-blog-116202848.235%5Ev39%5Epc_relevant_anti_t3_base&utm_relevant_index=6&ydreferer=aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1YW5nanVuc2hlbmcxMjMvYXJ0aWNsZS9kZXRhaWxzLzExNjIwMjg0OA%3D%3D&ydreferer=aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1YW5nanVuc2hlbmcxMjMvYXJ0aWNsZS9kZXRhaWxzLzExNjIwMjg0OA%3D%3D&ydreferer=aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1YW5nanVuc2hlbmcxMjMvYXJ0aWNsZS9kZXRhaWxzLzExNjIwMjg0OA%3D%3D

1、下载内核和补丁(推荐用镜像下载)

国内阿里镜像内核下载地址(下载速度快): https://mirrors.aliyun.com/linux-kernel/
国内阿里镜像补丁下载地址(下载速度快): https://mirrors.aliyun.com/linux-kernel/projects/rt/

本人下载的是5.4.138版本的核心和补丁。

2:解压打补丁

1.将第一步下载的文件放到新建的kernel文件夹中
cd ~
mkdir kernel
cd kernel
 
2.解压内核源码
tar -zxvf linux-4.4.tar.gz
 
3.解压补丁
gunzip patch-4.4-rc6-rt1.patch.gz
 
4.打补丁
cd linux-4.4
patch -p1 < ../patch-4.4-rc6-rt1.patch
 
5.安装编译内核需要的模块
sudo apt-get install libncurses-dev
sudo apt-get install libssl-dev
 
6.配置linux内核
make menuconfig

 注:详细补充下第6步中配置内核的具体操作:由于第三个链接中是4.几版本的,而我下的是5.4.138版本的(同第二个链接,因为和他ubunut系统版本一样,为了方便),在5.4内核版本里,menuconfig界面都改了,所以界面和第三个参考链接中的插图不一样。

开始实操!进入menuconfig后是这个画面,点击进入第一个(要不要点忘了,可以试试,点击后下一步搜索得到就行):

选项太多,直接查找更方便,弹窗最上方也提示了,按/就可以弹出搜索界面,输入CONFIG_EXPERT,显示如下界面,按1选择进入专业配置模式?:

然后画面会变成这样,还是在general setup里,但是后面多个了括号描述(config expert):

继续按/搜索PREEMPT_RT,界面类似下图,选择1:

 如图,然后继续回车,进入:

选择最后一个RT选项,保存退出即可:

 3:为了避免出错,编译参考的还是同版本的第二个链接:

make -j4   (直接写make也行,-j4就是四核线程加速,如果虚拟机创建的时候分配的2核,就写-j2)

 注:这一步的执行时间较长,本人虚拟机创建时分配的2核,因此用的make -j2,笔记本编译内核过程用了将近3小时。

 注:make -j2 编译时候的遇到一些错误如下:

问题1:编译 Linux 内核报错 ( /bin/sh: 1: gcc: not found scripts/Makefile.host:95: recipe for target ‘scripts/basic/fixdep’ failed )
解决:https://blog.csdn.net/lqf123123/article/details/126426860

问题2:编译内核问题,找不到那个RT选项。
解决:General setup 中打开内核 feature,或者在这个界面里按/进行搜索CONFIG_EXPERT,好像是按1把选择,在里面继续搜索PREEMPT_RT,选择进入Preemption Model。选择最后的RT选项。保存退出。也就是上面截图所演示的。
参考链接:https://blog.51cto.com/u_15899439/5907513

问题3:Linux内核编译错误:make[1]: *** 没有规则可制作目标“debian/canonical-certs.pem”,由“certs/x509_certificate_list” 需求。 停止
解决:https://blog.csdn.net/m0_51203305/article/details/120805372
注:只要改:CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem" #这个要删除

注:问题3和4要改的.config文件就在kernel/linux5.4.138下,文件管理器中隐藏的,在终端直接sudo vim .config就可以编辑。

问题4:内核编译错误:Makefile:988: recipe for target 'certs' failed
解决:https://blog.csdn.net/weixin_43966269/article/details/106097920?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-106097920-blog-115805848.235%5Ev39%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-106097920-blog-115805848.235%5Ev39%5Epc_relevant_anti_t3_base
方法:关闭:CONFIG_MODULE_SIG和CONFIG_SYSTEM_TRUSTED_KEYS关联项(y改为n,最后那个上一个问题改为空过了)
另外内核编译关闭CONFIG_DEBUG_INFO,内核Debug信息量很大

完事后开始下面三个指令,这三步就很快了,一共大概十分钟。完事后重启系统。再用指令查看内核版本,如下图,应该就OK了。

sudo make modules_install
sudo make headers_install
sudo make install

重启后,执行查看版本指令,效果如图。OK:

cat /proc/version

 安装测试数据集:

sudo apt-get install rt-tests

 测试效果,如图:

sudo cyclictest -t 5 -p 80 -n

 完事!