小编Emi*_*azo的帖子

将文件附加到 initramfs 映像 - 可靠吗?

我正在修改initramfs来自不同 Linux 发行版的一堆档案,其中通常只更改一个文件。

我想在不切换到 root 用户的情况下自动执行该过程以提取initramfs图像中的所有文件并再次打包它们。

首先,我尝试在gen_init_cpio 提取initramfs存档中的所有内容的情况下生成文件列表,即通过脚本解析cpio -tvn initrd.img(如ls -l输出)的输出,该脚本将所有权限更改为八进制并将输出排列为所需的格式gen_init_cpio,例如:

dir /dev 755 0 0
nod /dev/console 644 0 0 c 5 1
slink /bin/sh busybox 777 0 0
file /bin/busybox initramfs/busybox 755 0 0
Run Code Online (Sandbox Code Playgroud)

这涉及一些替换,脚本可能很难为我编写,所以我找到了一个更好的方法,我在问它的​​安全性和便携性如何:

在某些发行版中,我们有一个initramfs包含连接部分的文件,显然内核会解析整个文件,提取打包在 1 字节边界中的所有部分,因此无需将每个部分填充为 512 字节的倍数。我认为这个“功能”对我来说很有用,可以避免在修改其中的文件时重新创建存档。确实它有效,至少对于DebianCloneZilla

例如,如果我们/initinitrd.gzDebian 8.2.0上修改了文件,我们可以将其附加到initrd.gz图像中:

$ echo ./init | cpio -H newc -o …
Run Code Online (Sandbox Code Playgroud)

boot kernel initramfs cpio

8
推荐指数
1
解决办法
6884
查看次数

标签 统计

boot ×1

cpio ×1

initramfs ×1

kernel ×1