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

第9回 P-Plamoの内部構造[その1]

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

前回紹介したように,P-PlamoはHDDにインストールしなくても,DVDから直接起動して利用することができるPlamo Linux版のLiveDVDです。

インストール作業が不要なLiveDVDは便利なツールですが,元々UNIX/Linux環境は読み書きが自由にできるHDDにインストールして使うことが前提になっているので,書き込み不可なDVDメディアとはあまり相性がよくありません。

もちろん,オープンソースであるLinuxの場合,組み込み環境向けのディストリビューションのように,HDDのない環境で動作するように改造することも不可能ではありませんが,わざわざLiveDVD用に専用のディストリビューションを作るのも大変な作業です。

そこで既存の環境を流用しながら,どうやってうまくDVDから起動して運用できるようにするかにLiveDVDの作者は頭を絞ることになります。

幸い,linuxには今回紹介するinitrdをはじめ,ファイルをファイルシステムとしてマウントするループバックファイルシステムや,さまざまな圧縮ファイルシステム自動的に増減するtmpfsといったトリッキーな(?)機能が豊富に用意されているので,これらを組み合わせて使いやすい機能をどのように実現するかが作者の腕の見せ所です。

P-Plamo DVDの中身

通常,OSを動かすためには数千を越えるファイルが必要になりますが,P-PlamoのようなLiveDVDの場合,実際のファイルはsquashfs上に圧縮されているので,DVDの中身はごくわずかのファイルしかありません。

DVDをマウントして中身を見てみると,以下のようなファイルだけになっています。

% ls -lRh /cdrom
/cdrom:
合計 6.1M
-r--r--r-- 1 root root 5.3K  3月 29日  15:19 ChangeLog
-r--r--r-- 1 root root 6.0M  3月 28日  01:47 initrd
dr-xr-xr-x 2 root root 2.0K  3月 29日  10:19 isolinux/

/cdrom/isolinux:
合計 1.6G
-r--r--r-- 1 root root 2.0K  3月 29日  15:21 boot.cat
-r--r--r-- 1 root root 2.3M  3月 29日  15:21 initrd.gz
-r--r--r-- 1 root root  14K  3月 29日  10:57 isolinux.bin
-r--r--r-- 1 root root  658  3月 29日  15:20 isolinux.cfg
-r--r--r-- 1 root root 120K  2月  6日  21:00 plamo41.lss
-r--r--r-- 1 root root 4.1K  2月 14日  14:28 pplamo.lss
-r-xr-xr-x 1 root root 1.6G  3月 28日  02:46 rootimg.squash*
-r--r--r-- 1 root root  464  3月 28日  11:16 sample.msg
-r--r--r-- 1 root root  738  3月 29日  15:20 syslinux.cfg
-r--r--r-- 2 root root 2.2M  3月 29日  10:19 vmlinuz
-r--r--r-- 2 root root 2.2M  3月 29日  10:19 vmlinuz-2.6.32.10-plamoSMP

これらのファイルのうち,P-Plamoに必要なのはisolinuxディレクトリ以下のファイルで,DVDのルートディレクトリにあるChangeLogは変更履歴の簡単なメモ,initrdは後述する起動時ramdiskの圧縮前のイメージで,参照用に置いているのでP-Plamoの動作には不要です。

また,isolinuxディレクトリ以下のファイルでも,pplamo.lss(イジりかけの起動画面イメージ)syslinux.cfg(USBブート用の設定ファイル)はDVD起動の場合は利用されませんので,この2つのファイルを除いた残りのファイルについて簡単に説明しましょう。

boot.cat
CD/DVDからPCを起動するために提案されたEl Torito規格が使う起動イメージのカタログファイルです。El Torito規格では,1枚のCD/DVDから複数のOSを起動することが想定されており,それぞれのOSのブート用の領域がどこにあたるかを記録するためにこのファイルが利用されます。
initrd.gz
圧縮した起動用ramdiskファイル。カーネルとともにメモリ上に読み込まれ,起動用のルートファイルシステムとして利用されます(詳細は後述)⁠
isolinux.bin
isolinuxと呼ばれるCD/DVD起動用のブートローダです。次のisolinux.cfgの設定に従って,カーネルや起動用ramdiskをメモリに読み込みます。
isolinux.cfg
isolinux.binが参照する設定ファイルで,読み込むべきカーネルや起動用ramdisk,カーネルに与えるオプションパラメータ等を設定します。
plamo41.lss
DVD起動時の背景に表示される画像データファイルです。syslinux/isolinux専用の,lssと呼ばれるシンプルだけどやや特殊な画像形式になっています。
rootimg.squash
squashfs化したPlamo-4.72のファイルシステムをLZMA形式で圧縮したファイルです。このファイルがP-Plamoのルートファイルシステムになります。
sample.msg
起動時に表示されるメッセージを記述したファイルで,指定可能なラベルやログイン用の情報などを記しています。
vmlinuz,vmlinuz-2.6.32.10-plamoSMP
linuxカーネル。vmlinuz-2.6.32.10-plamoSMPが本来の名称ですが,El Torito規格を用いてCD/DVDから起動する際には,長いファイル名を格納するロックリッジ拡張機能が利用できないため,vmlinuz-2.6.32.10-plamoSMPからvmlinuzという名前にリンク(ハードリンク)を張って,短いファイル名で参照できるようにしています。

これらのファイルのうち,isolinux.cfgとsample.msgがテキストファイル,その他はバイナリファイルになっています。

著者プロフィール

こじまみつひろ

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

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

コメント

コメントの記入