USBメモリへのLinuxインストールの落とし穴

先にPuppyLinuxをUSBメモリにインストールする方法を書きましたが、超小型のMicroSDカードリーダ用に余ったMicroSDで1つ仕立てようとしたらうまく行きません。作ったものが「Boot Error」と表示されるばかりで起動できません。

なぜかと3時間くらい試行錯誤してしまったのですが、なんどか試しているうちに突然ひらめきました。パーティションを生成する際に、bootflagをセットするのはあちこちで指摘があるのですが、LBAに関してはあまり記載がありません。しかし、普通のMicroSDはすでに1GB以上のものも当たり前になっていて、パーティションを切るならLBAモードでなければなりません。

GPartedは特に指摘してくれるでもないので、何も考えずにパーティションテーブルの生成とパーティションの生成をすると、LBAのflagがセットされていません。この状態で作業を進めると当然アクセスできないはずなのですが、実際にエラーになるのは起動するときだったりします。しかも、メッセージも単純なので悩んでしまうことになります。

というわけで、生成したパーティションがLBAモードかどうかはよくチェックしましょう、という日記でした。

★元ネタの部分にも追記しました

USBメモリにインストールしたOSの使い道

これまでUbuntuやPuppyなどのLinuxをUSBメモリにインストールする過程をメモにしてきました。ここで、LinuxのライブCD(LiveCD)のメリット、USBメモリにOSをインストールする際のメリット、デメリットを整理しておきたいと思います。

LinuxのライブCDとは

Linuxはもともとは(ブートローダの復旧、リカバリ用途、ルータ機能などの特定の機能に特化してフロッピーディスクドライブから起動するものを除き)Windowsと同様にHDDにインストールして使用するものでした。そのために自分も5インチベイにカートリッジ化したHDDを取り付けるためのトレイ(現在で言うとこんなもの)を取り付けてリムーバブルHDD化し、WindowsとLinuxでHDDを入れ替えながら使っていたものです。(パーティションを切って、複数OSを起動させることもできたけど、めんどくさかった・・・)

その後、PCのBIOSがCD-ROMからの起動をサポートするようになり、OSのインストーラだけではなく、OSそのものもそこから起動できるようになりました。それによって、OSのインストール前にどんなものなのか試してみることができるようになりました。その代表的なものがドイツ生まれのKNOPPIXで、日本では産業総合技術研究所が日本語化したものの配布を行っていました。

一方で、世の中には様々な用途を想定した様々なLinuxのディストリビューションが存在します。一例を挙げると、OSのインストール前確認用から、起動しなくなったPCからのデータ吸い上げ、論理的に破損したHDDからの(可能な範囲での)データ吸い上げ、非力なPC用のLinux環境、教育用などなど、星の数ほどといっていいくらいのディストリビューションが存在します。これらを日本語化して配布されていたのがライブCDの部屋で、かつては自分もいろんなものをダウンロードして試してみたものです。

その後、メジャーなディストリビューションもインストーラを兼用したライブCD化が行われるようになりました。

USBメモリ起動のLinux

更に後になって、USB2.0が普及し、USBメモリやUSB接続のCDROM/HDD/ZIPなどが普及しだすと、CDROMとFDDを皮切りにUSBから起動できるBIOSが登場するようになり、すぐにUSBメモリ(USBマスストレージクラス)も対応可能なものがでてきました。初期の頃は「あのPCではOKだけどこのPCはだめ」とか「このUSBメモリはOKだけどあのUSBメモリはダメ」とかいろいろあったようですが、最近ではほぼ収束したようで、必要なブートローダもほぼ固まったようです。それに伴い、各ディストリビューションでもUSBメモリ(USBフラッシュメモリ)へのインストールが可能になってきています。

USBメモリ起動のLinuxのデメリット

  1. USBメモリの読み書き(特に書込み)自体が遅いので、PC本体の内蔵HDDに比べるとOS自体の動作が遅い。アプリケーションも大量の書込みを伴うものだと遅くなってしまう。
  2. USBメモリが大容量化しているといっても手頃な値段のものは8GB程度までなので、インストールできるアプリケーションや使い方には制約がある。
  3. ライブCDに比べるとCD-R/DVD-Rは1枚数十円程度なので高くつく。

USBメモリ起動のLinuxのメリット

  1. USB起動が可能なPCなら、ハードディスク(HDD)にインストールすることなく利用できる。USBメモリを抜けば、元のPCとして使用可能である。
  2. LinuxはライブCDという形でCD起動することができるが、ライブCDの場合は読込み専用で書込みができない。できても追記という形を取ったり、別のメディアを必要とする。USBメモリならHDDへのインストールと(速度を除いて)おなじ条件での書込みができる。つまり、HDDにインストールする場合と同じ使い方ができる。
  3. CD/DVDは光学式ディスクメディアの宿命でシークタイムが非常に遅く、ランダムアクセスに極めて弱い。USBメモリは半導体メモリなので、シークタイムが存在せず、ランダムアクセスしてもあまり遅くならない。(厳密にはNAND型フラッシュメモリのバーストリードが使えなくなるので連続読み出しよりもランダム読み出しの方が遅くなると思うが、光学式ディスクメディアに比べると無視していいくらいの影響しかない)
  4. CD/DVDに比べると圧倒的に小さい。USBメモリよりも更に遅くなってしまうが、BUFFALOの超小型のMicroSDカードリーダーとMicroSDカードの組み合わせにすれば、CD/DVDドライブのないノートPC(ネットブック)に挿したままの運用ができるので本体のHDDと変わらない運用ができる。

どのディストリビューションを使うか?

ディストリビューションも様々なものがありますが、自分はUbuntu(とPuppyLinux)を使っています。Ubuntuはデスクトップとして非常にまとまっていることと、日本語版でも表示が非常にきれいで読みやすいことが理由です。Puppyは昔CDでごく限られたケースで使っていましたが、表示の綺麗さにひかれてUbuntuをAtomCPUのPCのHDDにインストールしたもの(Ubuntu専用PC)に移ってしまいました。ですので、USBメモリへインストールする際のデフォルトもUbuntuになっています。しかし、最新のものでは表示も綺麗になっていますので、用途によってはPuppyに戻ることも考えたいと思います。

どういうところでUSB起動化したものを使うのか?

ライブCDにしてもUSB起動化Linuxにしても、HDDの環境に影響を与えない、というところが最大のメリットです。いくらきちんとウイルス対策(というかセキュリティ対策ソフト)を入れていても、やはり不安は残ります。

自宅外で使用する場合で、Webの閲覧が目的の場合には極力USBメモリ起動化したLinux(Ubuntu)を使い、どうしても必要なデータはDropBoxで共有化、メールはGmailで読み書き、ブラウザのブックマークなどはChromeブラウザの共有化機能で対応しています。

更に不安な環境では、専用のUSBメモリを準備して、ユーザー名も通常と異なるものとし、ブックマークの共有化やDropBoxなどは使用しません。パスワードが必要なWebサービスにも通常使用するものにはアクセスしないようにしています。具体的には、海外(特に中国)のホテルや空港などで使用する場合は極力こちらにしています。こちらの用途の場合には、ライトプロテクトスイッチが付いたUSBメモリが手持ちに1本あるので、こちらとPuppyLinuxの組み合わせの方が向いているかもしれません。

    日本語化したPuppyLinux5.2をリマスタしてみた

    PuppyLinuxにはそれ自身にライブCDを作るリマスタ機能があります。「セットアップ」→「Remaster Puppy Live-CD」を選択するとウィザードが起動します。

    ISOファイルの生成場所を指定すると、元のライブCD(これは本当にCDを要求する)を要求してくるので、セットします。

    しばらく待つと、/tmp/root の中身、/etc の中身を変更するか確認するウィザードが出ますが、今回は何も触らないことにしました。また少しすると、syslinux.cfgの内容確認が出るので、エディタでpkeys=jp106をオプションとして追加しました。

    すると間もなく書込み準備ができたことを知らせるメッセージがでますので、空のCDをセットして、適当に(=メッセージにしたがって)操作するとCDへの書込みが始まります。

    CDへの書込みが完了すると、「書込み後のCDとsaveファイルが矛盾するかもしれないよ」というメッセージがでて、その対処法がいくつか提示されますが、自分は別のPC(vmware)で動かすつもりですので特に何もせず、完了しました。

    ・・・で、vmware上で起動してみたところ、無事に起動したのですが、残念ながら日本語化とかは失われていました。もう少し仕組み等を勉強しないといけないようです。

    PuppyLinux5.2をUSBメモリにインストール

    今はUSBブートでのLinux環境としてUbuntu10.04LTSを使っていますが、今年に入ってPuppyLinuxがバージョンアップされていて日本語化も可能なようなのでUSBメモリにインストールしてみました。

    参考にしたのは、こちらのページ(PuppyLinux日本語フォーラム)ですが、インストール方法は多少違うのでメモしておきます。(記憶を頼りに書いているので、間違っているところがあるかもしれません)

    1. まず本体をダウンロードします。本体は本家本元のBarry’s BlogからリンクされているLiveCDのISOファイル(127MB)をダウンロードでします。
    2. 日本語フォーラムの指示通り、日本語化パッケージlang_pack_cjk-lupq-0.2.sfsをダウンロードします。ダウンロードは http://shino.pos.to/party/bridge.cgi?pu … languages/ からダウンロードします。
    3. 同じく日本語フォーラムの指示通り、日本語&Flash対応済のseamonkey-2.0.11-flashplayer-10.1.102.65-jre-1.6.0.23-lucid.sfsを http://shino.pos.to/party/bridge.cgi?puppy/lupq/opt/ からダウンロードします。
    4. ダウンロードしたISOファイルを適当な環境でCD-Rに書き込みます。
    5. 書き込んだCD-Rで起動します。とりあえず、タイムゾーンとキーボードだけ選択。
    6. 使用するUSBメモリはFATまたはFAT32でフォーマットしておきます。
    7. 日本語フォーラムではuniversal installerを使わず、手動でインストールしてGrub4Dosでブートの設定をするよう記載されていますが、構わず(menu → setup → )Puppy universal installerでインストーラを起動します。
    8. USBメモリを挿入し、インストール先に「USB Flash Drive」を選択します。インストール先の名称、容量が表示されるので確認します。
    9. いろいろ表示されますが、上のほうの「Install Puppy to sda?」を押します。しつこくインストール先を確認してくるのでOKを押します。
    10. どこにPuppyのファイルがあるのか聞いてくるので、「CD」を押します。ライブCDがドライブに入っているのを確認するようメッセージが表示されますので、確認して「OK」を押します。
    11. インストール中にブートローダをどうするか聞いてきます。Syslinuxパッケージのものをインストールする「mbr.bin」設定を選択しました。
    12. 該当パーティションのbootフラグが立っていないと、「GPardedを起動するのでbootflagをセットしろ」というメッセージが出ます。ウィザードに従って、bootflagをセットします。
      ★2/14追記: LBAのフラグもセットされていないとダメです。
    13. まだまだいろいろ聞かれますが、リターンキー連打・・・(読めばわかる・・)
    14. インストールが完了したら再起動します。再度タイムゾーンとキーボードを選択します。
    15. 別のUSBメモリにコピーしておいたlang_pack_cjk-lupq-0.2.sfsとseamonkey-2.0.11-flashplayer-10.1.102.65-jre-1.6.0.23-lucid.sfsをファイルブラウザでLupu-520と同じディレクトリにコピーします。
    16. 再起動のためにシャットダウンします。ここで表示にしたがってsaveファイルを作っておくべきでしょう。次の作業はsaveファイルがないと怒られてしまうので、自分はさらに再起動が必要でした。
    17. 再起動後に、読み込むSFSを設定します。勝手に出てきたのか、「system」→「BootManager configure bootup」で設定したのかは忘れました。先にコピーした2つのSFSを選択して、右側に移します。
    18. 再度再起動します。
    19. 国別設定をします。「setup」の中の「Personalize – Setting」メニューで日本語を選択しました。ブラウザは画面左下の Browser Selector で seamonkey2.nls を選択しました。
    20. 最後に、別のUSBメモリに http://shino.pos.to/linux/puppy/ にある puppy-desktop-20110101.pet を入れて、クリックするとインストーラが起動するので、流れに任せているとインストールが完了する。
    21. 再起動すると、日本語化が完了する。

    ネットワークの接続は、デスクトップ上の「接続」アイコンをクリックすると、認識しているデバイスが表示されるので、適当なものをクリックします。Ubuntuでは別途ドライバが必要だった Broadcom の無線LANも問題なく認識して暗号化キーを入力すると使用可能でした。

    デフォルトでは右下でFireWallの設定がされていないというアラームがでているので、クリックするとセットアップウィザードが起動します。適当に自動設定するようなキーワード(Automagic)の方に設定しました。

    使用した感想ですが、以前のバージョンでは日本語の表示が綺麗とは言えなかったのですが、非常によくなっています(丸文字系ですが)。ブラウザのスピードもオンメモリで動いているせいもあって極めて軽快です。動作アクションが1クリックが基本なのもありますが、ブラウザはもちろんシステム全体が軽快過ぎて反応が過敏な感じすらします。

    USBにインストールしても全てをメモリにコピーするので起動は多少時間が掛かりますが、非常に軽いのと小さな容量で済むのでお手軽ではあります。