元々は Vagrant 経由で Virtual Box の VM に構築しようかと思っていたんだけれど、 nested VM できないっぽいので Mac で qemu 動かしました。
環境
- Mac OS X Yosemite 10.10.3
- Homebrew 0.9.5
必要なもののインストール
- brew install homebrew/versions/gcc49
- クロスコンパイラが必要なのでそのビルドに必要な gcc-4.9 を入れる
- brew install qemu
- qemu で xv6 を動かすので必要。
- brew tap altkatz/gcc_cross_compilers
- i386 とかをターゲットにした gcc の formula があるっぽいのでそれを使う。
- 元々は jinmel/gcc_cross_compilers に用意されていて、i386 の build だけ直した fork が altkatz/gcc_cross_compilers だったりするみたい。 fork が大量にある。
- brew install --with-all-targets gdb
- xv6 が .gdbinit を自動で吐くので gdb で debug するのが入れる。
- --with-all-targets を付けないと i386 とかの symbol が読めない。
- brew install i386-elf-gcc i386-elf-binutils
- i386 な elf をサポートした gcc と binutils。
- 各コマンドの prefix に i386-elf- って付く。
インストールしたものの各バージョンメモ
- gcc 4.9.2
- qemu 2.2.1
- gdb 7.9
- i386-elf-gcc 4.9.2
- i386-elf-binutils 2.23
xv6 の起動
xv6 を落としてくる。
- git clone git://pdos.csail.mit.edu/xv6/xv6.git
Makefile をちょっと書きかえて
TOOLPREFIX = i386-elf-QEMU = qemu-system-i386
にする。
コマンドとかは
- make qemu
- xv6 が起動する。
- ls とかできる。
- make qemu-gdb
- xv6 が gdb で debug できる状態で起動する。
- 同じディレクトリで gdb って打つだけで attach する。
- どうやら .gdbinit を勝手に吐いてくれてるっぽい。便利。
っぽいです。
参考文献
- http://dyama.org/2011/12/xv6/
- http://peta.okechan.net/blog/xv6%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0
- http://zoo.cs.yale.edu/classes/cs422/2011/lec/l2-hw
- http://d.hatena.ne.jp/gionXY/20130909/1378660645
- http://time.to.pullthepl.ug/blog/2014/2/3/xv6-on-mac-os-x/
- http://blogs.yahoo.co.jp/i_love_raspberry_pi/39244842.html
- https://github.com/maojie/pintos_mac/pull/2
0 件のコメント:
コメントを投稿