Вы здесь

Ручная правка initrd.img

Иногда хочется сделать в initrd что-то нестандартное, что не предусмотрено стандартным скриптом (mkinitrd, mkinitramfs, dracut и т.п.). В этом случае можно распаковать существующий образ, поправить его руками и снова запаковать. Формат файла - архив cpio сжатый gzip. Единственная тонкость - для cpio надо указывать опцию, задающую внутренний формат архива -H newc

mkdir initrd; cd initrd
gunzip -c /boot/initramfs-2.6.32.158.img | cpio -i --make-directories 
#внесение правок
find . | cpio -o -H newc | gzip > /boot/myinitrd.img

initramfs, как файл, мало отличается от initrd. При создании явно указывается максимальная степень сжатия.

#Упаковка (фрагмент из dracut CentOS 6)
find . |cpio -R root:root -H newc -o --quiet|  $gzip -9 > "$outfile"

В CentOS7 структура файла изменилась. В начало приклеен ещё один маленький несжатый архив cpio "early_initramfs" он же "microcode blob" (необязательный). Программа skipcpio ищет в полученном файле признак конца архива (строку "TRAILER!!!") и выдает хвост. Для сжатия можно использовать различные программы (gzip,bzip2, xz). По умолчанию используется gzip.

#Распаковка:
/usr/lib/dracut/skipcpio /boot/initramfs-3.10.0-957.el7.x86_64.img | zcat | cpio -i  --make-directories 
#Упаковка
find . |cpio -c -o |xz -z -9 -C crc32 -F xz > /boot/myinitrd.img
Яндекс.Метрика