昨年末に購入したintelのAtomマザーボード、D945GCLF2はUSBメモリーからの起動もサポートしています。買った当初にちょっと調べてみてやったのですが起動せず、結局このマシンには余っていたCD-Rドライブをつけたのでした。
この時は、USBメモリーのメーカーが悪いのかなぁと思っていたのですが、最近になってネットで詳しく調べてみると、こちらのページで
「ブート対応」である必要はない。
という記述を見つけて何が悪かったんだろうと調べてみました。で結局のところ、CDブートのisoイメージをそのままUSBメモリーにコピーしてもダメということでした。前にちょっと調べるとddでコピーとかあったもので、簡単にisoイメージを以下のようにして書き込めばOKだと思いこんでいました。
# dd if=boot.iso of=/dev/sdb1 bs=512k
この結果は起動できないUSBメモリーの完成です。
実際は、CDブートとUSBメモリーブートの仕組みが違うので、USBはUSBのやり方が必要となります。おおざっぱな手順としては起動可能なフロッピーディスクを作るのと同じで、
- ディスクをフォーマット
- DOSで言うところのsys.exeコマンドを実行してディスクに起動関連ファイルをインストール
- あと、起動後に必要なファイルをコピー
という感じです。
自分は今回、BIOS更新のためにDOSが起動すれば良かったので、FreeDOSを入手。ダウンロードページにあるsys-freedos-linuxツールを使ってLinux上でUSBメモリーを起動できるようにしました。概略の手順は以下のようになります。
USBメモリーをfdiskでパーティション作成、IDはFAT16にしておく。
mkdosfsにてFAT16のファイルシステム作成。
# mkdosfs -F 16 /dev/sdc1
sys-freedos-linuxツールに含まれているperlスクリプトを実行して起動に必要なシステムファイルをインストール。
# ./sys-freedos.pl --disk=/dev/sdc1
ちなみに、この時アセンブラのnasmが必要になるので先にインストールしておきます。
FreeDOSのkernel.sysとcommand.comをUSBメモリーにコピー。
この2つのファイルはFreeDOSのfdboot.imgから入手できます。
# mount /dev/sdc1 /mnt/usb # mount -o loop fdboot.img /mnt/fd # cp /mnt/fd/kernel.sys /mnt/usb # cp /mnt/fd/command.com /mnt/usb # umount /mnt/usb # umount /mnt/fd
以上でFreeDOSが起動できるUSBメモリーができました。D945GCLF2で問題なく起動します。ちなみに使ったUSBメモリーはもう6年ぐらい前に購入したバッファローの128MBのもの。規格がUSB1.1どまりのやつです。当時たしか6千円ぐらいしたと思います。今は2GBで500円程度ですもんね。容量16倍で値段は1/12ですよ。
でも、会社で試してみたところ、デルのOptiPlexや富士通のノートPCは起動できません。デバイスとして認識されて、起動時にUSBメモリーにアクセスしてそのまま固まってしまうという現象です。BIOSとの相性なのか。ネットの情報でもできるマシンとできないマシンがあって、作り方もLinuxやWindows、DOSなどでいろいろあるので試行錯誤しかないようです。