2007-11-08最近は低価格化がかなり進んできたUSBメモリ。最近の情勢ではようやくLinuxのディストリビューションをそのままUSBメモリに入れられるようになってきました。4.1をインストールすることにしました。Linuxをインストールしている人向きのページです。4.1(Linux環境でも可)があるとトラブル対応が楽になります。USBメモリへのインストールインストールは通常通りインストールプロセスで行います。usb-storageで起動しています。注意点パーティション作成時は自動ではUSBメモリを認識してくれない場合があるのでDiskDrudを使うか、Ctrl+Alt+F2でコンソールに抜けてfdiskを使う(戻るときはAlt+F7)当然、USBメモリのデバイス名を注意深く確認することgrubをそのままの状態ではインストールしてくれないことが多い(元のハードディスクにインストールしたがる)ので、「grubをインストールしない」オプションで進める(ひょっとしたら/dev/sda1にインストール、というオプションでもいいかもしれませんが、試してません)インストール終了時にちょこちょこgrubをインストールするインストールプロセス終了後、Ctrl+Alt+F2でコンソールに抜けてgrubをインストールできるはずですが・・・なぜかコンソールが使えません。usb-storageでUSBストレージを使うレスキューモードで起動します。この時、USBメモリを起動時にあらかじめ差しておかないとうまく認識しないようです。認識したらUSBメモリにインストールしたシステムから/usr/lib/grub/i386-pc以下のファイルを/boot/grubにコピーします。defaultmenu.sh、menu.lstは不要です。コピーが終わったらgrubをインストールします。ここではUSBメモリが/dev/sdaだとします。quit以上でgrubのインストールは完了です。ついでなのでこの環境のままinitrdを作成します。少々めんどくさいのですが、initrdを少し修正する必要があります。上記の手順でレスキューモードに入っている場合はUSB側のシステム領域を/mnt/diskにでもマウントします(/mnt/sysimageにマウントされている場合はそれでもいいですが)。/mnt/diskchrootでUSBシステムにルートパーティションを移して作業可能になります。initrdを作成するときは以下のようになります。このやり方ではinitrd作成後、作業が必要になるのでめんどくさい人は次節の「mkinitrdを書き換える」を参照してください。2.6.16-0vl68これでUSBドライバを組み込んだinitrdを作成できます。私のPCではinitの待ち時間内(5秒)にUSBメモリを認識してくれなかったので、initrdを展開してinitスクリプトを修正します。-idmvこれでinitworkディレクトリ以下にinitrdの内容が展開されました。この中のinitスクリプトを修正します。これで修正は完了です。一度イメージを作成します。../initrd-usb.imgこれでinitrdが作成できました。mkinitrdスクリプトを書き換えてしまう!!いちいちイメージを展開してinitスクリプトの書き換えがめんどくさい場合はmkinitrdスクリプトを修正します。mkinitrdはシェルスクリプトなので必要な場所を修正してしまえばいいのです。$RCFILEこの部分ですね。usb-storage用にハックされた場所みたいです。10にすれば万事解決。あと、aptでカーネルアップグレードの時にいちいちmkinitrdをするのがめんどくさい場合は、さらにwith-usbオプション周辺をハックしてしまうのも手です。;;このwithusb変数をyesにすればいいだけなので、このオプション認識ループが終了した時点でwithusb=yesを入れてしまえばよさそうです(まだやってないけど)。以上の修正が必要になりますがこれだけでUSBブートLinuxができてしまいます。1GBでは少々心許ないのでできれば4GBぐらいが欲しいですね。