FreeBSD(98)のブートセレクタをDOSで試す
まりも(DOSsoft)
2020年2月27日 作成
太古の昔の「標準フォーマット」はとっくに標準ではなく、「拡張フォーマット」が長いことPC-98の普通のフォーマット形式でした。これにつきものが「固定ディスク起動メニュー」です。古いDOSに付属のフォーマッタではバージョン1.00〜1.06が、新しいDOSのフォーマッタ(たぶん4.xx以上)ではバージョン2.00〜2.70までのがあります。Windows 95に対応しているのは2.70以降であり、それ以前のバージョンは大容量ブートに失敗するなどの問題を抱えています。したがって可能な限り2.70にしておくべきです。
フォーマットをするにも正規のMS-DOSまたはWindows、その他のOSが必要となります。フォーマッタ自体はなんとかフリーソフトでまかなうことはできますが、ブートに必要なIPLと起動メニューは、ほとんど古文書化しているといってもまだNECの著作権の及ぶモノです。勝手に二次的に配布してよいとはいえません。2019〜2020年現在、フリーなDOSであるFreeDOS(98)の98への細かい移植も進められており、IPLとブートセレクタもfreesoftを使ってみたいところですが、IPLはともかく固定ディスク起動メニューを解析して同等のものを違うコードで作るとなると大変です。
しかし98には1990年代末頃からFreeBSD(98)が存在しており、そのためのIPLとブートセレクタは存在していました。その作者さんのサイトはこちらになります。
http://www.nendai.nagoya-u.ac.jp/~kato/FreeBSD/index.html
http://www.nendai.nagoya-u.ac.jp/~kato/FreeBSD/98bs/index.html
2007年にはバージョン1.2としてIPLwareに対応したことがGitHubでも公開されています。
https://github.com/freebsd/freebsd/commit/5b2161e51b74d960f1d95724c0753ecf4a35b483
ブートセレクタもBSDライセンスということが明記されています。
このほどリウさんという方が、ブートセレクタの著作者KATO Takenoriさんの許諾を得て、バイナリの形で公開されることになりました。 このGoogle driveにある「pc98_boot_selector.7z」がそれです(2020-4-4文末に追記あり)。公開に至った経緯など詳細はダウンロードしてreadme.txtお読みください。
ダウンロードしたものを解凍すると FreeBSD.MBRというバイナリファイルが得られます。これは現在稼働しているFreeBSD(98)のディスクドライブ(セクタ長512バイト)のMBRから9216バイトを抜き出したものです。先頭1セクタ(512バイト)はブートセクタのIPL、次の1セクタはダミーのパーティションテーブル、その次からがブートセレクタです(さらにディスク署名まで付いています)。これの有効なデータがある部分をハードディスクにコピーすれば、固定ディスク起動メニューと置き換えて使用することは可能ですが、パーティションテーブルや署名はコピーしてはいけません。
そこで、固定ディスク起動メニューを後から書き込むツールである IPL_MENU をこのブートセレクタのバイナリデータにも対応させました。これにより、DOS上でFreeBSD(98)のブートセレクタへの置き換えができるようになりました。IPL_MENUはおそらくFreeDOSでも実行できるはずです。またこのブートセレクタからFreeDOS(98)が起動できることは既に確認されています。
NECの固定ディスク起動メニューでは、デバイスを選択しただけではそのデバイスにどんなパーティションがあるかわからず、右矢印→キーを操作しないとパーティションリストが表れませんが、FreeBSD(98)のブートセレクタはデバイスを選択するとすぐに右側にパーティション名が表示されるので、目的のパーティションがどのデバイスにあるか忘れているようなとき、誤った操作をしにくいと言えるでしょう。わずかな違いといえば「ブート不可」のパーティションをスキップせず選択できることです。それでもいきなり起動ではなく、本当にブートするのかという再確認の問いが出ます。ブート可否はこの時点で決められるというのは隠れた利点でしょう。
Free環境で98のブートまでが構築できることはすばらしいです。あとは完璧なフォーマッタがあればというところでしょう。
2020-2-27,2021-4-4 まりも(DOSsoft)