2015/04/21

32bit 版 xv6 を Yosemite で動かす

諸処あって xv6 を Mac で動かしたのでそのログとかをつらつらと。
元々は 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
  • 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 を勝手に吐いてくれてるっぽい。便利。
っぽいです。

参考文献

0 件のコメント:

コメントを投稿