我在启动内核 6.0.1 时遇到问题,情况如下:我可以编译内核,但是在执行 update-initramfs -u(用于更新或 -c 用于创建)-k 6.0.1 时,initramfs-tools 脚本:
/usr/share/initramfs-tools/scripts/init-bottom/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-bottom/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/panic/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/init-top/ORDER ignored: not executable
/usr/share/initramfs-tools/scripts/local-premount/ORDER ignored: not executable
但无论如何它还是成功了。Grub 已正确更新。重启后,系统在新内核上正确启动,但出现问题:内核找不到合适的内存目标。所以我认为这是一个 initramfs 问题。之后,我注意到我的新内核映像比旧内核映像大得多:
lrwxrwxrwx 1 root root 16 oct. 15 11:33 initrd.img -> initrd.img-6.0.1
-rw-r--r-- 1 root root 61M sept. 15 18:25 initrd.img-5.15.0-46-generic
-rw-r--r-- 1 root root 61M sept. 15 18:24 initrd.img-5.15.0-47-generic
-rw-r--r-- 1 root root 61M sept. 29 18:52 initrd.img-5.15.0-48-generic
-rw-r--r-- 1 root root 61M oct. 12 21:21 initrd.img-5.15.0-50-generic
-rw-r--r-- 1 root root 482M oct. 16 15:06 initrd.img-6.0.1
所以我用以下方法减少了它:
root@laptop:/lib/modules/6.0.1# find . -name *.ko -exec strip --strip-unneeded {} *
镜像大小与其他版本的镜像类似,并制作了 update-initramfs。之后,不再有内存问题,内核运行,但无法加载模块,并进入救援模式。如果我理解正确的话,loading-module.service 无法启动,由于某些权限原因而失败。
如果有人曾经遇到过同样的问题,或者有解决该问题的想法,我将不胜感激。谢谢
答案1
非常感谢您的回复。原来是锁定内核参数的问题(使用 make menuconfig 配置时),我将其设置为完整性模式,以提高安全性。但似乎该参数不允许内核对模块进行充电!听起来很奇怪,但我关闭了锁定内核,重新编译并重新安装它,现在它可以正常工作了。这个安全参数太糟糕了。
# uname -r
6.0.1
@Artur Meinild,@Doug Smythies:再次感谢您的帮助,我也探讨了您的建议。