Puppy Linuxパッケージングに挑戦
2009.10.18 Sunday 23:58
最近ちょっと起動が速いLinuxが欲しいなと思っている.USBメモリから高速起動できて,リモートのPCに接続できるようなものを作りたい.
「それなんてlui?」というのは聞かなかったことにして,Linuxのディストリビューションを調べてみた.
- ThinStation (日本語): 目的そのまま
- Damn Small Linux : 小さいLinux.Knoppixベース.Kernel 2.4系.開発陣でトラブルがあり開発停止のようだ.
- Puppy Linux (日本語) : 軽量Linux.最初にFileSystemをメモリに読み込むので高速に動作
- T2 SDE : 独自のパッケージを作れるビルド環境.Puppy 4.0はこれがベース.
- TinyCore Linux
10MB~ すごく小さい
番外
- Linux From Scratch : 自作Distributionの作り方を解説した書籍
最初にThinStationを試してみたのだが,起動時にネットワークに接続できないと起動をあきらめる仕様のためどうにもならない.ネットワークブートが前提なら良いのかもしれないが,USBから起動したいのでこれはちょっと不便.他のDistributionはどれも期待する物より大きかったり小さかったりして微妙に目的に合わない.ということで,何かをベースにカスタマイズパッケージを作れないかなと思い,独自パッケージの作り方が丁寧に解説されていたPuppy Linuxのパッケージ環境を作ってみた.
「それなんてlui?」というのは聞かなかったことにして,Linuxのディストリビューションを調べてみた.
- ThinStation (日本語): 目的そのまま
- Damn Small Linux : 小さいLinux.Knoppixベース.Kernel 2.4系.開発陣でトラブルがあり開発停止のようだ.
- Puppy Linux (日本語) : 軽量Linux.最初にFileSystemをメモリに読み込むので高速に動作
- T2 SDE : 独自のパッケージを作れるビルド環境.Puppy 4.0はこれがベース.
- TinyCore Linux
10MB~ すごく小さい
番外
- Linux From Scratch : 自作Distributionの作り方を解説した書籍
最初にThinStationを試してみたのだが,起動時にネットワークに接続できないと起動をあきらめる仕様のためどうにもならない.ネットワークブートが前提なら良いのかもしれないが,USBから起動したいのでこれはちょっと不便.他のDistributionはどれも期待する物より大きかったり小さかったりして微妙に目的に合わない.ということで,何かをベースにカスタマイズパッケージを作れないかなと思い,独自パッケージの作り方が丁寧に解説されていたPuppy Linuxのパッケージ環境を作ってみた.
VMWare
Puppy Linuxの構築にはPuppy Linux 4.xが必要とのことなので,新たにVMWareの環境を構築した.
- VMWare Player
- QEMU for Windows
QEMUは適当な場所に展開する.(qemu-img.exeのみ必要)
仮想環境のファイルを十分おける空き領域のあるディスクにディレクトリを作る.(仮にC:\puppyとする)コマンドプロンプトを開きcd コマンドでそのディレクトリに移動.(c:;cd \puppy)
qemu-img.exe をコマンドプロンプトにドラッグするとフルパスで入る(Vista以降はこの手が使えないのでフルパスを手動入力)
そして,
qemu-img create -f vmdk puppy.vmdk 10Gpuppy.vmdkを作る.次に,テキストエディタでpuppy.vmxファイルを作り,こんな風に入れる.
config.version = "8"
memsize = "256"
ide0:0.present = "true"
ide0:0.fileName = "puppy.vmdk"
ide1:0.present = "true"
ide1:0.fileName = "pup-431.iso"
ide1:0.deviceType = "cdrom-image"
ethernet0.present = "true"
ethernet0.connectionType = "nat"
guestOS = "other26linux"
displayName = "Puppy Linux"
bios.forceSetupOnce = "TRUE"
#ehci.pciSlotNumber = "18"
#ehci.present = "TRUE"
#usb.present = "TRUE"
#usb.pciSlotNumber = "17"
参考: VMware Playerのイメージをqemuで作成
usbとehciはUSBデバイスを認識させるのに必要みたいだが,今回は特に必要としないのでコメントアウトしてある.
bios.forceSetupOnce = "TRUE" はBIOSセットアップに強制的にはいるためのもの.Puppy LinuxをCDから起動するための起動順序を変える場合に使う.セットアップが終わったら,VMを終了させた後にFALSEに書き換える.
肝心のpup-431.iso はPuppy linuxのサイトからダウンロードしてvmdk, vmxと同じディレクトリに置いた.
Puppy 4.3.1 /pub/linux/distributions/puppylinux/puppy-4.3.1/
これでVMWare Playerを起動して,「開く」で上で作ったpuppy.vmxを選択すれば無事CDからpuppy linuxが起動する(はず)
Puppy起動
最初にキーボード,言語,タイムゾーンを選ぶ画面が出るのでjpで始まるのとGMT+9の(Tokyo)を選ぶ.その次のXの設定はX.orgでもXvesaでも動いた.
Puppy Linuxが起動した状態ではネットワークに接続できないので,画面左側の真ん中あたりにある電話の絵のconnectアイコンを選択してネットワークを設定する.“Internet by Network or wireless LAN”を押して,eth0を選び,Auto DHCPを選ぶとVMWareがDHCPでアドレスを割り当ててネットワークにつながるようになる.
次に,作成したディスクイメージにファイルを保存するためにパーティションを作成する.(これを行わないと変更内容が保存できない)
Menu→System→GPartd Partition Manager
最初にドライブ選択が出るのでsdaを選んでOKAYを押す.
するとパーティション編集画面が出るので,ツールバーのNewを押してパーティションを作成する.ファイルシステムはext2とした.
パーティションを編集すると下の方に設定内容が出てくるので,そこを右クリックしてAPPLYを行って初めて結果がディスクに反映される.
ここからは順序がちょっとあやふやだが,Menu → Shutdown → Power-off computerとすると終了前に設定を保存するか尋ねられるので,SAVEを選び,そして保存先としてsda1を選べば保存ファイルが作られる.
再度Puppyを起動すると作成したパーティションが /mnt/home として見えるようになっているはずである.
環境構築
ここからは [HowTo] Build a Custom Puppy with Woof に書かれた手順に沿って進める.
まず,ブラウザでdevx_431.sfsをダウンロードして /mnt/home に格納する.4.3.1用はリンクされていないが,distributions/puppylinux/puppy-4.3.1/ にisoイメージと並んで入っている.
ファイルは仮想マシンの中でブラウザを開いてダウンロードする方が簡単.ホスト側でダウンロードした場合は,
* PuppyのMenu→Network→Pure FTPd FTP Serverを選ぶ
* Pure FTPdが起動したらPrevent anonymous connections のチェックを外す
* Start Pure-ftpd を押してサーバを起動
* consoleアイコンをクリックしてコンソールを起動
* ifconfig を行ってeth0に割り当てられたIPアドレスを確認
* ホストからFTPクライアントでダウンロードしたファイルを送る
* Puppyで/root/ftpd/ から /mnt/home へファイルをコピー
と面倒くさい手順を踏むことになる.ホスト側のブラウザで開いているURLをゲスト側に貼り付けたい...がCopy & Pasteができない,と言うときはURL短縮サービスを使うと便利.
bit.ly j.mp tr.im
# j.mp もbit.lyが運営してるのね
同様にしてwoof-*.tar.gz をダウンロードし,/mnt/homeに展開する.woofもisoファイルと同じ場所に置かれている.
上の解説は何故か/root/woofを前提に書かれているが,/rootに展開するとサイズ上限のある保存ファイルに入るので,/mnt/homeに展開してから /root にシンボリックリンクを張るのが良いのだろうと思う.
あとは書いてあるとおりに DISTRO_SPECSとDISTRO_SPECS-puppy-4を編集して,0setup, 1download, 2createpackages, 3builddistroと順に行っていけばOK.
ただ,downlaodの段階で新しいパッケージがあると言われ,そのままYesにしてしまったせいか,最終的なサイズが89MBとでかい.(日本語環境なしで)
ここから切り詰めて行くにはpuppyの動作や必要なアプリケーションの関連をきちんと理解しないとダメなのだろう.
TinyCoreやT2に走っても結局は基本的な動きが分かっていないと減らす方のカスタマイズは難しいし,puppyの全部一旦RAMにコピーして動かすあたりとかを理解しておくのは無駄にはならないと思うし.
Comments