我想在我的树莓派CM4上实时应用。 我当前的内核版本是 6.1.19,这个版本可用于应用 PREEMPT_RT,还是我应该构建一个新内核来应用 PREEMPT_RT?执行上述选项的步骤是什么?
谢谢你。
首先,在CM4上安装RaspiOS。然后在您的 PC 上执行此操作(此方法需要您在 PC 上构建、交叉编译 RT 内核,然后部署到 CM4):
$ sudo dnf install gcc-aarch64-linux-gnu gcc-c++-aarch64-linux-gnu
$ mkdir -p ~/repos/rpi-cm4
$ cd ~/repos/rpi-cm4
$ mkdir -p rt-kernel/boot/firmware
##克隆存储库(检查最新分支);这将创建一个新的子目录“linux”
$ git clone --depth 1 --branch rpi-6.6.y https://github.com/raspberrypi/linux
$ wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/6.6/patch-6.6.23-rt28.patch.xz
--- 如果 wget 命令抛出建立 SSL 连接的错误,只需使用浏览器下载补丁并手动将其复制到 ~/repos/rpi-cm4/ 即可。
$ xz -d patch-6.6.23-rt28.patch.xz
$ cd linux
$ patch -p1 < ~/repos/rpi-cm4/patch-6.6.23-rt28.patch.xz
$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-linux-gnu-
$ export INSTALL_MOD_PATH=~/repos/rpi-cm4/rt-kernel
$ export INSTALL_DTBS_PATH=~/repos/rpi-cm4/rt-kernel
$ KERNEL=kernel8
$ make bcm2711_defconfig
$ make menuconfig
In menuconfig:
A) Uncheck “Virtualization” in the main menu
B) Select “General setup —>”
C) Toggle/Enable Configure standard kernel features (expert users)
C) Select “Fully Preemptible Kernel (Real-Time”
D) Go up a level to “General setup —>”
E) Select “Timers subsystem –>”
F) Uncheck “Old Idle dynticks config”.
G) Select “Timer tick handling (Idle dynticks system (tickles idle)) —>”
H) Check “Periodic timer ticks (constant rate, no dynticks)”
I) Save and Exit
## Compile the new kernel (-jX; change X to num parallel jobs desired)
$ make -j4 Image.gz modules dtbs
## Install modules and dtbs to INSTALL_MOD_PATH and DTBS_MOD_PATH
$ make modules_install
$ make dtbs_install
## Copy the new kernel to the target directory under boot/firmware
## as kernel8.img. Create sym-link to it under boot/.
$ cp arch/arm64/boot/Image ../rt-kernel/boot/firmware/kernel8.img
$ cd ../rt-kernel/boot
$ ln -s firmware/kernel8.img
## Make compressed archive of the target directory and transfer to CM4
$ cd ..
$ tar czf ../rt-kernel.tgz *
$ cd ..
$ rsync rt-kernel.tgz <user>@<ip>:
### The following steps performed on the CM4 as normal non-root user ###
### sudo privileges required.
## Assuming rt-kernel.tgz resides top-level of user's home directory ##
## go to top-level of home-dir
$ cd
# Create tmp directory and move rt-kernel.tgz into tmp/
$ mdkir tmp
$ mv rt-kernel.tgz tmp/
$ cd tmp
$ tar xzf rt-kernel.tgz
# Using sudo, copy new kernel files to appropriate destinations
$ sudo cp -rd boot/* /boot/
$ sudo cp -rd broadcom/bcm* /boot/
$ sudo cp -rd lib/* /lib/
$ sudo cp -rd overlays/* /boot/overlays/
重新启动 CM4。