![update-initramfs 没有为新内核完全创建 initrd](https://linux22.com/image/203766/update-initramfs%20%E6%B2%A1%E6%9C%89%E4%B8%BA%E6%96%B0%E5%86%85%E6%A0%B8%E5%AE%8C%E5%85%A8%E5%88%9B%E5%BB%BA%20initrd.png)
我在安装新的自定义内核时似乎遇到了奇怪的问题。update-initramfs
失败期间dpkg -i
:
update-initramfs: Generating /boot/initrd.img-5.15.7-hardened1-test1
find: ‘/tmp/user/0/mkinitramfs_gHxWMQ/lib/modules/5.15.7-hardened1-test1/kernel’: No such file or directory
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.7-hardened1-r7
Found initrd image: /boot/initrd.img-5.15.7-hardened1-r7
Found linux image: /boot/vmlinuz-5.15.7-hardened1-test1
Found initrd image: /boot/initrd.img-5.15.7-hardened1-test1
Found linux image: /boot/vmlinuz-5.10.0-10-amd64
Found initrd image: /boot/initrd.img-5.10.0-10-amd64
done
内核r7
构建和安装完全正常,但test1
安装时出现find: ‘/tmp/user/0/mkinitramfs_gHxWMQ/lib/modules/5.15.7-hardened1-test1/kernel’: No such file or directory
错误。 .configs 之间的唯一区别是:
29c29
< CONFIG_LOCALVERSION="-r7"
---
> CONFIG_LOCALVERSION="-test1"
39c39
< CONFIG_KERNEL_GZIP=y
---
> # CONFIG_KERNEL_GZIP is not set
45c45
< # CONFIG_KERNEL_ZSTD is not set
---
> CONFIG_KERNEL_ZSTD=y
787c787
< # CONFIG_MODULE_FORCE_UNLOAD is not set
---
> CONFIG_MODULE_FORCE_UNLOAD=y
802,803c802,803
< CONFIG_MODULE_COMPRESS_XZ=y
< # CONFIG_MODULE_COMPRESS_ZSTD is not set
---
> # CONFIG_MODULE_COMPRESS_XZ is not set
> CONFIG_MODULE_COMPRESS_ZSTD=y
我什至尝试了稍新的内核(5.15.27)和旧的内核(5.10.104),结果相同。initramfs
在无法找到根 LVM 后,尝试引导至内核时,引导会出现提示符(没有 USB 键盘功能)。
对于所做的最小更改,initrd 映像的大小也有很大不同:
9.7M initrd.img-5.15.7-hardened1-r7 (working)
9.1M initrd.img-5.15.7-hardened1-test1 (broke)
对两者进行比较lsinitrd
会产生这样的结果,表明 initrd 确实缺少大量模块。
346,399c346
< 5.15.7-hardened1-r7
< kernel
< crypto
< async_tx
< async_memcpy.ko.xz
< async_pq.ko.xz
< async_raid6_recov.ko.xz
< async_tx.ko.xz
< async_xor.ko.xz
< xor.ko.xz
< drivers
< ata
< ahci.ko.xz
< libahci.ko.xz
< hid
< hid-generic.ko.xz
< hid.ko.xz
< usbhid
< usbhid.ko.xz
< usbkbd.ko.xz
< input
< keyboard
< atkbd.ko.xz
< mouse
< psmouse.ko.xz
< serio
< serio_raw.ko.xz
< md
< dm-bufio.ko.xz
< dm-crypt.ko.xz
< dm-log.ko.xz
< dm-mirror.ko.xz
< dm-raid.ko.xz
< dm-region-hash.ko.xz
< dm-snapshot.ko.xz
< linear.ko.xz
< multipath.ko.xz
< raid0.ko.xz
< raid10.ko.xz
< raid1.ko.xz
< raid456.ko.xz
< vfio
< pci
< vfio-pci-core.ko.xz
< vfio-pci.ko.xz
< vfio_iommu_type1.ko.xz
< vfio.ko.xz
< vfio_virqfd.ko.xz
< lib
< raid6
< raid6_pq.ko.xz
< virt
< lib
< irqbypass.ko.xz
---
> 5.15.7-hardened1-test1
有人以前见过这个吗?我通过谷歌找到了一个结果,但从未提供解决方案。
我正在运行 Devuan Chimaera(Debian 11 基础): initramfs-tools=0.140 & dpkg=1.20.9
答案1
我在内核为 5.16.17 的 Debian 上也遇到同样的问题。禁用模块压缩可以修复问题(您应该设置 CONFIG_MODULE_COMPRESS_NONE=y)。有可能,与 ZSTD 不同的压缩也可以工作,但我没有检查过。