LinuxをUSBメモリにインストールする

Windows PEをUSBメモリから立ち上げようとして、2年ぶり位にUSBメモリを買いに行ったら、なんとUSBメモリが劇的に安くなっていて感激した。前回1GBのメモリを買った時は、1万円弱くらいだった記憶がある。今回はElecomの4GBのUSBメモリが2,600円程度である。8GBも6〜7千円で買えてしまう。デジカメや携帯音楽プレイヤーのおかげでフラッシュメモリの大容量化が進んだためだろう。これだったらOSを丸ごとインストールすることもできる。

ということで、Windows PEのUSBメモリから起動は(当面)オアズケということで、LinuxをUSBフラッシュから起動させ、古いPCのシンクライアント化をやってみようと思った。

ディストリビューションは何でも良かったのだが、Fedora 9がリリースされてから一度もF9をインストールしてなかったので、今回はF9の試用も兼ねてFedoraにした。

と、思ったところまでまでは良かったのだが....。

死ぬほど時間がかかる

インストールに使ったのは、実験用に使っているいつものInspiron 1501である。USBメモリであることと将来的にはThin Clientのベースとして試すことを考え、スワップ領域は設けないことした。そのため、HDDがあるとインストーラがHDDのSWAPパーティションを勝手にスワップ領域として認識するのでHDDを外してストレージはUSBメモリだけという状態でインストールした。(Inspironはネジ2つでHDDが外せるのでこの点は重宝している。)HDDも含めてマシン構成は以下の通り:

USBメモリ Elecom MF-AU204GGT(4GB)
使用PC DELL Inspiron 1501 w/ AMD Turion 64 X2 TL-56 1.8GHz
DVD ドライブ TSSTcorp TSL462D(24倍速)
HDD ドライブ Toshiba MK8034GSX SATA 5,400rpm Seek:12ms 150MB/s

F9のDVDを作成して早速インストールした。そしたら、何とインストールに359分もかかったしまった。パラメータの設定終了後からインストール終了のリブート画面がでるまでの時間。ソフトウェアはオフィスソフトを除外してほぼ標準構成で、890パッケージのインストール。 丁度6時間もかかった。フラッシュメモリは書込みが遅いのは知っているが、まさかここまで時間がかかるとは思っていなかった。

インストールが終了すれば、次はネットワークから最新のソフトウェアへの更新が必要である。インストールに6時間もかかったのだから、更新には3時間はかかるだろうか、と思っていたが、これも大間違い。何と675分13時間15分!)もかかった。218パッケージの更新+追加で356MBのダウンロード。ただし、ダウンロードにかかった時間は8分40秒だけなので、殆どはUSBへのソフトウェアの書込みの時間。なんやかんやでインストール作業の開始から終了まで丸1日かかる。

さて、一通りインストール作業を終えて、普通にブートするとこれまたブートが始まってからログイン画面がでるまでに1分20秒かかる。以上を同じマシンでHDDに全く同じ設定でF9をインストールした場合と比べると(比べてはいけない!)、次のようになった。

動作 HDD USB
インストール 17分 359分
更新(全体) 24分 675分
更新(ダウンロード) 250秒 520秒
更新(書込み) 20分 666分
ブート 54秒 80秒

しかし、フラッシュメモリなので書込みは遅いが読み出しはソコソコの筈である。そこで、次のようなコマンドを使って読出し速度を測ってみた。(あくまで目安)

# dd if=/dev/sdb of=/dev/null bs=500M count=7

(500MBごとに合計3.5GBのデータを読出し、読み出したデータは破棄する。)
これで、HDDと比較すると次のようになった。

HDD USB
シーケンシャル読出し 35.7 MB/s 24.7 MB/s
ファイル書込み 35.3 MB/s 1.5 MB/s
シーケンシャル書込み - 6.5 MB/s

ファイル書込み(ランダムアクセスによる書き込み)は20倍以上遅い。一方、読出しに関してはHDDの方がUSBメモリの1.5倍程度速いに過ぎない。つまり、USBメモリに書き込みがなければ、システムはソコソコ早く動作する筈である。(書込みに関してはシステムキャッシュのお陰で実質的な速度よりはかなり早くなっている。syncも入れて実測してみたが、随分早い数値になった。まぁ、目安ということで。)
また、(HDDではやっていないが)書込みをシーケンシャルアクセスでは大分速くなる。これはフラッシュメモリのブロック消去&書込みの性質に起因するものと考えられる。4GB全体を書き込んでも約10分で終了してしまう。ということはフラッシュメモリは持ち運ぶ時にシーケンシャルで書き込んで、普段はサーバ上でメンテできれば良いかも。

RAMディスクを使う

FedoraオリジナルではUSBからブートするとちょっと使い物ならないので頻繁に書き込みがありそうなディレクトリをRAMディスク上に移動してみた。ファイルシステム全体をRAMディスクにするのではなく一部だけ。ちょいRAMディスク。そしたら、80秒かかっていたブートが60秒ピッタリ。HDDからのブートとそれほど遜色ない。結構快適に使える。オリジナルUSB Linuxのできあがり。

そこまで頑張らなくてもKNOPPIXのようなDVDブートのLinuxがあるではないか、とも考えたが、USBからのブートはCDやDVDからのブート異なり、あくまでも書き込みのできる媒体がメインなのでデータを保存できる点が大きく異なる。ソフトウェアの初期設定を自由にかえることもできるし、ソフトウェアを追加することもできる。更に、必要に応じてネットワークからの「ソフトウェアの更新」が可能だ。最新のLinuxでは頻繁にセキュリティ関連のアップデートがあるため、これが出来るのは嬉しい。ブートパラメータ1つでRAMディスクを使わない構成でブートできるようにしたので、この状態でアップデートすればOK。カーネルとかディレクトリ構造はいじっていないので、標準のソフトウェアの更新ツール(yumやpup)がそのまま使えて、更新後も何も手を加えずにちょいRAMディスク環境にスイッチできる。ちなみに今回はRedhat系のFedora 9を使って試行錯誤してみたが、基本的にはDebian系のUbuntuなどでも可能なはず(未確認)。

これで出先のPCを専用環境でつかる。(HDDを持ち運ぶものちょっと大変だし。)