Извлечение сценария инициализации из встроенного intrfs в Linux bzImage

У меня следующая проблема - я повредил свою систему ( Gentoo - путем восстановления с помощью gcc 4.5) без возможности восстановления. Я размонтировал /home, скопировал /etc + другие важные файлы и начал переустановку системы.

Однако я забыл скопировать скрипт инициализации. Это все еще присутствует в образе ядра, которое у меня есть. Как извлечь это? Обратите внимание, что initrd не является отдельным файлом, но находится в образе ядра.

1 ответ

Решение

После распаковки:

HDR=`binoffset bzImage 0x1f 0x8b 0x08 0x0`
dd if=bzImage bs=1 skip=$HDR | zcat - > kernel.unpack

(binoffset.c находится в источниках Linux).

strings kernel.unpack | grep 070701

Дает распечатку архива. Сразу после записи для /init в

strings kernel.unpack | less

Является ли содержание скрипта.

Это не идеальное решение, но, по крайней мере, это похоже на работу. Пожалуйста, ответьте, если вы знаете "правильный" путь (для двоичных файлов) легко (не пишите длинную программу) - я не отмечаю это как решение.

Другие вопросы по тегам