1

我想为 Debian Stretch 创建一个 initramfs 映像,其中包括其他配置文件(比如/etc/a.conf)。

mkinitramfs -o initrd.img为了使图像包含此类文件,我必须在运行之前做什么?

4

2 回答 2

2

用于修改 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

于 2019-01-11T18:51:53.540 回答
2

我选择使用 initramfs 挂钩来执行此操作,以确保(如果我理解正确的话)该更改也将在未来的内核升级中持续存在。钩子采用脚本的形式,/etc/initramfs-tools/hooks/copy_etc如下所示:

#!/bin/sh -e

if [ "$1" = "prereqs" ]; then exit 0; fi
. /usr/share/initramfs-tools/hook-functions

cp /etc/a.conf $DESTDIR/etc/a.conf
于 2019-01-14T13:40:59.517 回答