使用附加配置文件生成自定义 initramfs 映像
Generate custom initramfs image with additional configuration files
我想为 Debian Stretch 创建一个 initramfs 映像,其中包含额外的配置文件(比如 /etc/a.conf
)。
在 运行 mkinitramfs -o initrd.img
之前我需要做什么才能使图像包含此类文件?
您要修改 initrd/initramfs 的工具称为 cpio。现在您知道要寻找什么了,您可以在 Internet 上找到大量关于此的教程。这是一个简单的例子:
mkdir initrd-tmp
cd initrd-tmp
lzma -dc -S .lz /mnt/casper/initrd.lz | cpio -id
然后完成后:
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ~/new-initrd.lz
来源:https://wiki.ubuntu.com/CustomizeLiveInitrd
请注意,cpio 存档的一个有趣 属性 是您可以简单地附加到它们,以后的文件会覆盖较早的文件 — 可能是由于它们作为磁带存档的文件系统的传统。因此,如果您不想实际解压整个存档的麻烦(特别是因为它可能需要 root 来创建像 /proc
这样的路径),您可以简单地将您的自定义文件附加到它。参见:
https://wiki.debian.org/DebianInstaller/NetbootFirmware#Example_.231:_add_debs_from_firmware.cpio.gz
我选择使用 initramfs 挂钩来执行此操作,以确保(如果我理解正确的话)更改也将在未来的内核升级中持续存在。钩子采用脚本形式 /etc/initramfs-tools/hooks/copy_etc
如下:
#!/bin/sh -e
if [ "" = "prereqs" ]; then exit 0; fi
. /usr/share/initramfs-tools/hook-functions
cp /etc/a.conf $DESTDIR/etc/a.conf
我想为 Debian Stretch 创建一个 initramfs 映像,其中包含额外的配置文件(比如 /etc/a.conf
)。
在 运行 mkinitramfs -o initrd.img
之前我需要做什么才能使图像包含此类文件?
您要修改 initrd/initramfs 的工具称为 cpio。现在您知道要寻找什么了,您可以在 Internet 上找到大量关于此的教程。这是一个简单的例子:
mkdir initrd-tmp
cd initrd-tmp
lzma -dc -S .lz /mnt/casper/initrd.lz | cpio -id
然后完成后:
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ~/new-initrd.lz
来源:https://wiki.ubuntu.com/CustomizeLiveInitrd
请注意,cpio 存档的一个有趣 属性 是您可以简单地附加到它们,以后的文件会覆盖较早的文件 — 可能是由于它们作为磁带存档的文件系统的传统。因此,如果您不想实际解压整个存档的麻烦(特别是因为它可能需要 root 来创建像 /proc
这样的路径),您可以简单地将您的自定义文件附加到它。参见:
https://wiki.debian.org/DebianInstaller/NetbootFirmware#Example_.231:_add_debs_from_firmware.cpio.gz
我选择使用 initramfs 挂钩来执行此操作,以确保(如果我理解正确的话)更改也将在未来的内核升级中持续存在。钩子采用脚本形式 /etc/initramfs-tools/hooks/copy_etc
如下:
#!/bin/sh -e
if [ "" = "prereqs" ]; then exit 0; fi
. /usr/share/initramfs-tools/hook-functions
cp /etc/a.conf $DESTDIR/etc/a.conf