![151d535b55bd11d5db42204edacfd9d7.png](https://img-blog.csdnimg.cn/img_convert/151d535b55bd11d5db42204edacfd9d7.png)
前言:
本文主要目的用于记录在UPboard编译实时内核过程,用以方便以后查看,需要的小伙伴也可以参考。
第一步 安装依赖:
sudo apt-get install build-essential bc curl ca-certificates fakeroot gnupg2 libssl-dev lsb-release libelf-dev bison flex
第二步 去如下网址根据系统自己内核下载自己系统对应版本(使用:uname -r 或者uname -a)
Index of /pub/linux/kernel/projects/rt/www.kernel.org![dc6f8df81eeb6be69ec337ca8142b05b.png](https://img-blog.csdnimg.cn/img_convert/dc6f8df81eeb6be69ec337ca8142b05b.png)
比如这里我的系统是4.13.13 所以我使用如下命令进行下载:
curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.13.13.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.13.13.tar.sign
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.13/older/patch-4.13.13-rt5.patch.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.13/older/patch-4.13.13-rt5.patch.sign
第三步 解压编译内核
注意如果解压命令报错,说明下载错版本或者上述URL写错,请检查一下。
xz -d linux-4.13.13.tar.xz
xz -d patch-4.13.13-rt5.patch.xz
tar xf linux-4.13.13.tar
cd linux-4.13.13
patch -p1 < ../patch-4.13.13-rt5.patch
第四步 配置内核
make oldconfig
注意这里我们只需要选择第五项即可,输入数字5,后面全部enter即可。
Preemption Model
1. No Forced Preemption (Server) (PREEMPT_NONE)
2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT__LL) (NEW)
4. Preemptible Kernel (Basic RT) (PREEMPT_RTB) (NEW)
5. Fully Preemptible Kernel (RT) (PREEMPT_RT_FULL) (NEW)
第五步 正式开始编译
这里可以根据自己的系统CPU核数选择对应的多线程数,这里有两个坑,编译内核所在位置一定要有超过30G,不然会内存不足,或者直接在一块空白移动硬盘上编译,这样保证成功性。
fakeroot make -j4 deb-pkg
这是一个非常漫长的过程,尤其是在Upboard上,需要大概四五个小时。
第六步 编译完毕后安装
编译完毕后会在编译路径的上一层路径生成一系列deb包,这个时候直接用下面命令全部安装
sudo dpkg -i *.deb
然后重启进行选择刚刚安装的rt5实时内核
第七步 验证
方式一:
uname -a ->会看到刚刚选择的内核
方式二:
cat /sys/kernel/realtime ->存在并且包含数字1
第八步 设置grub 默认内核启动
sudo vim /etc/default/grub
修改GRUB_DEFAULT=0 -> GRUB_DEFAULT="1>4"
第一个1 代表的是grub选择第二项 advanced options 第二个4 表示我们选择内核第四项,都是从0开始
这里如果不知道想选哪个内核编号可以使用如下命令进行查看:
cat /boot/grub/grub.cfg |grep menuentry
然后输入如下升级
sudo update-grub
如果没报错即可重启查看
最后 可能遇到问题和后续?
问题一,可能进不了grub?
答:这个时候直接注释/etc/default/grub 中的GRUB_HIDDEN_TIMEOUT=0,update-grub即可。
问题二,编译完毕后需要删除清除减小存储使用如下命令?
make mrproper
有一部分命令和图片没有更新,后续会更新进入这篇文档,欢迎大家交流学习。