首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ubuntu20.04上安装PREEMPT_RT内核

在Ubuntu20.04上安装PREEMPT_RT内核
EN

Unix & Linux用户
提问于 2021-05-18 21:23:03
回答 1查看 7.4K关注 0票数 1

我正在尝试为我的ubuntu发行版安装一个PREEMPT_RT内核,因为这是我正在工作的机器人所必需的。但是无论我做什么,在编译内核时都会出现错误。我在问题中包含了错误信息,并提供了完整终端输出的链接。我对linux并不十分满意,因此我一直按照制造商的安装指南执行以下步骤:

代码语言:javascript
运行
复制
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.6.19.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.6/older/patch-5.6.19-rt12.patch.xz

xz -d linux-5.6.19.tar.xz
xz -d patch-5.6.19-rt12.patch.xz

tar xf linux-5.6.19.tar
cd linux-5.6.19
patch -p1 < ../patch-5.6.19-rt12.patch

make oldconfig

在配置中,我只需为抢占模型选择完全抢占内核(PREEMPT_RT_FULL),并将所有其他设置保留在它们的默认设置上。

代码语言:javascript
运行
复制
fakeroot make -j4 deb-pkg

dpkg-buildpackage: error: fakeroot -u debian/规则清除子进程返回的退出状态1使2:*C41 make:* Error 2

全终端输出这里

如果我试着用

代码语言:javascript
运行
复制
sudo make -j4 deb-pkg

make3.:* Error 2 dpkg-buildpackage: error: debian/rules build子进程返回退出状态22:* Error 2 make:* Error 2

全定时输出这里

当这不起作用时,我试着按照问题的答案中给出的步骤

代码语言:javascript
运行
复制
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.6.19.tar.gz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.6/older/patch-5.6.19-rt12.patch.gz
tar xvzf linux-5.6.19.tar.gz
cd linux-5.6.19
gzip -cd ../patch-5.6.19-rt12.patch.gz | patch -p1 --verbose
make menuconfig

补丁menuconfig

代码语言:javascript
运行
复制
make -j4
sudo make modules_install -j4

modules_install -j4 sed:无法读取modules.order:没有这样的文件或目录:*错误2

制作

代码语言:javascript
运行
复制
sudo make modules -j4
sudo make modules_install -j4

当我使用make模块命令时,它编译了很长时间,并成功地终止了,但是当我再次运行modules_install时,我得到了一条错误消息:

cp:无法统计“Modes.builtin”:没有这样的文件或目录:*错误1

我不知道下一步该做什么。我尝试过不同的内核版本和不同的操作系统(Ubuntu18.04和20.04),所有这些都有相同的错误。我得到的指示是如此的清晰和直接,所以我想知道我是做错了什么,还是有一些硬件不兼容或者类似的东西?作为参考,我目前正在运行Ubuntu20.04.02,内核5.8.0-53-泛型,硬件。有人知道什么会导致这个问题吗?

PS:这是我在这个网站上的第一个问题,非常感谢关于问题格式的反馈(信息太少/相关性太小等)。我刚加了终端给我的所有信息,不知道什么是有用的,什么是没用的。

EN

回答 1

Unix & Linux用户

发布于 2021-09-07 22:17:11

我能够在Ubuntu20.04上构建PREEMPT内核,主要基于本指南,如下所示:

代码语言:javascript
运行
复制
sudo apt install build-essential git libssl-dev libelf-dev flex bison

下载该版本的内核源代码和修补程序:

代码语言:javascript
运行
复制
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.143.tar.xz
wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.4/patch-5.4.143-rt64-rc2.patch.xz

解包并应用修补程序:

代码语言:javascript
运行
复制
tar -xf linux-5.4.143.tar.xz
cd linux-5.4.143
xzcat ../patch-5.4.143-rt64-rc2.patch.xz | patch -p1

配置,当请求Preemption模型时,选择Fully可抢占内核。接受其余部分的默认值:

代码语言:javascript
运行
复制
cp /boot/config-5.4.0-81-generic .config
make oldconfig

编辑.config文件并将CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"更改为CONFIG_SYSTEM_TRUSTED_KEYS=""

构建内核:

代码语言:javascript
运行
复制
make -j8 deb-pkg

安装生成的软件包,然后重新启动系统。

代码语言:javascript
运行
复制
sudo dpkg -i ../linux-headers-5.4.143-rt64-rc2_5.4.143-rt64-rc2-1_amd64.deb ../linux-image-5.4.143-rt64-rc2_5.4.143-rt64-rc2-1_amd64.deb ../linux-libc-dev_5.4.143-rt64-rc2-1_amd64.deb

在重新启动之后,您应该能够看到这样的内容:

代码语言:javascript
运行
复制
# uname -a
Linux vod 5.4.143-rt64-rc2 #1 SMP PREEMPT_RT Tue Sep 7 20:19:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

指南建议了几个其他步骤,但我还没有对它们进行测试。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/650320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档