我正在尝试解压 initrd 图像:
# file /boot/initrd.img-4.11.0-14-generic
/boot/initrd.img-4.11.0-14-generic: ASCII cpio archive (SVR4 with no CRC)
# mkdir /tmp/initrd; cd /tmp/initrd
# cpio -i -d -H newc --no-absolute-filenames -F /boot/initrd.img-4.11.0-14-generic
194 blocks
# ls -R
.:
kernel
./kernel:
x86
./kernel/x86:
microcode
./kernel/x86/microcode:
GenuineIntel.bin
Run Code Online (Sandbox Code Playgroud)
所以cpio 只提取./kernel存档的子目录。但在其中lsinitramfs显示更多文件:
# lsinitramfs /boot/initrd.img-4.11.0-14-generic
/boot/initrd.img-4.11.0-14-generic
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
.
lib
lib/libnss_files.so.2
lib/cryptsetup
...
bin/egrep
init
run
Run Code Online (Sandbox Code Playgroud)
如何获取所有存档内容?
小智 6
当您安装了 intel-microcode(已安装)和/或 amd64-microcode 时,initrd 由两个连接的图像组成。第一个图像只包含微码。第二个包含其他所有内容。您的 cpio 命令只提取第一个。
最简单的方法是使用unmkinitramfsinitramfs-tools >= 0.126,它包含在 Ubuntu 18.04(仿生)和更新版本中。在 xenial 上,您可以克隆https://salsa.debian.org/kernel-team/initramfs-tools并unmkinitramfs从此目录调用。
| 归档时间: |
|
| 查看次数: |
3147 次 |
| 最近记录: |