我正在尝试在 Raspberry Pi 4B 上安装我自己的自定义实时 Linux。我的状态是这样的:
我构建了 Linux 5.9.1 版本,并拥有自己的 U-Boot 版本、RFS,通过它们我能够成功加载和启动内核、挂载 RFS 以及访问内核控制台。
我需要在我正在构建的 Linux 内核之上应用实时补丁,因此我使用了 Linux 5.9.1 的相应补丁。由于我正在构建 64 位内核,因此我使用以下命令进入内核配置并更新可抢占选项:
make ARCH=arm64 CROSS_COMPILE=aarch64-rpi3-linux-gnu- menuconfig
但我没有看到完全可抢占的内核选项这里:.config - Linux/arm64 5.9.1 内核配置
一般设置──────────────────────────────────────────────── ──────────────────
┌────────────────────── Preemption Model ───────────────────────┐
│ Use the arrow keys to navigate this window or press the │
│ hotkey of the item you wish to select followed by the <SPACE │
│ BAR>. Press <?> for additional information about this │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ ( ) No Forced Preemption (Server) │ │
│ │ ( ) Voluntary Kernel Preemption (Desktop) │ │
│ │ (X) Preemptible Kernel (Low-Latency Desktop) │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └───────────────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────┤
│ <Select> < Help > │
当我跑步时:
make menuconfig
我确实看到了 x86 选项的选项:.config - Linux/x86 5.9.1 内核配置
一般设置──────────────────────────────────────────────── ──────────────────
┌────────────────────── Preemption Model ───────────────────────┐
│ Use the arrow keys to navigate this window or press the │
│ hotkey of the item you wish to select followed by the <SPACE │
│ BAR>. Press <?> for additional information about this │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ ( ) No Forced Preemption (Server) │ │
│ │ ( ) Voluntary Kernel Preemption (Desktop) │ │
│ │ (X) Preemptible Kernel (Low-Latency Desktop) │ │
│ │ ( ) Fully Preemptible Kernel (Real-Time) │ │
│ │ │ │
│ │ │ │
Linux 内核:5.9.1 使用的 Linux RT 补丁:patch-5.9.1-rt19.patch.xz
我也启用了专家模式,按照 unix.stackexchange .config - Linux/x86 5.9.1 Kernel Configuration 中的另一篇文章中的说明进行操作
一般设置──────────────────────────────────────────────── ────────────────── ┌────────────────────────────── 一般设定──────────────────────────────┐ │ 箭头键导航菜单。选择子菜单 ---> (或空 │
│ 子菜单 ----)。突出显示的字母是热键。按包含、│
│ 排除、模块化功能。按退出,<?> │
│ 获取帮助,</> 获取搜索。传奇: [] 内置 [ ] 排除模块 │
│ ┌────^(-)──────────────────────────────── ──────────────────────────────────┐ │
│ │ [] 支持使用 LZMA 压缩的初始 ramdisk/ramfs │ │
│ │ [] 支持使用 XZ 压缩的初始 ramdisk/ramfs │ │
│ │ [] 支持使用 LZO 压缩的初始 ramdisk/ramfs │ │
│ │ [] 支持使用 LZ4 压缩的初始 ramdisk/ramfs │ │
│ │ [] 支持使用 ZSTD 压缩初始 ramdisk/ramfs │ │
│ │ [ ] 启动配置支持 │ │
│ │ 编译器优化级别(性能优化 (-O2)) --│ │
│ │ -- 配置标准内核功能(专家用户) ---> │ │
│ │ -- 启用 membarrier() 系统调用 │ │
│ │ -- 加载所有调试符号/ksymoops │ │
│ │ -- 包含 kallsyms 中的所有符号 │ │
│ │ [] 启用 bpf() 系统调用 │ │
│ │ [ ] 启用 userfaultfd() 系统调用 │ │
│ │ [] 启用 rseq() 系统调用 │ │
│ │ [ ] 启用 rseq() 系统调用的调试 │ │
│ │ [*] 嵌入式系统 │ │
│ │ [ ] PC/104 支持 │ │
│ │ 内核性能事件和计数器 - --> │ │
我发现这个问题在之前为 Linux 5.6.19 发布的 RT 补丁中没有发生。我这边的 64 位机箱是否缺少某些内容?
答案1
我在 Kernel.org 上提出了这个问题,然后得到了回应,显然它就是打算这样做的。
https://lore.kernel.org/linux-rt-users/[电子邮件受保护]/
这基本上意味着当我们使用arm64架构的5.9.1版本时,我们需要禁用KVM,然后立即出现完全抢占式选项。我能够成功地测试它。
答案2
跑步,
make mrproper
现在运行,
make menuconfig
实时选项现在必须可见。