最近のPCのBIOS更新はWindows上やLinux上から実行することができて、非常にらくちんになっているのだが、うちにはWindowsもLinuxも入っていないマシンというのがある。そして、最近はUSB-DVDドライブでブートして、OSをインストールすることが多く、当然のことながらFDDなんつーものもついていなかったりする。
そこで、CD-ROM ブートするDOS環境を作って、そこからBIOSの更新をかけましょうというのが今回の趣旨です。
前提: できるかぎり FreeBSD 環境で作りたい。 できるかぎり手間をかけたくない。 できるかぎり Free なソフトで作りたい。
ということで、FreeDOS を使うことに決定。そして、FreeDOS はブータブルなインストールCDがあるので、それに手を加えることにします。
用意するもの: ネットワークにつながったFreeBSDマシン
FreeDOSのインストールCDのイメージを入手する。 http://www.freedos.org/ から、イメージを入手します。 ここでは、ブートさえしてくれればいいので、fdbasecd.isoを拾ってきます。もうひとつ、FDイメージも取得。 http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img
中のファイルを適当なディレクトリに解凍する。
$ mkdir tmp/freedos $ sudo mdconfig -a -t vnode -f fdbasecd.iso -u 4 $ sudo mount -t cd9660 -o ro /dev/md4 /mnt/cdrom $ cp -R /mnt/cdrom/* tmp/freedos $ chmod -R +w tmp/freedos/* $ sudo umount /mnt/cdrom $ sudo mdconfig -d -u 4ブートディスケットのイメージをマウントして書き換える。
$ sudo mdconfig -a -t vnode -f fdboot.img -u 4 $ sudo mount -t msdosfs /dev/md4 /mnt/fd $ cd /mnt/fd $ sudo rm -rf driver/ freedos/ fdconfig.sys $ sudo cp ~/tmp/bios.exe /mnt/fdこの辺は適当に環境に合わせてください。$ cd $ sudo umount /mnt/fd $ sudo mdconfig -d -u 4書き換えたイメージをコピーする。
このブートCDはisolinux を使っているため、tmp/freedos/isolinux/isolinux.cfg を覗くと、どこにブートイメージがあるか書いてある。
そのファイルをいま修正したイメージと置き換えます。
$ mv tmp/fboot.img tmp/freedos/isolinux/data/fdboot.img
5. 書き換えたファイルともどもisoファイルに変換する。
$ mkisofs -R -D -V “FreeDOS 1.0” -o freedos.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table tmp/freedos
ここで、出来上がったiso イメージをCD-Rに焼くまえに、エミュレータで確認しておきます。今回は VirtualBox 3 を使いました。別にVMWare でも QEMU でも何でもかまいません。VirtualBox を使ったのは FreeBSD の ports にあるから。
- 適当なiso イメージが焼けるソフトでCD-Rに焼き付ける。
エミュレータで確認して、問題ないと思ったら、実際にCD-Rに焼き付けましょう。
$ sudo burncd -f /dev/acd0 -d data freedos.iso fixate - できあがり。。