У меня есть следующая проблема - я повредил свою систему (хинду - путем восстановления использования gcc 4.5) вне восстановления. Я размонтировал / домой, скопировал / и т.д. + другие важные файлы, и я начал переустанавливать систему.
Однако я забыл копировать init сценарий. Это все еще присутствует в изображении ядра, которое я имею. Как извлечь его? Обратите внимание на то, что initrd не является отдельным файлом, но находится в изображении ядра.
После распаковки:
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
Содержание сценария.
Это не идеальное решение, но по крайней мере это, кажется, работает. Ответьте, знаете ли Вы 'корректный' путь (для двоичных файлов) легкий (не запись длинной программы) - я не отмечаю его как решение.