MINIX2 を VirtualBox で動かしてみた


成長を促す教育用 OS としての Minix2

アンドリュー・タネンバウム教授の Minix は教育用として有名で、現在維持されているのは Minix3 http://minix3.org/ になります。

Minix3 は OS 教育・研究用としても使いつつ、それまでの Minix, Minix2 とは違い実用 Unix OS として必要な機能を備え、ライセンスも BSD 類似のオープンソースにすることで、フォークやコントリビューションを可能にしたより現代的なオープンソースの OS プロジェクトとなっています。

一方で Minix2 は教育専用で、ライセンス的に自由に改変可能なものではなく、ほぼちゃんとした Unix ではあるものの実用性は乏しいという 絶妙な味付け となっています。(追記:2000年4月に Minix は BSD スタイルのライセンスに改訂され、Minix 2.0.4 も BSD スタイルのライセンスです)

つまり Minix2 を学んだ後は、そこで溜まったフラストレーションを別の OS (今なら Linux など)開発で貢献するか、 自分で自分の OS を始める するしかないわけです。こうしてそのフラストレーションをエネルギーに Linux はじめ多くの OS が産まれました。(追記:2000年以前の話になります)

Minix2 を VirtualBox で使ってみる

そんな成長を促す Minix2 ですが、最終版の Minix 2.0.4 がダウンロード可能状態では存在しているものの、フロッピー時代の配布物なので今の PC でインストールするには多少の工夫が必要となっています。

何の役に立つのか自分でもよくわかりませんが、今回 VirtualBox で動かすことが出来るのを確認しましたので、その方法を共有したいと思います。

必要なもの

  • VirtualBox がインストールされていること
    • どのバージョンという明確な指定はないですが、nobuh が使ったのは Ubuntu 19.10 でインストールした VirtualBox 6.0.14 です
  • bzip または gzip を解凍可能なツール
  • dd コマンド
    • 分割されていないフロッピーの生イメージを 1.4MB で分割する作業があり dd コマンドを使います
    • VirutlaBox のホスト OS で dd コマンドを装備している必要はなく、別マシンでのイメージ編集でもよいのでホスト OS は Windows でも何でもかまいません

ダウンロード

過去バージョンのダウンロードページ https://wiki.minix3.org/doku.php?id=www:download:previousversionsIntel-2.0.4 の bzip か gzip か、持っている解凍ツールに合わせて選んでダウンロードし解凍してください。サーバーが細いのか無茶苦茶時間かかります

仮想マシン作成

  • OS タイプ Other バージョンは DOS
  • メモリ 32MB VRAM 9MB HDD 500MB の提示されたサイズでよいです
  • 要するに IDE のディスクコントローラー、フロッピーのコントローラーがついていれば問題ないです
  • フロッピードライブは2台ほしいので1台増やします
    • ストレージ のメニューで コントローラー:Floppy 右横にある + アイコンを押して (下の方の +- アイコンはコントローラー自体の追加なので違います)
    • 空のままにする でドライブを追加します
  • 設定全体

フロッピーイメージ作成

解凍した i386 ディレクトリにある ROOT.MNX USR.MNX USR.TAZ がインストール時に使うフロッピーイメージです

Intel-2.0.4/i386/
├── DOSMINIX.ZIP
├── NET.TAZ
├── ROOT.MNX
├── USR.MNX
└── USR.TAZ

VirtualBox がフロッピーとして読み込むには、どうやら以下の条件がありそのままでは使えません

  • サイズは 1440k 固定。中の使用量が小さい場合も 0 埋めなどしてこのサイズであること
  • ファイルの拡張子は .img MNX とか TAZ とか駄目

この条件を満たせるように以下のコマンドを実行します

cd Intel-2.0.4/i386/
cp ROOT.MNX ROOT.img
cp USR.MNX USR.img
dd if=USR.TAZ of=USR1.img bs=1440k count=1 skip=0 conv=sync
dd if=USR.TAZ of=USR2.img bs=1440k count=1 skip=1 conv=sync
dd if=USR.TAZ of=USR3.img bs=1440k count=1 skip=2 conv=sync

インストーラー起動

フロッピー0 に ROOT.img をマウント、フロッピー1に USR.img をマウントし仮想サーバーを起動します

ブートローダーでメニューは = しかないので選ぶ余地は無いですが、ブートローダーは英語キーボードのみとなっていますので、日本語キーボードの方は ~ を代わりに押してください

インストールの2枚フロッピーのうち USR をマウントしたドライブを聞かれますので fd1

root のパスなしでフロッピーのインストーラーの OS (今でいう Live CD と同じですね)に入れました

setup 実行

これだけでも雰囲気は味わえますが、HDD にインストールしないと醍醐味は味わったと言えないので setup を実行します

いろいろ言われますが気にせず RETURN

キーボードを聞かれますので日本語キーボードな人は japanese を選びましょう

いよいよパーティション作成ですという説明が出ますが RETURN を押します

タネンバウム教授の part というパーティションレイアウト編集ツールの実行画面になりました。デバイス /dev/c0d0 を反転表示で選択中の状態のまま r をタイプし現状のレイアウトを読み込みます。

P0 - P3 と4つ定義されているようですが、タイプが 00 None と表示されているパーティションは書き込みされない仕様となっています。(逆にタイプを 00 にすることでパーティションの削除を行う仕様らしい)

カーソルを P0 パーティションのタイプの数字 00 のところに持って行って、81 と打つと以下になります

この例のようにパーティションレイアウトの数字が 反転表示 になっているのは異常。明るい強調表示になっているのは 要注意 の設定とのことです。 m キーがおすすめの数字を自動選択してくれることになっていますので使います。

まずは Base の列にカーソルを持っていて m を1回タイプします

ジオメトリの Head が 0 で白く光ってますが気にせず、 Size 列に移動して m を1回だけタイプします

警告もなくなりましたので 500MB のディスク全部が p0 になったようです。Minix2 は1パーティション最大 1GB なのでご注意ください

w をタイプして書き込みます

確認がありますが y です

書き込みは行っても part は終了してくれないようなので自分で q をタイプして終了します

今まで作ったディスクとパーティションの名を聞かれますので c0d0p0 を指定します

次にスワップスペースのサイズを聞かれます

0 でよいのでそのまま RETURN をタイプします。

最後に確認がありますので RETURN をタイプします。

昔のディスクは不良セクタの自動メンテなどが効いてないことがあったのか、インストールが自分でスキャンを行います。不要でしたら DEL で止められるようですがすぐ済みます。

USR ディスクからのコピーが終わると、ROOT ディスクの場所を聞かれますが

0 のままでよいのでそのまま RETURN をタイプします。

ROOT のコピーも終了して以下の表示が出れば最小 setup は完了です

仮想フロッピーを抜いていちど起動してみましょう。(ブートマネージャーは相変わらず英語キーボードしか認識していないので注意!)

/usr への追加インストール

最小インストールでは vi などコマンドが入っていませんので、最初に作成しておいた USR.TAZ をもとにした3枚フロッピーを使って /usr へ追加ソフトをインストールしていきます。setup /usr を実行します

フロッピーのサイズを聞かれますが [all] でよく、またドライブも [0] でよいので RETURN を押していきます

1枚目の挿入を要求されますので、ウィンドウ下部のメニューのフロッピーアイコンを右クリックして、作成しておいた USR1.img をマウントし RETURN を押していきます

以降 USR2.img USR3.img と続けてマウントして RETURN を押して読み込ませます

以上でインストーラーは終了です。vi などツールが動いていれば無事終了です!

ソースなどさらなる追加パッケージは配布の src ディレクトリに格納されています。こちらも TAZ 拡張子になっていますがフロッピーイメージですので 1440k に分割しておいて、setup /usr コマンドで /usr/src などにインストールされますので挑戦してみてください

  src/SYS.TAZ           - Operating system sources (libary, kernel, etc.)
  src/CMD.TAZ           - Commands sources (cp, ls, mkdir, etc.)
  src/FIX.TAZ           - Fixed RTL8139 driver (install last)

まとめ

  • 教育用 OS の趣が強く Linux を生み出す土壌となった Minix を現代でも体験することが出来ました
  • DOS 時代の Minix を VirtualBox を使って動かすことが出来ました。同様のアプローチで他の DOS 時代のソフトを使うことが出来るので応用範囲は案外広いかもしれないです