初めまして、Qiita初投稿のnsan と申します。 よろしくお願いします。
タネンバウム教授の Minix はLinux の元になったOSとして有名で、私もアスキー出版の「MINIXオペレーティング・システム」のMINIX 1.5 をPC-9801にインストールして勉強しました。
思えば、初めて大規模なプログラムを見た経験でした。 さすがに先生がコードまで書かれているので一貫性があってわかりやすく、C言語のプログラムの書き方がよくわかります。 現在も同様のOSがあれば良いのですが、Linuxは複雑になってしまい良い材料が無いように思います。
ここでは、MINIX 2.0.4 のTelnetとFtp をVirtualBox下で動かすことが出来たので共有したいと思います。 LANのドライバを変更してOS本体のカーネル再構築をしています。 MINIXではOSのソースコードだけでなく、ash やawk などのコマンドもソースコードが付いているので、OSの仕組みが知りたい人には最適と思います。 C言語のコンパイラについては、Amsterdam Compiler Kit をベースにした物に変更されたのでソースコードは無いです。
素直にVMWare Player を使わないのは、非商用利用のメッセージが煩わしいためです。 IT関係の仕事をしていると、どこまでが非商用か判断つかず勧めづらいので、フリーのVirtualBoxを使っています。
本家のMINIX 2.0 だとLANカードがNE2000なのでVirtualBoxでネットワークが使えないです。 ショートカットして、VMWare用のディスクイメージを以下のサイトからダウンロードします。
https://minix1.woodhull.com/pub/demos-2.0/VMWarePlayer/
minix204vmwp01.zip をクリックしてダウンロードしてください。 ZIPファイルを解凍して、mx204d0.vmdk だけ利用するので、ディレクトリ「%HOMEPATH%"VirtualBox VMs"」などにコピーしてください。
##仮想マシン作成
- OS タイプ Other バージョンは DOS
- メモリ 32MB VRAM 9MB HDD 500MB の提示されたサイズでよいです
- 要するに IDE のディスクコントローラー、フロッピーのコントローラーがついていれば問題ないです
ディスクを先ほどのファイル mx204d0.vmdk に変更します。 最近のVirtualBox はVMWare用のディスクファイルもそのまま利用できるようになりました。
ネットワーク設定で割り当てを、「ホストオンリーアダプター」 、高度をクリックして展開し、アダプタータイプを「PCnet-PCI Ⅱ(Am70C970A)」に変更します。
#起動します
ここで、= をタイプする必要がありますが、英語キーボード前提なので日本語キーボード利用の場合は、=の右隣の[^]を押下します。
DHCPでアドレス 192.168.56.101 を取得して起動しますが、ネットワークが使えません。
コンソールからroot でログインできます。 また、以下のコマンドでログイン後に日本語キーボードに変更できます。
loadkeys /usr/lib/keymaps/japanese.map
TCP/IPネットワークが使えないのは、LANカードドライバ(lance.c)の初期化ビットが違っているようなので修正します。 みつけるのに2週間ほどかかりました。
# cd /usr/src/kernel
# vi lance.c
以下のように、/usr/src/kernel/lance.c の796行目で、0x142 を 0x0043 に変更します。
796: out_word(ioaddr+LANCE_DATA, 0x0043); /* start && enable interrupt */
/usr/src/tools に移動し、カーネルの再コンパイルを行うため,make hdboot を実行して、再起動します
# cd /usr/sec/tools
# make hdboot
#
# shutdown -r now
Telnetでログインするためには、パスワードが必要です。
# passwd
Changing the shadow password of root
New password:
Retype password:
/etc/serv.access の内容が間違っています。
telnet ftp: +* log;
で* が使えなくて全て禁止になっているので、 * を削除して以下のようにします。
# /etc/serv.access
# 2006-05-21
# See the serv.access(5) man pages to learn how to edit this file
# to make your system safe on the network.
# this is insecure! replace with something more specific asap
telnet ftp: + log;
# this is better, keep outsiders out
# telnet ftp: +*.local log;
viなど使用する場合に、画面サイズが80文字、24行に決め打ちなので、コマンドプロンプトのウィンドウサイズを変更します。
Telnetします。 IPアドレスは、VirtualBoxの環境設定によって違う事があります。
C:\Users\temp> telnet 192.168.56.101
ftpd は、shell script /usr/etc/rc
でコメントアウトされているので、66行目先頭の# を削除して再起動すれば利用できますが、demonaize はshell script の関数なので、コマンドラインから起動できません。 ftpが使えるとWinSCPのEditorで編集も出来るので便利です。 /usr/etc/rc はstartup script /etc/rc から呼ばれています。
51 | if [ "$net" ]
52 | then
53 | if [ -f /etc/rc.net ]
54 | then
55 | # Let a customized TCP/IP initialization script figure it ou
56 | . /etc/rc.net
57 | else
58 | # Standard network daemons. Be sure network is secure before
59 | # enabling those that are initially disabled here.
60 | daemonize dhcpd -d3
61 | daemonize nonamed
62 | # daemonize talkd
63 | # daemonize tcpd shell in.rshd
64 | # daemonize tcpd login in.rlogind
65 | daemonize tcpd telnet in.telnetd
66 | # daemonize tcpd ftp in.ftpd
67 | fi
68 | fi
69 |
:set number
シャットダウンするのは、shutdown -h now
です。 d0p0s0> プロンプトが出たら電源オフして構いません
以上、少しでもみな様の参考になれば幸いです。