4

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

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

1 ответ1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .