在 Ubuntu 20.04 上安装 PREEMPT_RT 内核

在 Ubuntu 20.04 上安装 PREEMPT_RT 内核

我正在尝试为我的 ubuntu 发行版安装 PREEMPT_RT 内核,因为这是我正在开发的机器人的要求。但无论我做什么,编译内核时都会出错。我已在问题中包含错误消息,并且提供了完整终端输出的链接。我对 Linux 不太熟悉,所以我一直遵循制造商的设置指南,步骤如下:

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

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

fakeroot make -j4 deb-pkg

dpkg-buildpackage:错误:fakeroot -u debian/rules clean 子进程返回退出状态 1 make2: *** [scripts/Makefile.package:77: deb-pkg] 错误 1 ​​make: *** [Makefile:1429: deb-pkg] 错误 2

全端子输出这里

如果我尝试使用

sudo make -j4 deb-pkg

制作3: *** [debian/rules:6: build] 错误 2 dpkg-buildpackage: 错误: debian/rules 构建子进程返回退出状态 2 make2: *** [scripts/Makefile.package:77: deb-pkg] 错误 2 make: *** [Makefile:1429: deb-pkg] 错误 2

所有端子输出这里

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

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

修补,菜单配置

make -j4
sudo make modules_install -j4

sudo make module_install -j4 sed:无法读取模块。顺序:没有这样的文件或目录 make:*** [Makefile:1316:现代] 错误2

制作

sudo make modules -j4
sudo make modules_install -j4

当我使用 makemodules 命令时,它会编译很长时间并成功终止,但是当我再次运行modules_install时,我收到一条错误消息:

cp: 无法 stat 'modules.builtin': 没有这样的文件或目录 make: *** [Makefile:1317:现代] 错误1

我不知道下一步该尝试什么。我尝试了不同的内核版本和不同的操作系统(Ubuntu 18.04 和 20.04),并且在所有这些版本中都遇到相同的错误。我得到的说明似乎如此清晰和直接,所以我想知道我是否做错了什么,或者是否存在某些硬件不兼容或类似性质的问题?作为参考,我当前运行的是 Ubuntu 20.04.02,内核 5.8.0-53-generic,硬件。有谁知道可能导致此问题的原因吗?

PS:这是我在这个网站上的第一个问题,对问题格式的反馈表示赞赏(信息太多/太少/相关性等)我刚刚添加了终端给我的所有信息,不确定什么有用或没用

答案1

我能够在 Ubuntu 20.04 上构建 PREEMPT-RT 内核主要基于本指南如下:

sudo apt install build-essential git libssl-dev libelf-dev flex bison

下载该版本的内核源代码和补丁:

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

解压并应用补丁:

tar -xf linux-5.4.143.tar.xz
cd linux-5.4.143
xzcat ../patch-5.4.143-rt64-rc2.patch.xz | patch -p1

配置,并在要求时抢占模型选择完全抢占式内核。其余部分接受默认值:

cp /boot/config-5.4.0-81-generic .config
make oldconfig

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

构建内核:

make -j8 deb-pkg

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

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

重启后你应该能够看到类似这样的内容:

# 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

指导建议其他一些步骤,但我尚未测试它们。

相关内容