Pylone Blog
initramfs作成支援スクリプト
About
Linux起動時にinitramfsを使用するためには、 以下のいずれかを用意する必要があります。
- 所定の形式のcpioアーカイブ
- 展開済みのディレクトリ
- usr/gen_init_cpio 用の設定スクリプト
このうち「usr/gen_init_cpio用の設定スクリプト」を使えると、ユーザ権限で作業ができるため、作業環境の扱いが簡単になります。
しかし、きちんと(間接的に必要となるライブラリ等まで考慮して)スクリプトを記述するのはそれなりの手間がかかり、使いこなすには経験が必要でした。
この作業の支援用として、実行可能ファイルに必要なライブラリ等の情報を抽出して設定スクリプトの雛形を生成するツールを公開します。
使いかた
ダウンロード
以下のリンク先から取得してください:
gen_init_cpio_conf.py実行には python および binutils が必要です。
前準備
適当なディレクトリ以下に、initramfsに含めたいファイルを全て展開します。この段階では不要なファイルが含まれていても構わないので、手順としては
- 関連するパッケージを dpkg -x で展開
- その他のファイルをコピー
などとすればよいでしょう。
設定ファイル作成
最終的にinitramfsに含めたいファイルのリストを用意します。
例)FOO.def として
/bin/busybox /bin/brcrl
誤認識されないなら、パスのディレクトリ部分(/usr/bin)は省略することができます。
busybox brctl
スクリプトの実行
本スクリプトを「-l」 オプションにファイルリスト、続けて作業用の(ファイル一式を展開しておいた)ディレクトリのフルパスを指定して実行すると 、initramfs用の設定内容が作成されます。
$ gen_init_cpip_conf.py -l FOO.def /path/to/work/dir > initramfs_script
作業用ディレクトリには、Linuxカーネル構築時に正しく参照が解決できるなら、相対パスを使用することもできます。
可視化
例えば、busybox, Xサーバ, matchbox について、実行に必要なライブラリとシンボリックリンクの関係は以下のようになりました。