web-dev-qa-db-ja.com

bult-intrfsからLinuxbzImageへのinitスクリプトの抽出

次の問題があります-システムを損傷しました( Gentoogcc 4.5 を使用して再構築することにより)修復できません。/homeをアンマウントし、/ etc +その他の重要なファイルをコピーして、システムの再インストールを開始しました。

しかし、initスクリプトをコピーするのを忘れました。それは私が持っているカーネルイメージにまだ存在しています。それを抽出する方法は? initrdは個別のファイルではなく、カーネルイメージにあることに注意してください。

4

開梱後:

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

スクリプトの内容です。

これは完璧な解決策ではありませんが、少なくともうまくいくようです。 (バイナリの)簡単な(長いプログラムを書かない)「正しい」方法を知っているなら答えてください-私はそれを解決策としてマークしていません。

1