Создать собственный образ initramfs с дополнительными файлами конфигурации - PullRequest
0 голосов
/ 11 января 2019

Я хотел бы создать образ initramfs для Debian Stretch, который включает в себя дополнительные файлы конфигурации (скажем, /etc/a.conf).

Что мне нужно сделать перед запуском mkinitramfs -o initrd.img, чтобы изображение включало такие файлы?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я решил сделать это с помощью ловушки 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
0 голосов
/ 11 января 2019

Инструмент для изменения initrd / initramfs называется cpio . Вы можете найти множество учебников по этому вопросу в Интернете, теперь, когда вы знаете, что искать. Вот быстрый пример:

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 является то, что вы можете просто добавлять к ним, а более поздние файлы перезаписывают более ранние файлы - вероятно, из-за их наследства в качестве файловой системы для архивирования на магнитной ленте. Поэтому, если вы не хотите, чтобы на самом деле распаковывался весь архив (тем более, что для создания путей, подобных /proc, может потребоваться root), вы можете просто добавить в него свои файлы настроек. Смотри:

https://wiki.debian.org/DebianInstaller/NetbootFirmware#Example_.231:_add_debs_from_firmware.cpio.gz

...