xv6を動かしてみる。
すごく久しぶりです。
最近、個人的にOSの勉強をしているのですが、なかなか進みません。
LXRでLinuxのコードリーディングでもしようかと思ったのですが、コードの行数が1500万行以上らしく、どうも気軽に読めそうな気がしません。
そこで
- コード量が短く、ビルドが簡単
- 端末上でも動く
- 資料がそれなりにある
という条件でいろいろ探してみたところ、xv6という教育用のOSを見つけました。
Xv6, a simple Unix-like teaching operating system
http://pdos.csail.mit.edu/6.828/2011/xv6.html
これはVersion 6 Unixをx86でも動くように、コードを書き換えたものだそうです。
講義のためにここまで出来るのはすごい。
というわけで、エミュレータのQEMUを用いた起動方法を紹介します。
用意したもの
Ubuntu 12.10
手順
[1] フォルダを作って移動。
/home/wk4% mkdir unix
/home/wk4% cd unix
/home/wk4/unix%
[2] 必要な物をダウンロードする。
- gitとqemuのインストール
sudo apt-get install git qemu qemu-kvm-extras
- xv6をダウンロード
git clone git://pdos.csail.mit.edu/xv6/xv6.git
- xv6の中に移動
/home/wk4/unix% cd xv6
/home/wk4/unix/xv6%
[3] Makefileの編集
/home/wk4/unix/xv6% sudo emacs Makefile
次に、54行目の#QEMU=を#を外して以下のように編集。
QEMU = /usr/bin/qemu-system-x86_64
[4] xv6のmake
/home/wk4/unix/xv6% sudo make
-特に"sudo"で管理者権限で実行するのが重要。ない場合、エラーを吐かれる。
[5] 起動
/home/wk4/unixxv6% sudo qemu make
-起動すると、QEMUのウインドウが立ち上がる。
-さらに、以下の様なメッセージが表示される。$ が表示されれば起動完了。
/usr/bin/qemu-system-x86_64 -serial mon:stdio -hdb fs.img xv6.img -smp 2 -m 512
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
QEMU 1.2.0 monitor - type 'help' for more information
(qemu) QEMU 1.2.0 monitor - type 'help' for more information
(qemu)
xv6...
cpu1: starting
cpu0: starting
init: starting sh
$
停止させたい場合は
[1] Alt+Ctrlでマウスを動かせるようにして、ウインドウの✕をクリック
[2] 端末上(QEMUでない方)に移ってCtrl+C
の2つです。
とりあえず資料も有るようなので、じっくり読んでみます。