遇到一个问题,使用xz压缩的initramfs,启动kernel过程中失败,使用gzip压缩的initramfs,kernel正常启动。
首先检查是否开启kernel选项CONFIG_INITRAMFS_SOURCE、CONFIG_RD_XZ、CONFIG_INITRAMFS_COMPRESSION_XZ等等,没有问题。
后来google发现,在生成initramfs.cpio.xz时,使用的参数不对。
原本是: cpio -o -Hnewc | xz -c -k --format=lzma > initramfs.cpio.xz
修改为: cpio -o -Hnewc | xz --check=crc32 -c -k --lzma2 > initramfs.cpio.xz
参考:
1. kernel/scripts/gen_initramfs_list.sh
2. https://blog.teatime.com.tw/1/post/423