Cygwinでxv6を実行する
下準備編
既にCygwinを使っていた人も専用の環境として新規にCygwinをインストールした方がいいかもね。
結構バージョンの組み合わせによっても動く動かないがあるみたい。
Cygwinをインストールする
下記のパッケージを選択してインストール:
- Devel/binutils
- Devel/bison
- Devel/flex
- Devel/gcc4-core
- Devel/gcc4-g++
- Devel/libncurses-devel
- Devel/make
- Interpreter/perl
各種ソースコードをDLして展開する
DLするソースコードのバージョンと展開先の対応:
- binutils-2.21.1a.tar.bz2
- /path_to_cygwin/usr/src/binutils-2.21.1
- gcc-core-4.5.3.tar.bz2
- /path_to_cygwin/usr/src/gcc-4.5.3
- gdb-6.8a.tar.bz2
- /path_to_cygwin/usr/src/gdb-6.8
Cygwinをインストールしたディレクトリをルートとして,/usr/srcの下にまとめて展開する。
それぞれのアーカイブは下記のサイトからDLする。
GCCのビルドに必要なソースコードをDLして展開する
DLするソースコードのバージョンと展開先の対応:
- gmp-5.0.2.tar.bz2
- /path_to_cygwin/usr/src/gcc-4.5.3/gmp
- mpc-0.9.tar.gz
- /path_to_cygwin/usr/src/gcc-4.5.3/mpc
- mpfr-3.1.0.tar.bz2
- /path_to_cygwin/usr/src/gcc-4.5.3/mpfr
先ほどと同様にDLして展開する。
Cygwinでbinutilsをビルドする
# cd /usr/src/binutils-2.21.1 # ./configure --target=i386-jos-elf --disable-nls # make # make install
記事最下部の追記部分を参照すると幸せになれるかもしれない。
CygwinでGCCをビルドする
# mkdir /usr/src/build-gcc # cd /usr/src/build-gcc # ../gcc-4.5.3/configure --target=i386-jos-elf --disable-nls \ --without-headers --disable-shared --without-newlib \ --disable-threads --disable-libmudflap --disable-libssp \ --with-mpfr-include=/usr/src/gcc-4.5.3/mpfr/src \ --with-mpfr-lib=/usr/src/build-gcc/mpfr/src/.libs # make all-gcc # make install-gcc # make all-target-libgcc # make install-target-libgcc
GCCのビルドには非常に時間が掛かるので,しばらく放置する。
導入編
QEMU for Windowsを導入
上記のサイトから最新のバイナリをDLし,任意のディレクトリに展開する。
展開したディレクトリには,CygwinからPATHを通す。
$ export PATH="$PATH:/cygdrive/c/qemu-0.13.0-windows" # これは一例
毎回これをやるのは面倒なので,.bashrcにでも書いておく。
参考リンク
お世話にな(ってい|り)ま(す|した)。
追記(2012-02-11)
Windows 7 Ultimate 64bit(ビルド7601: Service Pack 1),Cygwin 1.7.9(0.237/5/3)の環境下で実行しているので,それ以外の環境でうまく実行できるかどうかはわかりません。
ただ,Cygwin 1.7.10でbinutilsをビルドしようとするとlibiberty/pex-unix.cでビルドエラーが出るみたいなので,その場合は/usr/include/cygwin/process.hを/usr/include以下にコピーして,以下のようにビルドをやり直してください。
# cd /usr/src/binutils-2.21.1 # make distclean # ./configure --target=i386-jos-elf --disable-nls # make # make install
罠多すぎワロタ。