Linux on UsbMemory
ずいぶん前にLinuxにはまっていた事が有りましたが、数年前から Open Solaris に乗り換えていました。
Androidの勉強を始めた事もありNDKを使い始めると、今現在のLinuxを知っておく必要性が出てきました。
いつものようにVirtualPCで使っていましたが16ビット色までしか使えないと言うのと画面サイズに制約が出るのでUSBメモリからブートさせる事にしました。
1.デストリビューションの選択肢
昔使っていたデストリビューションはSlack wareで稀にDebianを使っていました。
勝手に使わない物まで一杯入れられるデストリビューションは結局そのままでは使えず必要な物を入れ不要な物を消すような作業が面倒だったりしたので自分はシンプルなのが好きで、どれだけ小さなサイズで実用的にインストールするかに命を掛けていたような時代も有りました。
今回はOSの構築やインストールが目的ではないので次のような条件を考えてみました。
・USBメモリからブート可能な事
・コンパクトでサクサク動く事
・簡単に使える事
・自分のPCと相性が良い事 ( Thinkpad T43p )
・借りたPCでもUSBブートで自分の環境が起動出来る事
全てのデストリビューションは試しませんでしたが好きだったSlackware・流行りのからubuntu・コンパクトさで探したSlax・Puppy・konoppixを試しました。
コンパクト 簡単 PCとの相性 Slackware △ × △ 若干調べないと使えない ubuntu × ○ ○ 最低でもHDDに3,5GBくらい必要・使い勝手は最高 Slax ○ ○ × 起動時にBlueToothがON・WiFi接続でBeep音が鳴るり続ける Puppy ○ ○ ○ 今回の目的に合致し魅力的でした Konoppix △ ○ × VirtualPCでは問題無かったのに画面が乱れた
”簡単”は自分の今のスキルでの話で、”相性”も少し調べれば解決出来るのかもしれませんが
何も調べず普通にやってみて全て完結した物に○を付けました。
2.今回見送ったデストリビューション
見送ったデストリビューションの特徴や見送った理由をまとめます。
・Salckware ( http://www.slackware.com/ )
当然中身は変わっていると思いますが、昔ながらのテキストベースからのインストールでピュアなLinuxだと思います。Kernelもビルドし直せばシンプルで小さくなり必要な物だけを入れれば魅力的だと思いますが、何を入れるかと言う事も含み若干の知識が必要になります。何よりもLiveCDと言う構造が無い事からも想像出来るように”借りたPCでもUSBブートで自分の環境が起動出来る”と言う構造を考えると勉強が必要になると思いましたので見送りとしました。
・Slax ( http://hatochan.dyndns.org/slax-ja/ )
CDブート・USBブートをに特化したSlackware派生のデストリビューションで128MBのメモリにインストール可能です。面白いのはwebconfigと言う仕組みで8MBまでと言う制限付きですが自分で作成したドキュメントや設定をWeb上に保存出来る事です。CDは当然ですがUSBメモリで起動しても起動したデバイスへの書き込みは全く発生せずシャットダウンする時にパスフレーズを入力する事で変更した内容がWebに保存されます。
アプリケーション等のインストールもlzmと言う拡張子を持つモジュールと言われる物で行われ、ダウンロードしたモジュールは起動時に読み込まれ簡単に使えます。
VirtualPCで試して気に入ったのでUSBメモリにインストールし使ってみましたが自分のPC(ThinkPAD T43p)と相性が悪いのか問題が発生しました。起動時、勝手にBluetoothの電源がONになりWiFiでの接続を試みると ピッピッピップップップッ っと音が鳴り続けるようになり接続に失敗しました。残念ですが見送る事にしました。
・Konoppix ( http://www.rcis.aist.go.jp/project/knoppix/ )
自分が知る限り最高にサイズの大きなデストリビューションで、こんな事も出来るのかと思う程の機能を多く含んで、LiveCDも有りますがLiveDVDも有りDVDで起動するとLinux界の全ての機能を試せるような雰囲気でした。コンパクトに△を付けたのは実際にインストールを実行する時にターゲットや機能を簡単に絞り込む事が出来てUSBメモリを選択すると、それ用に小さなサイズに収まるようになるからです。
VirtualPCで試し、これは有りだなっと思いインストールを試みましたがLiveDVDで起動すると画面の右と下に黒い帯が出てメニューやらに触る事すら出来ませんでした。
見送る事にしましたが、時間に余裕が有る時にもう一度試してみようと思います。
3.Ubuntu ( http://www.ubuntulinux.jp/ )
これは雑誌やWebを見る限り2010年現在一番活発なデストリビューションのようです。
早速VirtualPCで試した感想は、思ったよりディスク容量が必要だと言う事です。1GBくらいに収まるだろうとインストールを始めると最低でも2.5GB必要だとメッセージが出たので3GBでインストールを完了し起動するとUpdate manegerが起動しUpdateを促され言われるままにUpdateを試みるとディスクが足りないメッセージが出ました。
結局5GB確保してインストールし、dfで確認した所3.5GBくらい使用されていました。正直この時点で、こんなに入れちゃって何を入れてくれたんだろうって思いましたが昔の大きなデストリビューションとは異なり実用的で気に入りました。
今時のLinuxでは常識になっているのかもしれませんが、気に入った(優れた機能)には「アップデート・マネージャ」「Ubuntuソフトウェアセンター」を代表とし全般にわたりました。
アップデート・マネージャは定期的にWebに接続し適切なUpdateを促すWindowsUpdateのような物です。不要だと言われればそうかもしれませんが昨今のブロードバンドな環境ではセキュリテキーが気になりますので特にサーバー版をインストールされるような場合には役に立つと思います。
Ubuntuソフトウェアセンターは、昔のpkgとかrpmとかをインストールするのとは異なり、GUIな環境でUbuntu用にビルドされたアプリケーションをワンクリックでインストール出来て依存関係も解決してくれます。
その他にも、昔は苦労したWiFi接続もアクセスポイントを検索表示して選択すると簡単に接続出来、スクリプト等に苦労したプリンター設定もプリンターを検索し選択するだけで印刷可能になりました。
・インストール
インストールも何も苦労する所はありませんので、UbuntuのサイトからダウンロードしたCDROMイメージのISOファイルをCDに焼いてCD起動しインストールを選択するだけですが、USBメモリで使う為パーテーションの設定は手動でパーテーションを作成するを選びました。フラッシュメモリは書き込み回数に制限が有りますのでHDDと同じように書き込みが頻繁に有る場合には寿命が早く来ます。昔Linuxを使っていた頃はSWAPは実メモリの2倍程度確保するのが良いとされていましたが、当時のPCには128MBtか256MBを実装する程度でしたので若干調べてSWAPは確保しない事にしました。使っているPCには実メモリが2GB有りますので問題無いだろうと思いSWAPが無いと言う警告を無視してインストールを完了させました。
現在まで使用してみてSWAPが無い事に関する問題は全く発生していません
・問題点
ドキュメント等を作成したり何らかのSourceをビルドしたりインストールしたりと言う時には当然USBメモリへの書き込みが発生しますが、ブラウザを立ち上げてホームページを観覧しているような時でも、ふと気付くとUSBメモリのアクセスランプが点滅しています。インストール中にアクセスを減らすようにSWAPを作成しませんでしたし当然何もしなければ点滅は止まっていますがベタなHTMLのホームページ観覧でアクセスが有ると言うのは・・・考えるにキャッシュしたり履歴を書き込んだりしているのだと思います。
それでも良いと言う気もしますが突然USBメモリの寿命が来て必要なデータと共に動作不能となるのは困りますので調査の必要性を感じます。
やっぱりUSBメモリ用に作られたデストリビューションではないのだと実感しました。
4.Puppy ( http://openlab.ring.gr.jp/puppylinux/ )
PuppyはUSBメモリで起動する事を前提に作られたデストリビューションでUSBメモリへのアクセスを最小限に抑えられています。設定にもよりますが起動時RAMに転送されたkernelやモジュールを使用して起動・動作し、シャットダウン時に変更を保存するを選んだら以降差分(変更点)をUSBメモリに書き込んでシャットダウンします。
使えれば良いと言う思考でバージョンの新旧を問いませんので5.20と4.31と4.20を試しましたが、それぞれのバーションに若干癖が有りました。
・5.20
現在5.20の日本語版は作業中と言う事になっていますがマルチランゲージ仕様になっており、ドキュメントに従い”lang_pack_ja-lupq-0.5.pet”を組み込む事で日本語化されますがサイズが500MB超えと他のと比べて大きな物になるのと若干日本語化出来ていない所が有りました。開発が完了してマルチランゲージのモジュールを使わずに動作するようになったら再度試すとして見送ります。
・4.31
Puppyは起動時にファイルをRAMに展開したりRAMを使わない設定だとファイルをディスクのパーテーションのように扱いますのFAT32にもインストール可能なのですが何故かこのバージョンだけはEXT3でフォーマットしないとインストールに失敗しました。
・4.20
5.20がFAT32にインストール出来たのに4.31が不能だった為、このバージョンも試しFAT32にインストール可能な事を確認しました。サイズは4.31が130MB程度なのに対し120MBと若干小さい物でした。
試したバージョンの結果を見ながら4.31を使う事にしました。ubuntu同様WiFi接続もプリンター設定も簡単に出来るし十分に実用的だと思いました。
インストールに必要なUSBメモリの領域は、Puppyが130MB程度と設定や追加アプリケーションの保存エリアです。保存エリア(Puosave)は512MBを推奨されていますが使い方によっては16MBとか32MBとかでも良いと思います。
今回準備したUSBメモリは32GBのを準備しましたのでバックアップエリア等も含む予定で4GB確保する事にし、第一パーテーションをFAT32で28GB、第2パーテーションにEXT3で4GB作成し第2パーテーションにBootフラグを付けてインストールしました。
本当だったら1GBも有れば十分で4GBは取りすぎって感じもしますが、あれこれと環境を整える為です。
インストール後の設定とこだわりについて以下に抜粋します。
・Pupsave
初回のシャットダウン時に保存の有無を質問され、これに「はい」と答えると”Pupsave.2fs”と言うファイルが作成され以降は質問される事なく変更点を保存されるようになり、ここではこれをPapsaveと言う事にします。
Pupsaveが起こるタイミングは、”デスクトップのsaveアイコンをクリックした時”・”設定時間のイベントによる自動保存”・”シャットダウンする時”の3つが有ります。
saveアイコンのクリックは保存してくれないと困りますが他の2つは出来れば止めたい物なので調べてみました。
設定時間のイベントによる自動保存は、メニューからPuppyイベントマネージャを起動し、保存間隔を0に設定すると止められますので止めました。もしOSが不安定で固まる等の現象が出たら必要だとは思いますが今までOSがフリーズするような現象は発生していませんので不要とします。
シャットダウン時の保存は出来れば選択したいと思いますが、他の設定を見ているとマウスを一定時間動かさない時に自動的にシャットダウンすると言う設定が有りました。こう言う設定が有れば保存してもらわないと困る人が居ますよね?!と言う事でシャットダウン時の保存を止めたり選択する設定は無いようです。
無理やり保存させない操作は出来るようで、/etc/rc.d/PUPSTATEをエディタで開き”PUPMODE=13”を”PUPMODE=0”と編集してシャットダウンすると保存せずにシャットダウン出来ました。ただし、この方法でシャットダウンすると次回の起動時に警告が出て”PUPMODE”は13に戻ります。
このpupsave.2fsと言うファイルには追加インストールしたアプリケーションや設定、そしてRAMDISKに展開されているファイルシステムに保存したファイル等の全てが保存されpupave.2fsのファイルサイズを超える変更点が有ると保存に失敗します。pupsave.2fsをリネームして(拡張子を変更)読ませないようにし、PUPMODE=0にして再起動するとインストール直後の状態に戻り、pupsave.2fsを元に戻せば設定が復活します。また、pupsave.2fsを読ませないようにしてシャットダウン時に新しいpupsave.2fsを作り、再起動後に2つのファイルをold.2fsとnew.2fs等とリネームした場合、次回の起動からは2つのファイルの選択に加えて読み込まないの選択が出来るようになります。
pupsave.2fsはクリックするとマウントされます。効率的なPupsaveの使い方で複数のpupsave.2fsを作って他のpupsave.2fsのプログラムからリンクを貼って動かすと言うのも有りました。依存関係が有って複数のインストールが発生しているプログラムはどうなるんだろうかとか疑問は残りますが一応記憶に留める事にします。
・安全なデータ保存
Pupsaveいついて調べている間に、pupsave.2fsは壊れる事が有ると言う記事を目にしました。壊れてしまったらアプリケーションをインストールし直したり設定をやり直す必要が有ります、もっとも最悪なのは作成したデータ類が失われる事です。重要なデータはpupsave.2fsと言う仮想化されたファイルシステムではなく実際のファイルシステムに保存するのが好ましいようです。PuppyはRAMDISKに展開されて動いていますがインストールしたメデイアのパーテーションは/mnt/homeにマウントされていますので以下のようにDataディレクトリを作りシンボリックリンクを自分のホームディレクトリ/rootに作成しデータは、そこに保存する事にしました。
合わせて、pupsave.2fsファイルはpapsave.bakup等とバックアップを取って壊れた時に使う事にします。
$ mkdir /mnt/home/data
$ ln -s /mnt/home/data ~/data
・WiFi接続
ubuntuがあまりにも簡単に接続出来たので最初はダメなのかと思いましたが少し検索したら繋がらない理由が解りました。ubuntuと違いPuppyは暗号化のAESをサポートしておらずTKIPのみのサポートとなっているようです。アクセスポイントの暗号化設定をTKIPに変更したらあっさり繋がりました。
・アプリケーション等のインストール
アプリケーションのインストールは、基本的にメニューのセットアップからPuppyパッケージマネージャで行いインストールもアニンストールも簡単に出来ます。ここで扱うパッケージの拡張子はpkgとかdebとかRPMではなくpetとなりPuppy自体が仔犬と呼ばれているのに対してペットを飼うと言うようです。
また、これと異なり大きなサイズとなるパッケージはsfs(squash file system)と言う拡張子を持ち、ファイル自体をマウントしてそのままROM状態で使います。これのインストール方法はダウンロードしたsfsファイルをPuppyをインストールしたパーテーションのカレント(/mnt/home/)に置いてメニューのPuppyセットアップかデスクトップの設定アイコンをクリックし”パピーのブートアップ”、”SFSファイルのロード”と進み読み込ませるSFSファイルを選択すれば終わりです。
また、http://murga-linux.com/puppy/viewtopic.php?t=39756には”deb2pet.rpm2pet.pet”と言うPuppy用のパッケージが置いてありこれをインストールするとdebとRPMをPuppy用のpetに変換してくれ、このようにダウンロードしたpetもクリックすればインストール出来ます。
Puppyのパッケージで興味を持ったのはインストール後に出るダイエットで、petをインストールした後にダイエットを促すメッセージが表示され「はい」を選択するとマニュアルページやマルチ言語に対応している物は設定した言語以外を削除して使用量を減らしてくれる
Puppyは、良く考えられているなってのが感想で、しばらくPuppyに落ち着きます。