内核热补丁
内核热补丁 (KLP) 使得无需重启系统即可应用内核补丁。
要使用 KLP,您应该遵循以下步骤
- 运行启用热补丁的内核
- 获取内核的源代码树
- 准备和构建补丁
- 应用补丁
您可以通过运行修改后的内核在 Alpine Linux 中使用内核热补丁。
构建内核
- 获取源代码
- 启用以下标志 CONFIG_LIVEPATCH 和 CONFIG_DEBUG_INFO
- 构建内核:
make
- 安装:
doas make modules_install && doas make install
- 重建 initramfs
- 更新引导加载程序
- 重启:
doas reboot
修补内核
- 安装 kpatch:
doas apk add kpatch
- 准备补丁。您可以创建一个名为 some.patch 的文件,其中包含以下内容(可能需要根据内核版本进行更新)
Index: src/fs/proc/meminfo.c =================================================================== --- src.orig/fs/proc/meminfo.c +++ src/fs/proc/meminfo.c @@ -95,7 +95,7 @@ static int meminfo_proc_show(struct seq_ "Committed_AS: %8lu kB\n" "VmallocTotal: %8lu kB\n" "VmallocUsed: %8lu kB\n" - "VmallocChunk: %8lu kB\n" + "VMALLOCCHUNK: %8lu kB\n" #ifdef CONFIG_MEMORY_FAILURE "HardwareCorrupted: %5lu kB\n" #endif
- 构建补丁:
kpatch-build -s /path/to/kernel/source some.patch
启用补丁
- 启用补丁:
doas insmod kpatch-some.ko
或doas kpatch load kpatch-some.ko
- 检查补丁是否已加载:
grep -i chunk /proc/meminfo
- 禁用补丁:
doas kpatch unload kpatch-some.ko