xv6を動かしてみる。

すごく久しぶりです。

最近、個人的にOSの勉強をしているのですが、なかなか進みません。

LXRLinuxのコードリーディングでもしようかと思ったのですが、コードの行数が1500万行以上らしく、どうも気軽に読めそうな気がしません。

そこで

  • コード量が短く、ビルドが簡単
  • 端末上でも動く
  • 資料がそれなりにある

という条件でいろいろ探してみたところ、xv6という教育用のOSを見つけました。

 

Xv6, a simple Unix-like teaching operating system

http://pdos.csail.mit.edu/6.828/2011/xv6.html

 

これはVersion 6 Unixx86でも動くように、コードを書き換えたものだそうです。

講義のためにここまで出来るのはすごい。

 

というわけで、エミュレータQEMUを用いた起動方法を紹介します。

 

用意したもの

Ubuntu 12.10

emacs

 

手順

[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つです。

 

とりあえず資料も有るようなので、じっくり読んでみます。