内核热补丁

出自 Alpine Linux

内核热补丁 (KLP) 使得无需重启系统即可应用内核补丁。

要使用 KLP,您应该遵循以下步骤

  • 运行启用热补丁的内核
  • 获取内核的源代码树
  • 准备和构建补丁
  • 应用补丁

您可以通过运行修改后的内核在 Alpine Linux 中使用内核热补丁。

构建内核

  1. 获取源代码
  2. 启用以下标志 CONFIG_LIVEPATCH 和 CONFIG_DEBUG_INFO
  3. 构建内核: make
  4. 安装: doas make modules_install && doas make install
  5. 重建 initramfs
  6. 更新引导加载程序
  7. 重启: doas reboot

修补内核

  1. 安装 kpatch: doas apk add kpatch
  2. 准备补丁。您可以创建一个名为 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
  1. 构建补丁: kpatch-build -s /path/to/kernel/source some.patch

启用补丁

  1. 启用补丁: doas insmod kpatch-some.kodoas kpatch load kpatch-some.ko
  2. 检查补丁是否已加载: grep -i chunk /proc/meminfo
  3. 禁用补丁: doas kpatch unload kpatch-some.ko