最近のPCのBIOS更新はWindows上やLinux上から実行することができて、非常にらくちんになっているのだが、うちにはWindowsもLinuxも入っていないマシンというのがある。そして、最近はUSB-DVDドライブでブートして、OSをインストールすることが多く、当然のことながらFDDなんつーものもついていなかったりする。
そこで、CD-ROM ブートするDOS環境を作って、そこからBIOSの更新をかけましょうというのが今回の趣旨です。
前提:
できるかぎり FreeBSD 環境で作りたい。
できるかぎり手間をかけたくない。
できるかぎり Free なソフトで作りたい。
ということで、FreeDOS を使うことに決定。そして、FreeDOS はブータブルなインストールCDがあるので、それに手を加えることにします。
用意するもの:
ネットワークにつながったFreeBSDマシン
1. FreeDOSのインストールCDのイメージを入手する。
http://www.freedos.org/ から、イメージを入手します。
ここでは、ブートさえしてくれればいいので、fdbasecd.isoを拾ってきます。もうひとつ、FDイメージも取得。
http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1....
2. 中のファイルを適当なディレクトリに解凍する。
$ 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
3. ブートディスケットのイメージをマウントして書き換える。
$ 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
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 にあるから。
6. 適当なiso イメージが焼けるソフトでCD-Rに焼き付ける。
エミュレータで確認して、問題ないと思ったら、実際にCD-Rに焼き付けましょう。
$ sudo burncd -f /dev/acd0 -d data freedos.iso fixate
7. できあがり。。