|
OSKitで遊ぼうこのページはVMware 2.x for Linuxをベースに記述しています.より新しいVMwareでも動くと思いますが,確認していません. UNIX USER2003年3月号に高野了成氏による "OSKitではじめるDIY感覚のOS開発 自分だけのOSを作ろう!" という記事が掲載されています.OSKitに興味がある人には一読をお勧めします.(このWebページも紹介されています.) 目次
OSKitとは何かOSKitは,一言で言えば,OSを簡単に作成するためのライブラリ群です.University of UtahのFlux Research Groupが開発しています.(私は1年間,Flux Groupに客員研究員として参加していました) OSを自分で作成する場合,ブートローダやデバッグプリントを実装するだけでも大変ですが,OSKitがそこらへんの面倒をみてくれるので,自分のOSを裸のハードウェア上で動作させることが比較的簡単にできるようになります. OSKitのライブラリには,以下のようなものが含まれています(一部).
例えば,コンソールに hello を出力するだけのカーネルなら,こんなに簡単です.
このページの主旨は OSKit を紹介することではなくて,VMwareを使ってどうやってOSKitで遊ぶかというのがテーマです. OSKitの入手とコンパイルOSKitは,OSKitのページから入手できます.最新版のスナップショットをダウンロードしましょう. コンパイルは,configure して GNU make を使って make するだけです.少なくとも Redhat Linux 7.1 ならば問題なくコンパイルできるはずです. ドキュメントには以下のものが必要と書いてあります.
以後,OSKitを展開してあるディレクトリを$OSKITで表します. VMwareを使って遊ぶLinux上でVMwareを使うと,自作カーネルを動かすためのコンピュータを用意しないでも,簡単に自作カーネルを動作させることができます.基本的な動作の流れは以下の通りです.
NetBootが含まれたGRUBフロッピーイメージの作成NetBootはOSKitに含まれているブートローダです. NetBootローダはイーサネットを使用してカーネルをロードするので,VMware が提供する仮想イーサネットインタフェース(AMD Lance)をサポートしたものが必要です.ただし,最新のOSKitのスナップショットは,NetBoot回りにバグがあって,VMware上で動かないので,動くように修正したフロッピーイメージをここに置いておきます.
これを適当なディレクトリに置きます.ここでは,/work/netboot/ に置いたとして説明します. 次に,VMwareのFile→Newメニューを使って,次のような仮想計算機を作ります.最初にこれから作る仮想計算機の設定ファイル名を聞かれるので,適当に入力してください.ここでは/work/vmware/netboot/netboot.cfgを作ることにします.
では,とりあえず動かしてみましょう.
うまくいけば,GRUBのメニューがでるはずです.
ここで,カーソルキーを使って "netboot from floppy, PC console" を選ぶと,GRUBがnetbootをロードし,次のような画面になるはずです.
BOOTPサーバの準備NetBootは,bootpプロトコルを使ってIPアドレスを取得するので,Linux側でbootpサーバを動作させる必要があります.bootpサーバとしては,VMwareのdhcpdを使えば良いでしょう. まず,先ほど作成した仮想計算機の MAC アドレスを調べます.Linuxの/var/log/messagesに次のようなメッセージが残っているはずです.仮想ネットワークのネットワークインタフェース名もわかります(ここではvmnet1).
Linuxのvmnet1側のネットワークアドレスを確認しておきます.これはVMwareインストール時に選択しているはずです.ここでは192.168.0.1を使っています.
/etc/vmware/vmnet1/dhcpd/dhcpd.confに,hostエントリを一つ追加します.IPアドレスはvmnet1のネットワークから適当に選んでください.(ここでは192.168.0.10を使います.)
VMware関係のデーモンを再起動すると,設定が反映されます.
では,もう一度VMwareを起動してみましょう.今度はIPアドレスが取れてNetBootのプロンプトが出るはずです.
NFSサーバの準備NetBootはNFSを使ってカーネルを読み込むので(最近はTFTPもサポートしているようですが),LinuxをNFSサーバに仕立てます. とりあえず,OSKitに付属しているサンプルカーネルを動かしてみるために,$OSKITを仮想計算機に対して NFS export します./etc/exportsに以下のような行を追加して,mountdをリスタートします.
サンプルカーネルの起動いよいよサンプルカーネルを動かしてみます.サンプルカーネルはいくつかありますが,まずは定番の hello カーネルにしましょう.hello カーネルは $OSKIT/examples/x86/hello にあるはずです. VMwareを起動して,NetBootのプロンプトが現れたら次のように入力します(もちろん192.168.0.1はLinuxのIPアドレスです.)
次のように hello カーネルが動くはずです.
動きましたか? 次へ |