树莓派4B内核打RT-preempt实时补丁的实现

硬件环境:树莓派4B
操作系统:树莓派版Ubuntu server 20.04 LTS(64bit)

1 依赖环境的安装

运行如下命令:

sudo apt update
sudo apt install build-essential libncurses* libssl-dev bison flex

2 下载内核和对应版本的补丁

下载地址如下:

内核下载网址: https://www.kernel.org/pub/linux/kernel
RT补丁下载网址: https://www.kernel.org/pub/linux/kernel/projects/rt/

注意:内核版本和补丁版本要一致

我这里选择的是5.13版的内核和补丁。
在这里插入图片描述

3 将下载的内核和补丁解压

tar -xzvf linux-5.13.tar.gz
gunzip patch-5.13-rt1.patch.gz

4 给内核打补丁

将解压得到的patch-5.13-rt1.patch文件复制到内核解压文件夹linux-5.13中,然后打补丁:

cp patch-5.13-rt1.patch linux-5.13/
patch -p1 < patch-5.13-rt1.patch

5 内核配置

执行make menuconfig

general setup–>Preemption Model(Preemptible kernel)–>

在这里插入图片描述
除此以外,我们还需要执行

vim .config

修改CONFIG_SYSTEM_TRUSTED_KEYS项,将其内容置空。否则内核编译会报错。

6 编译内核

make -j4

7 安装内核

sudo make modules_install -j4
sudo make install -j4

提示错误

在这里插入图片描述
执行如下命令

cd /boot/firmware
sudo cp bcm2711-rpi-4-b.dtb /etc/flash-kernel/dtbs

然后重新回到linux-5.13目录下,重新执行

sudo make install -j4

8 切换内核启动

以上步骤执行完,应该可以在/boot目录下看到vmlinuz-5.13.0-rt1,并且通过ls -al可以看到vmlinuz是指向vmlinuz-5.13.0-rt1的软链接。

在这里插入图片描述
因为在树莓派上是靠U-Boot启动引导的内核。U-Boot默认启动的内核是在/boot/firmware目录下的vmlinuz所指向的内核。所以我们先将/boot/firmware目录下的vmlinuz重命名为vmlinuz.old,并删掉原有vmlinuz

sudo cp vmlinuz vmlinuz.old
sudo rm vmlinuz 

然后把上面/boot目录下的vmlinuz拷贝到/boot/firmware目录下

sudo cp vmlinuz firmware/

最后,执行reboot重启即可。

在重启后的系统执行uname -a查看内核版本,结果如下。可以看到当前系统内核已经切换为新安装的打了实时补丁的内核。

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值