生成带有其他配置文件的自定义initramfs映像

时间:2019-01-11 16:19:55

标签: debian initrd initramfs

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

在运行mkinitramfs -o initrd.img之前我该怎么做才能使图像包含此类文件?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我选择使用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