成長を促す教育用 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:previousversions で Intel-2.0.4
の bzip か gzip か、持っている解凍ツールに合わせて選んでダウンロードし解凍してください。サーバーが細いのか無茶苦茶時間かかります
仮想マシン作成
- OS タイプ
Other
バージョンはDOS
- メモリ 32MB VRAM 9MB HDD 500MB の提示されたサイズでよいです
- 要するに IDE のディスクコントローラー、フロッピーのコントローラーがついていれば問題ないです
- フロッピードライブは2台ほしいので1台増やします
- 設定全体
フロッピーイメージ作成
解凍した 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 時代のソフトを使うことが出来るので応用範囲は案外広いかもしれないです