内核模块的系统管理

ReliefNT 的可加载模块采用 Linux 风格的 Kconfig、Kbuild、ELF .ko 和 模块管理命令。模块必须针对正在使用的 ReliefNT 内核重新编译;这不表示 Linux 原版二进制模块或其全部内核内部 API 可直接使用。POSIX 不定义 内核模块格式,用户态系统调用遵循已实现的 Linux x86_64 ABI。

构建配置

从 ReliefOS 根目录执行:

mkdir -p out/tmp
export TMPDIR="$PWD/out/tmp"
make O=out/modules defconfig
make O=out/modules kernel-menuconfig
make O=out/modules -j8 image-vmdk iso installer

defconfig 明确重置 OS 和对应内核的配置,默认生产组件均为内置 y。 在内核菜单中可将有独立生命周期的部件改为 m;调度、内存、模块加载器 和 VFS 等启动核心保持内置。kernel-allmodconfig 将可模块化部件选为 m; kernel-olddefconfig 同步已有内核配置。普通构建不会把 m 偷改回 y。 关闭 CONFIG_MODULES 时仍可生成全内置系统。

模块与 initramfs 消费内核实际 install manifest。镜像打包检查根控制器、 根文件系统及其依赖闭包,拒绝缺失必需功能、模块错 ABI 或成对载荷不一致, 不会为让构建成功而静默修改配置。产物位置沿用 从源码构建。

启动与自动加载

GRUB 同时加载内核和薄 newc initramfs。/init 挂载 proc/sys/dev,使用 真实 BusyBox modprobe 加载根控制器和文件系统,再根据 root= 挂载真实根 并 switch_root。Live/Installer 的大根镜像是独立的内存块设备,不能替代 initramfs。普通 OpenRC 模块服务先于音频、网络和 Xorg;PCI 设备通过 sysfs modalias 选择模块,平台模块来自当前内核版本的生成清单。

管理员可使用 /etc/modules-load.d/*.conf 和 /etc/modprobe.d/*.conf。 同名配置的覆盖、屏蔽、blacklist 和参数由实际模块工具与加载策略处理。 不要把旧内核版本的生成平台清单复制成所有版本共享的静态配置。

查询与装卸

在目标 ReliefOS 系统内执行:

uname -r
lsmod
modinfo module_name
sudo modprobe module_name
sudo modprobe -r module_name

模块安装在 /lib/modules/<uname -r>/。modprobe 读取目标兼容 depmod 生成的依赖、别名和内置数据库;内置模块的 modprobe 是有效的空操作。 修改内核模块需要内核检查的 CAP_SYS_MODULE,仅在 UI 中获得管理员 身份不能绕过该检查。错误版本、未解析符号和损坏 ELF 必须明确失败。

活跃挂载、打开的设备、用户映射、IRQ、DMA 和在途回调会保留模块 owner。 卸载忙碌的根磁盘、文件系统、DRM 或 PCM 实现被拒绝属于正常行为。 不能为了让卸载命令返回成功而释放仍在使用的代码。

更新与恢复

签名内核包及 RPR 的完整事务见 软件包与证书。A/B 选择记录绑定完整 模块 ABI、内核 SHA-256 和 initramfs SHA-256;版本目录还包含成对清单。 首次安装的残缺零分配或同一候选版本记录可重试,不明旧记录不会被覆盖。

故障模型包括任一步写入/同步失败、未同步数据或目录条目丢失,以及非当前 选择记录撕裂。同步成功的数据被设备丢弃、任意 FAT 元数据损坏,以及更新 MBR/EFI 固件加载器本体,超出日常内核包 A/B 发布的保证范围。 QEMU、VMware 和真实硬件的运行证据分别记录,不能互相替代。

固件选择器的回归测试使用独立、无可执行内核的 ISO,在真实 BIOS 和 UEFI GRUB 中检查摘要参数、成对载荷和回退选择:

TMPDIR="$PWD/out/tmp" python3 tools/test_kernel_slots_qemu.py \
    --stage out/x86_64/release --output out/grub-slot-check

先在同一 --stage 构建 grub-host grub-efi,输出目录必须尚不存在。 GRUB 的本地补丁为上游 hashsum 增加单文件 --expected 比对;选择器 独立验证内核和 initramfs 的实际字节,避免把缺项校验清单当作载荷验证。 升级内核包不替换固件加载器;更新此选择器时,必须同时安装同版 BIOS/EFI GRUB 模块,不能仅复制新的配置文件到旧版 GRUB。

内核内部机制、模块开发和构建 SDK 由 ReliefNT 手册持有;本页只说明 ReliefOS 配置、包管理及启动策略。