気が向くまで(永久に?)、休止します。いろいろとやりたいことはあるのですが・・・ 2000.12.01
すみません、作成中です。というか、自分用のメモに近い物ですので、あまり期待しないでください。
また、MINIXの使いこなし講座でもありませんし、MINIXのすすめでもありません。念のため。(OSとして使うならLinuxなどを私も活用していますし、お薦めします。)
'98年4月に業務の一環としてソフトウェア関係の研修を受けました。
講義内容はOSについてでは無かったのですが、講師の方は分散オペレーティングシステムの理論から実装までこなす人で、技術に詳しく教え方も上手い方でした。
講義が終わってから、OSの実装について勉強したいのだが、なにを読んだら良いか聞いたところ、「MINIXのソースを読みなさい」とのことでした。
FreeBSDなどではだめか聞いたところ、使うならLinuxを薦めるが、勉強するならMINIXとの事でした。(実際、持っていたノートにはLinuxがインストールされていました!)
「理論を学び、きれいなソースを読まないと自分でコードが書けるようにはならない」とも言っていました。
尊敬できそうな人に言われると弱いので(笑)、よし、MINIXを勉強してみようと思い立ったのでした。 また、昔から自分でCPUとOSを作ってみたいと思っていたこともあって、FreeBSDのソースを読んでみようかと思った事もあったりするので、しばらくMINIXのソースを勉強することにしました。
目標:自分でOSの設計・実装を行う
とりあえず手元にある雑誌付録のCD-ROMをチェックしてみたが、LinuxやFreeBSDは見つかったものの、MINIXは無い。日本橋でMINIXの入っているCD-ROMが売っていないかチェックしてみたが無い。
これはAST先生の本を買うしかないかなぁと思っていたのですが、インターネットで
MINIXのWEBページを調べたら容量は17MB程度であることが判明したのでダウンロードしてしまった。
ライセンス規定について読むと、Prentice-Hall社が著作権を保有し、フリーでもGNUでもないそうです。ただし、教育・研究用には無償で使えるとあります。もちろん私は研究用途。
CD-ROMなどに収録されないのはこういう理由なのかな?
とりあえず本も発注しました。
Title:Operating Systems: Design and Implementation, 2/e Autors:Andraw S. Tanenbaum, Albart S. Woodhull Publisher: Prentice-Hall
ドキュメントにあるとおりにFDを9枚作って順にインストールするだけの簡単な手順です。
以下に手順を書きます。
FDの作成。
ダウンロードしたファイルをfdvol.exeを使ってFDに書き込む。以下の9枚になるでしょう。
root+usrディスクをFDDに入れ、PCを起動します。
|Hit a key as follows: | | = Start Minixで = キーを押す。
|Finish the name of device to mount as /usr: /dev/に対してfd0cを入力。(/dev/fd0c)
|noname login: に対してrootでログイン。#setup
|Keyboard type? [us-std]に対してキーボードタイプを選択。us-stdかjapaneseになると思います。
| Select deice ----first---- --geom/last-- ------sectors----- | Device Cyl Head Sec Cyl Head Sec Base Size Kb | /dev/hd0 1010 6 55 | 0 0 0 1009 5 54 0 333300 166650 |Num Sort Type | 1* hd1 04 DOS-16 0 1 0 186 5 54 55 61655 30827 | 2 hd2 00 None 0 0 0 0 0 -1 0 0 0 | 3 hd3 00 None 0 0 0 0 0 -1 0 0 0 | 4 hd4 00 None 0 0 0 0 0 -1 0 0 0 | |at-hd0: WDC AC1170F
| Select deice ----first---- --geom/last-- ------sectors----- | Device Cyl Head Sec Cyl Head Sec Base Size Kb | /dev/hd0 1010 6 55 | 0 0 0 1009 5 54 0 333300 166650 |Num Sort Type | 1 hd1 04 DOS-16 0 1 0 186 5 54 55 61655 30827 | 2* hd2 81 MINIX 187 0 0 1009 5 54 61710 271590 135795 | 3 hd3 00 None 0 0 0 0 0 -1 0 0 0 | 4 hd4 00 None 0 0 0 0 0 -1 0 0 0 | |at-hd0: WDC AC1170Fw ,yでパーティション情報を書き込み。
|dev/に対してhd2を入力(/dev/hd2)
|Root subpartition: /dev/hd2a 1440kb |/usr subpartition: /dev/hd2c rest of hd2
|Scanning /dev/hd2c for bad blocks.いまどきのハードドライブにエラーが有ることはそう無いと思いますが、念のためチェックをしておいたほうが良いでしょう。
|halt | |boot hd2でHDDからブートするので、rootでログインする。
|noname login:|# setup /usr |What is the size of the images on the diskettes? [all] [RET] |What floppy drive to use? [0] [RET} i386\usr.taz 1/3, 2/3, 3/3を順に入れる。(各種コマンド) 同様に setup /usrで sys.taz 1/2, 2/2とcmd.taz 1/3,2/3,3/3をインストール。
|# df | |Device Inodes Inodes Inodes Blocks Blocks Blocks Mounted V Pr | total used free total used free on | ----- ----- ----- ----- ----- ----- ------- - -- |/dev/hd2a 480 201 279 1440 333 1107 / 2 rw |/dev/hd2c 16800 2667 14133 134354 20258 114096 /usr 2 rwホストネームの設定
|# echo mini > /etc/hostname.fileブートモニタの設定
|hd2a>minix(=,MINIX){boot} |hd2a>dos(d,MS-DOS{boot hd1} |hd2a>main(){trap 3000 minix; menu} |hd2a>save |hd2a>menurootのパスワード設定と一般ユーザアカウントの作成。
|#passwd |# adduser atoc other /user/atoc一般ユーザでログインし、パスワードを設定する。
|# login atoc |Passwd |$ |$ passwdあとはシェルの設定など、好みに応じて設定しましょう。
|# cd /usr/src/tools |# make約11分でコンパイル終了。(real 11:08.00 user 7:25.90 sys 2:30.40)
|# make fdboot
ENABLE_NETWORKING 1 NR_PROCS 64 NR_PTYS 8ブート時のパラメータに
DPETH0=300:10/etc/rc.netにネットワークアドレス設定を入れる。
ifconfig -h 192.168.1.15 -n 255.255.255.0/etc/profileにタイムゾーン設定を入れる
TZ='JST-9' export TZ
MINIXをインストールして、適当に使ってみたらどうも使いづらい。理由は明らかで、シェルの機能が低いことと、エディタがmuleでないためです。シェルはbashかtcsh、せめてcshぐらいは使いたいものです。
OSの勉強が目的であり、ソフトの移植や操作環境の向上はあまり手をかけたくないのですが、シェルぐらいは準備する必要が有るでしょう。
GNU方面のソフトなら「configureしてmakeすればオッケー」ぐらいに考えていたのですが、MINIXはそうではなかった…。shellの機能が少ないのか、makeが弱いのか、ライブラリの問題なのか、不明です。結局自分でmakefileを作って完成しました。あっさり移植できないとかえって燃えるもので、半分パズル感覚で遊んでしまいました。
ここまでが準備運動ですね
UNIX系のOSのソースコードを読む時は、ファイルが多数ありすぎてどこから手を付けたらよいのか良く判りません。データ構造を把握するべきなのか、init.cあたりから読むべきなのか、と考えていたらたOperating Systems: Design and Implementation, Second Editionが到着。ぱらぱらっとめくってみたところ、判りやすい(気がする)。ast教授って優れた教育者なのでは?なんて思うほど。ということで、もっと先に進みたい人はこの本を買いましょう。というのはほとんど本気です。
#しかし、このレートの高い時に買ったのは失敗だったかなぁ…。
'98.5.30に梅田(大阪)の書店でOperating〜の邦訳を発見。うーむ、原書を買った後で訳書がでるとは。安くなかったけれど、ソースコードのコメントまで訳してあったのでそのうち買うかも…。