玩式草子─ソフトウェアとたわむれる日々

第12回 P-Plamoのカスタマイズ[その2]

この記事を読むのに必要な時間:およそ 6 分

P-Plamoでは,Plamo Linuxの標準的な環境を元にパッケージを選定していますが,contrib以下のパッケージを追加したい場合や不要なパッケージを削除してよりコンパクトにしたい場合もあるでしょう。今回はそのようなパッケージレベルでのカスタマイズ方法について紹介しましょう。

前回までに紹介したように,P-Plamoでは通常のPlamo Linuxの環境を書き込み不可なsquashfsファイルとして用意しておき,その上にaufsのレイヤを被せて読み書き可能なルートファイルシステムを構成しています。

squashfsは,多数のファイルが存在するファイルシステムを高い圧縮率で一つのファイルに畳み込む便利な機能ですが,圧縮率が高い分,圧縮処理には時間がかかるため,あまり頻繁には作り直せません。

そのため現在のP-Plamoでは,小規模な変更はsquashfsではなくinitrd上に用意して,システム起動時のinitスクリプトで必要なファイルの入れ替えを行うようにしていますが,この方法の場合,tmpfs経由でメモリ上に割りあてたaufs上に修正すべきファイルをコピーするので,修正ファイルが増えればそれだけ使用可能なメモリが減ってしまうため,パッケージ更新のような大規模な修正には適しません。

一方,squashfsレベルでの修正は,作成にこそ時間はかかるものの,作成されたsquashfsファイルは必要に応じて読み出されるので,メモリを圧迫することはありません。修正の規模や内容に応じて,この2つの方法を使い分けるのがP-Plamoのカスタマイズのポイントでしょう。

squashfsファイルの展開

squashfsは書き込みや変更ができないファイルシステムなので,修正するためにはいったんHDD上に展開して,必要な変更を加えた上で再生成する必要があります。このための作業にはHDD上に10GB程度の領域と,squashfsを作成するためのツールmksquashfsが必要です。このツールはPlamo-4.72に含まれているので,以下では前回作成したUSBメモリ版のP-PlamoをPlamo-4.72上で改造する手順を紹介しましょう。

USBメモリの場合,修正したいファイルを置き替えるだけで改造は終了しますが,DVDメディアの場合はsquashfsファイル等を置き替えてからISO9660形式のイメージファイルを再生成する必要があります。そのための手順については最後に述べます。

以下ではUSBメモリは/dev/sdb1と認識されて/media/disk/にマウントされており,squashfsファイルを展開する作業用の領域は/mnt/P-Plamo/Contents/以下に取ることにします。

まず,squashfsファイルをloopback形式で適当な場所にマウントします。

# mkdir /tmp/loop
# mount -o loop /media/disk/isolinux/rootimg.squash /tmp/loop
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda1              19G  8.8G  8.8G  50% /
none                 1013M  184K 1013M   1% /dev
/media               1013M  4.0K 1013M   1% /media
...
/dev/sdb1             3.8G  1.6G  2.2G  42% /media/disk
/dev/loop0            1.6G  1.6G     0 100% /tmp/loop

Plamo-4.72ではsquashfsモジュールもあらかじめ用意され,必要に応じて自動的に組み込まれるので,loopback形式でマウントしたrootimg.squashの中身は透過的に見えます。

# ls -lh /tmp/loop
合計 0
drwxr-xr-x  2 root root  862  3月  4日  15:45 bin/
drwxr-xr-x  2 root root  166  3月 28日  01:24 boot/
drwxr-xr-x  2 root root    3  3月  4日  17:10 cdrom/
...
drwxr-xr-x 21 root root  412 10月  5日 2009年 var/

この/tmp/loop/以下のファイルを/mnt/P-Plamo/Contents/以下にコピーします。

# cd /tmp/loop ; cp -av * /mnt/P-Plamo/Contents/
`bin' -> `/mnt/P-Plamo/Contents/bin'
`bin/Mail' -> `/mnt/P-Plamo/Contents/bin/Mail'
`bin/bash' -> `/mnt/P-Plamo/Contents/bin/bash'
`bin/bash-static' -> `/mnt/P-Plamo/Contents/bin/bash-static'
 ...

なお,ファイルシステムを圧縮してsquashfsファイルを生成するmksquashfsと対になる,unsquashfsというコマンドも存在します。このコマンドは名前が示すようにsquashfsを展開するためのツールで,このコマンドを使えばマウントせずにsquahfsファイルから直接中身を取り出すことも可能です。

約5GB強を書き出すためそれなりに時間がかかりますが,こうして取り出したP-Plamoのsquashfsファイルの中身はHDD上で自由に変更することができます。

# du -h
4.2M    /mnt/P-Plamo/Contents/bin
3.5M    /mnt/P-Plamo/Contents/boot
...
23M     /mnt/P-Plamo/Contents/var
5.4G    /mnt/P-Plamo/Contents/

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入