2010/03/12私(鷲北)が学生の頃(1992年ぐらいの話です)、OS概論という授業がありました。教科書はタネンバウム著「MINIXオペレーティングシステム」で、すごく高くて買うのに躊躇する本です。当時この本は私が筆者として出入りしていたアスキーから出版されていたので、担当さんに頼みこんで一冊もらえないか交渉してみました。新品はくれなかったのですが、校正用に取ってあったものを譲り受け、授業に持ち込むことができました。ところどころに赤が入ってて、思えば貴重な一冊だったのですが、卒業後3回ぐらい引っ越すうちにどこかへまぎれてなくしてしまいました。この本はとても分厚くて、巻末にはMINIXのソース・ダンプが数百ページに渡って掲載されている無茶な本です。説明は平易でおもしろく、眠れない夜には枕に最適でした。好きだったのが競合を説明する章で紹介されている「食事する哲学者」のページで、あれは結構分り易かった、できればもう一度読み直してみたいもんだと思っていたのでした。最近になって「もしかしたら古本があるかも?」と思い立ち、Amazonで検索してみました。したら驚いたことに第3版が2005年に出ているではありませんか。出版社はピアソンに変わっていますが、中身はだいたい同じのようです。いうわけでAmazonで注文して、懐かしの「哲学者」のページを見ることができたのでした。これを理解するには、1980年代から90年代にかけてのUnix事情を知る必要があります。当時のUnixはAT&Tが販売する有料のソフトウェアでした。価格は非常に高く、また動かすべきコンピュータ自体もミニコンと呼ばれる大型のもので、個人が簡単に手に入れて使うようなシロモノではありません。限られた企業か、コンピュータ学科をもつ大学にしかありませんでした。大学に対する販売ではライセンスが非常に安く(といってもやっぱり個人では買えないような価格です)、しかもソースコードつきで購入できたので、それを読んでOSを学ぶ学生が増えました。中にはBSDのように、独自の改造やソフトウェアのパッケージを追加して配布を始めるケースもでてきました。あるときAT&TはUnixのライセンスをより厳しいものに変え、ソースを勝手に利用できないようにしてしまいました。自由に流通し、改造されて成長してきた分野は一時的に冷え込んでしまいました。それを見て「使えないならゼロから作ろう」と決心したのが、オランダの大学で教授をしているタネンバウムでした。OSを開発し、MINIX(mini-Unix)と名付けたのです。ソースは完全に独自のものであったので、これを使って以前のように講義を行うことができました。理論だけでなく、実際に動く教材としてMINIXを示したのです。MINIXは教材であるため、実用に使われるOSに比べて足りない部分はいくらかあります(ちょうどPascalのような感じです)。コンパクトで軽いので、当時の学生が持っていたフロッピーディスクしかないパソコンでもちゃんと動きました。MINIXのソースを読んで研究し批判を加えたり改良を始めたりする人も現れました。した動きが盛んになり、生まれてきたのがLinuxなのですが、それはまた別の話です。現代においては、Unixのライセンス事情は大きく変わりました。LinuxはGNUライセンスの下おおいに開発が進み、一時は商用としてライセンスされていたBSDも書きかえられて無料の派生版がいくつか生まれました。これらはすべてインターネットでダウンロード可能で、利用ライセンスは自由度が高く、企業が実務で使用する本格的OSとして社会に完全に溶け込んでいます。さくらインターネットもその恩恵に大いにあずかっています。そんな現代においても、タネンバウム先生はMINIXの改訂を続けています。3は、ちゃんとインターネットにも対応しているようです。サイト上ではインストールCDのISOイメージも公開されているので、KVMで試してみるにはうってつけです。ゲストOSにネットワークを設定するというわけで前置きがとんでもなく長くなりましたが、今回はゲストOSにMINIXを据えて、インターネットアクセスが可能なように設定する手順をご紹介します。MINIXみたいなマイナーなOSを例に説明するなんて、どうせならもっとメジャーなOSで試せよ、と思われるかもしれませんが、最近のOSのインストーラはどれもよくできていて、特に説明なしでも簡単に設定できますから大丈夫です(よね?)。いうわけでインストールしてみたいOSの設定手順に合わせて、そのあたりは読み替えていただければと思います。ホストOSのネットワークをブリッジ化するホストOSをインストールしたとき、そのネットワークインターフェースはeth0になっています。これをホストOSとゲストOSで共有するために、仮想的なブリッジをホストOSに作ってeth0を接続する方法に切り替えます。ブリッジを利用するためにbridge-utilsをインストールします。12を使っている方なら、以下のようにすればOKです。bridge-utils次にifcfg-eth0を書き換えます。eth0に割り当てられたIPアドレスはブリッジインターフェースの方へ移動し、eth0は仮想化します。↓DEVICE=eth0ONBOOT=yes#IPADDR=192.168.12.46#NETMASK=255.255.255.0#GATEWAY=192.168.12.1BRIDGE=br0次にブリッジインターフェースbr0を作成します。/etc/sysconfig/network-scriptsの下にファイルifcfg-br0を作成します。ifcfg-eth0の変更前のアドレス設定をそのままコピーすればよいでしょう。DEVICE=br0ONBOOT=yesTYPE=BridgeIPADDR=192.168.12.46NETMASK=255.255.255.0GATEWAY=192.168.12.1作成できたら、networkサービスを再起動します。リモート環境で失敗するとネットワークが切れてそれっきりになってしまうので、アドレスや文字のつづりに間違いがないことを確認しましょう。]ブリッジが作成できたか確認するには、brctlコマンドを使います。eth0スクリプトを用意するゲストOSを起動する前に、qemuがコールするネットワークインターフェース起動時スクリプトを用意します。/etcディレクトリに、qemu-ifupという名前のファイルを以下の内容で作成します。$1chmodを使って実行ビットをたてておきましょう。ゲストOSをインストールするMINIXのインストールCD-ROMのISOファイルは、www.minix3.orgからDOWNLOADのリンクをたどっていけば最新版が見つかります。これをダウンロードしておき、ファイル名を指定します。ネットワークを使うために、qemuのコマンドラインに-netオプションを2つ加えます。nic,macaddr=xx:xx:xx:xx:xx:xx,model=e1000物理的なネットワークカードの設定をVMに追加する。MACアドレスはLANにおいてユニークなものを指定してください。既存のホストと同じアドレスを割り当ててしまうと大変なことになります。modelはエミュレーションするネットワークカードを指定します。マニュアルによるとデフォルトはe1000なのですが、なぜかrtl8139がセレクトされてしまうので明示的に指定した方がよいようです。tap,ifname=tap0tapはVM用のブリッジインターフェースです。ここで指定するifnameが、先ほど用意したqemu-ifupに渡され、ブリッジインターフェースと関連付けられます。コマンドライン全体はこのようになります。dMINIXをインストールする際、KVMオプションがオンになっているとMINIXがブートしません。やむを得ず-no-kvmオプションをつけています。CD-ROMブートに成功すれば、簡易なブートローダが起動します。loginプロンプトが出たらrootでログインします。パスワードはありません。MINIXのセットアップスクリプトは自動起動ではないので、手動で「setup」と入力して起動します。派手なメニューはありませんが、簡易に設定できるので楽に進められると思います。こだわりがなければデフォルトを選択し続ければOKでしょう。肝心のネットワーク設定ですが、Step8でMINIXが認識したNICの一覧が出ます。KVMの仮想NICが問題なく認識されていれば、このように表示されるはずです。問題なければ、そのままリターンキーを押します。続いてネットワークのアドレスやDNS等の設定画面になるので、環境に合わせて指定すればOKです。ディスクのフォーマットとファイルのコピーが終わるとsetupは終了します。最後に「shutdownしなさい」と指示が出るので、言われる通り実行します。これでインストールは完了です。プロンプトからexitまたはoffと入力すると、VMの電源が切れてqemuも終了します。ゲストOSを起動するインストールが終わったらCD-ROMを外して再起動します。起動スクリプトを書き換えます。d起動したらパスワードを設定し、ping等でネットワークが設定できていることを確かめてみましょう。ネットワークインターフェースの構成ここまでの設定を図にまとめるとこのようになります。ホストOS上でifconfigコマンドを使って確認してみると、以下のように表示されるでしょう。b)br0とeth0の関係は、スイッチファブリックとポートの関係になります。ホストOS本体のネットワークはbr0を介して行われます。tap0はqemuによってゲストOSのNICに結び付けられ、これがbr0を介して外界のネットワークとブリッジされるわけです。brctlコマンドを使うと、マッピングの状態が分ります。tap0ブリッジインターフェースは名前を変えて複数用意できます。2つ以上のNICを備えたホストの場合、それぞれのインターフェースごとに仮想ブリッジを作成して結び付け、さらにゲストOSに複数のNICを仮想的に用意して接続するなどの構成も可能です。詳しいことはqemuの-netオプションを熟読していただければと思います。一点だけ注意することは、KVMのNICはデフォルトでVLAN=0にリンクされているので、オプションをきちんと指定しないと簡単にループができてLANが破綻してしまいます。おわりに思いつきでMINIXをインストールしてみましたが、他のOSでもネットワーク設定を行う流れは同じですので、読み替えて実行してください。当方ではFreeBSD、Linux共に問題なくネットワーク接続できることを確認しています。MINIXで何をするかですが、実はただインストールしてみただけで何かに使う予定はありません。gccがmakeできるようなので、コンパイル環境さえ整えれば何でも動かせるように思います。気が向いたらApacheでもインストールして、Webサーバを立ててみようかなと思います。最後に肝心のNW設定を行ないます。参考にさせて頂いたのはさくらインターネットさんのブログ。接続イメージもこちらをご参考ください。ネットワークも設定できます。ここでは192.168.12.100とします。supportが有効になっていない理由については、サーバ管理者にお問合せください。si-captcha.phpプラグインによると、PHPにimagepng機能が見当たりません!PHPにimagepng機能が有効になっていない理由については、サーバ管理者にお問合せください。»12345678910111213141516171819202122232425262728293031。