FreeDOSのイメージをPXEでブートする
2015年でもDOSを起動しなければならないことがあって、BIOSのアップデートとかBIOSのアップデートとかBIOSのアップデートなんだけど、2015年なのでフロッピードライブとか用意するのは簡単ではないし、何よりアップデート対象のマシンがデータセンターに置かれていたりすると、フロッピーをさすためだけにデータセンターに入館するのは正直しんどい。これはフロッピーがUSBフラッシュメモリーになっていたとしても同じだと思う。辛い。
そこでネットワークブートできないかなと色々試してみたらこれは行けそうみたいな方法を自分なりに確立したのでメモを残しておこうと思います。
技術的な話題が久しぶりな感じですが少々お付き合いください。
基礎知識
PXEについて
DOSイメージを作成する
FreeDOSのツールを使ってブート可能なDOSのイメージを作成します。
必要パッケージ
FreeDOS関連ファイル
## 必要なパッケージをインストールする aptitude install dosfstools nasm unzip wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/sys/sys-freedos-linux/sys-freedos-linux.zip unzip sys-freedos-linux.zip wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img ## 20Mの空ファイルを作成する(必要なサイズに合わせて用意するとよい) dd if=/dev/zero of=dos.img bs=1M count=20 ## DOSファイルシステムを作る mkfs.msdos dos.img ## dos.imgはbootableではないのでブートセクターを書き込む ./sys-freedos.pl --disk=dos.img ## FreeDOSからいくつかファイルをコピーするのでマウントする mkdir /mnt/freedos /mnt/dos_img sudo mount -o loop fdboot.img /mnt/freedos sudo mount -o loop dos.img /mnt/dos_img ## COMMAND.COMとKERNEL.SYSをコピーする sudo cp /mnt/freedos/{command.com,kernel.sys} /mnt/dos_img ## BIOSのアップデート用のファイルなど必要なファイルがあればここでコピーをする # sudo cp /mnt/freedos/bios_files /mnt/dos_img ## アンマウントする sudo umount /mnt/freedos sudo umount /mnt/dos_img
これで、dos.imgはBOOT可能なイメージになる。
PXEからBOOTする
ブート可能なdos.imgが用意できたので、これをPXEでブートすればいい。
ブート用kernelにはsyslinuxのmemdiskを使う。
memdiskを使うとfloppyイメージやisoファイルなどから簡単にブートできる。(今回作ったのはフロッピーイメージ)
memdiskはkernel.orgからダウンロードできる。
syslinux-6.03.tar.gz のようなファイルをダウンロードして展開。
bios/memdisk/memdisk
のような場所にファイルがある。
ファイル配置
freedos/ freedos/memdisk freedos/dos.img
pxelinux.cfg/default の設定例
label freedos kernel freedos/memdisk append initrd=freedos/dos.img raw noedd
これで起動したら完成なので、あとはよしなに。
終わりに
最後のほうは適当な感じになりましたが、まあこれでデータセンターに行かなくてもよくなりました。
2015年ですが、まだまだDOSが必要な環境もあるのでこの記事が役に立つといいですね。