我在 X86_64 主机上运行 Ubuntu 20.04 VM。VM 安装了 Ubuntu 20.04,内核为 5.4.0-113,其 initrd 在 /boot/ 中大约 81MB。然后我下载了内核 5.4.174 的源代码,编译内核并安装它。
我将 config-5.4.0-113 作为 .config 复制到 kernel-5.4.174,然后运行 make -j4 && make module -j4 && INSTALL_MOD_STRIP=1 make modules_install -j4 && make install -j4
然后我在运行 update-initramfs 时遇到了一个问题,如下所示,
update-initramfs: Generating /boot/initrd.img-5.4.174
Error 24 : Write error : cannot write compressed block
E: mkinitramfs failure cpio 141 lz4 -9 -l 24
update-initramfs: failed for /boot/initrd.img-5.4.174 with 1.
我在 google 上搜索了这个错误,但是没有找到合适的解决方案。然后,我检查了 /boot/ 下的文件,让我吃惊的是,initrd.img-5.4.174 比 initrd.img-5.4.0-113.generic 大得多,如下所示,
ubt2004:~/test/user$ ls -l /boot/initrd.img*
-rw-r--r-- 1 root root 84405648 Jun 13 03:15 /boot/initrd.img-5.4.0-113-generic
-rw-r--r-- 1 root root 962872584 Jun 8 06:12 /boot/initrd.img-5.4.174
我不确定这是否正常,或者这是 update-initramfs 错误造成的。如果这是个问题,我该如何修复它?
答案1
我终于搞明白了。问题出在问题中列出的 make modules_install 命令上。
它是错误的,应该改为make INSTALL_MOD_STRIP=1 modules_install -j4
。
通过此更改,模块在安装过程中被剥离,这可以节省大量磁盘空间。因此生成的 initrd.img-5.4.174 几乎与公共版本的 initrd 大小相同。