FreeDOSをUSBメモリにインストール
BIOSの更新というと、ブートフロッピーディスクに新しいBIOSイメージを入れて、そのフロッピーディスクを起動して更新というのが定番。でも、最近はWindows環境でもブートできるフロッピーディスクを作成できなくなっている。それより、フロッピーディスクドライブそのものがPCになかったり、フロッピーディスクの入手自体が困難になっている。BIOSの更新って、どうしているんだろう...。Linuxユーザは、以前からそれに悩まされていた。
というわけで、救世主となるのがFreeDOSで、これは今は亡きMS-DOSに代わるオープンソースなディスクオペレーティングシステム。これをディスクじゃないけどUSBメモリにインストールしてみた。参考にしたのはCreating FreeDOS USB boot stick for BIOS flashingで、ここではWindows環境で次の手順でしている。
- Delete all partitions on your stick
- Create one primary partition and mark it as active
- Format that partition using FAT32
- syslinux\syslinux.exe -fma X:
- xcopy usb-root\* X:\ /E/H/I
- copy your flash tool and flash binary into the flash\ folder
- Reboot
- press [Enter] at syslinux boot: prompt
- double press [Enter] while your asked to change date and time
- your done! have fun!
誰にでもWindows環境がある時代じゃない(嘘)というわけで、Linux環境だけでやってみた。USBメモリの中には、大容量のフロッピーディスクのように拡張してパーティションのないスーパーフロッピー形式のものがあって、その場合はfdiskでハードディスク形式として1つのパーティションを作成する必要がある。ほぼ、Windowsuと同じように実行すれば大丈夫だけれど、パーティションのフォーマット形式は、FAT16のままにしておいた。ここでFAT16になっているけれど、実際はファイル名は主ファイル名8文字+拡張子3文字の制限を越えて利用できるので、Linux環境ではFAT16でもWindows環境ではFAT32である。
# wget http://goebelmeier.de/bootstick/bootstick.zip asking libproxy about url 'http://goebelmeier.de/bootstick/bootstick.zip' libproxy suggest to use 'direct://' --2011-10-22 16:36:45-- http://goebelmeier.de/bootstick/bootstick.zip goebelmeier.de をDNSに問いあわせています... 81.169.133.72 goebelmeier.de|81.169.133.72|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 1607529 (1.5M) [application/zip] `bootstick.zip' に保存中 100%[============================================================================>] 1,607,529 38.1K/s 時間 31s 2011-10-22 16:37:16 (50.6 KB/s) - `bootstick.zip' へ保存完了 [1607529/1607529] # unzip bootstick.zip Archive: bootstick.zip inflating: BootStick/howto.txt .... inflating: BootStick/usb-root/syslinux.cfg # cd BootStick/ # fdisk /dev/sdd コマンド (m でヘルプ): p ディスク /dev/sdd: 1017 MB, 1017117696 バイト ヘッド 33, セクタ 63, シリンダ 955, 合計 1986558 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdd1 63 1985444 992691 6 FAT16 コマンド (m でヘルプ): a パーティション番号 (1-4): 1 コマンド (m でヘルプ): p ディスク /dev/sdd: 1017 MB, 1017117696 バイト ヘッド 33, セクタ 63, シリンダ 955, 合計 1986558 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdd1 * 63 1985444 992691 6 FAT16 コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。 # syslinux /dev/sdd1 # mount /dev/sdd1 /mnt/sdd1 # cp -a usb-root/* /mnt/sdd1 # sync # umount /mnt/sdd1
これで、最後の4つのおまじないをする。
- 再起動
- SYSLINUXのプロンプトboot:が表示されたら[Enter]
- 日時の変更を確認するので、(必要に応じてそれぞれ)[Enter]
- そして楽しむ!
最後がいちばん大事かな。久しぶりのDOS体験なので、しっかりコマンドを忘れている自分にちょっとショック。僕の環境では、USBメモリは/dev/sddだったけど、それぞれ違うから適宜/dev/sddなどは変更して、素敵なFreeDOS環境をひとつ持っておこう!