我正在尝试更新用于重新管理 20.04 的 Ubuntu 18.04 安装映像的进程,并在提取 initrd 存档时遇到问题。使用的命令是cpio -id --no-absolute-filenames
. 当我使用相同的命令从 20.04 映像中提取 initrd 映像时,它会提取kernel/x86/microcode/AuthenticAMD.bin
并停止。
检查 initrd 文件内容,我可以看到一个“TRAILER”部分,显示文件中有多个存档。正如关于 cpio 档案的其他线程中所建议的那样,我试图提取复合档案:cat initrd | while cpio -id --no-absolute-filenames; do :; done
. 在这种情况下,第一个条目提取但随后它有一堆“0 块”并且不提取任何其他内容。
有谁知道这个档案是如何创建的或如何提取它?
/usr/sbin/update-initramfs 调用 /usr/sbin/mkinitramfs,它调用
lz4 来自 /etc/initramfs-tools/initramfs.conf
将其反转为
虽然失败了。
一直坚持它是一个 cpio 存档,但是
仍然在同一个 AuthenticAMD.bin 中结束。也许其他人可以以此为基础?
编辑:不。根据https://unix.stackexchange.com/a/511224/44864 的答案是
同样的问题 - 解决方案是不使用 unmkinitramfs 与 Ubuntu 版本 20.04 解包。
我创建了一个可启动的 USB 并将我的机器启动到 Ubuntu 20 中——然后 unmkinitramfs 能够解压缩 initrd。我仍在寻找构建不自动登录的新可引导 USB 的方法(并且可以与 casper-rw 一起正常工作)。
如果您想了解更多关于 unmkinitramfs 的功能,它是一个 bash 脚本。在 Bionic 和 Focal 之间的比较中,Bionic 不支持 lz4 压缩。
我目前正在创建基于 Ubuntu 20.04 live CD 的自定义 live CD。一切都很好,直到我尝试修改 initrd。我的意思是位于 iso 的 casper 目录中的 initrd。
据我所知,构建 live cd 的标准方法是首先。
将iso提取到单独的目录中
在单独的目录中提取 squashfs 文件系统
在 squashfs 目录上创建 chroot 之前挂载 proc sys dev ..
# 在 squahfs 目录上创建一个 chroot
您可以根据需要开始修改 squashfs 文件系统。
# 进行修改
在离开你的 chroot 之前
# 执行 update-initramfs (update-initramfs -k all -u)
重建 squashfs 映像
复制到iso目录
重建 iso 映像。
我注意到一件事,update-initramfs 不会修改 initrd。
就我而言,我正在改变普利茅斯主题。
mkdir temp;cd temp unmkinitramfs ../initrd . # (casper) mkinitramfs . -o ../initrd.new
对我来说,这应该创建一个与原始大小相同的 initrd.new。
但事实并非如此!新的更大
否则,我尝试了另一种方法-----------
做
binwalk initrd .. 3492528 0x354AB0 ASCII cpio 存档(无 CRC 的 SVR4),文件名:“TRAILER!!!”,文件名长度:“0x0000000B”,文件大小:“0x00000000” 3492864 0x354C00 LZ4 压缩数据,遗留
就在 TRAILER 行之后(获取 lz4 尺寸,此处为 3492864)
dd if=../initrd bs=3492864 跳过=1 | unlz4 -c | cpio -id
现在重建initrd
查找 | cpio -H newc -o | lz4 -c > ../initrd.partial.lz4
最后通过以下方式连接微码文件和新的 initrd (initrd.partial.lz)
计数是块大小除以 512
dd if=../initrd of=../initrd.microcode bs=512 count=6822
重建新的initrd
猫 ../initrd.microcode ../initrd.partial.lz4 > ../initrd.new
#------------------------------------------------ --------
他们没有相同大小的eather!
看起来像这样的焦点,initrd 格式发生了某种变化。确定 lz4 压缩已添加到焦点,但还有其他内容,但没有记录....