Создать собственный образ initramfs с дополнительными файлами конфигурации
Я хотел бы создать образ initramfs для Debian Stretch, который включает в себя дополнительные файлы конфигурации (скажем, /etc/a.conf
).
Что я должен сделать перед запуском mkinitramfs -o initrd.img
чтобы изображение включало такие файлы?
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
Инструмент, который вы хотите для изменения 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 является то, что вы можете просто добавлять к ним, а более поздние файлы перезаписывают более ранние файлы - возможно, из-за их наследства в качестве файловой системы для архивирования на магнитной ленте. Поэтому, если вы не хотите, чтобы на самом деле распаковывался весь архив (тем более, что для создания таких путей может потребоваться root) /proc
), вы можете просто добавить свои файлы настроек к нему. Увидеть: