El Capitan (v10.11) にアップデートして、コンパイル出来なくなったので、内容を改定しました。
Unix v6 は 故 John Lions 氏の著名なソースコード・コメンタリーが有ります。自分はこの本の存在を昔から知ってましたが、Unix が 著作権が有り、公開されず、ずっと歯がゆい状態でしたが、ついに公開可能になり、コメンタリーが本として出版され、それがアスキー出版から翻訳され出てました。
*ちなみに自分は PDP-11 でプログラムして仕事してまして、とても懐かしいです。OSはRSX-11M でした。このOSは マイクロソフト社で Windows NT を開発したデイビッド・カトラーが開発してます。
xv6(x86 version 6)は、MIT(マサチューセッツ工科大学)のOperating Systems Engineering (6.828)という講義の教材として使うために、UNIX V6をANSI Cに書換え、x86に移植したOS
https://gist.github.com/gburd/3789004 こちらのサイトの通り実行しました。
1. Install Xcode. After installing Xcode install the Command Line Tools from the Downloads section of Xcode's preferences. I've installed Xcode Version 4.5 (4G182).
*** 最新の Xcode 6.1 がインストールされてます。
2. Install Homebrew
$ brew doctor <- 何かおまじないが必要(^_^;)
3. Install pre-requisites for building xv6 bash
*** 以上3個は問題なくインストール完了(^o^)
4. Install GNU binutils
$ cd /tmp
$ tar -xvzf binutils-2.22.tar.gz
*** --disable-werror を入れないとエラーで止まっちゃいます(^_^;)
$ make
$ sudo make install
$ cd /tmp
$ cd build/
$ ../configure --target=i386-jos-elf --disable-nls --without-headers --with-newlib --disable-threads --disable-shared --disable-libmudflap --disable-libssp --with-system-zlib --disable-lto --with-gmp=/usr/local --enable-languages=c --prefix=/opt/gnu
$ LDFLAGS=-L/usr/lib make
$ sudo make install
6. Install and build xv6 with GCC
$ git clone git://github.com/mit-pdos/xv6-public.git
$ cd xv6-public
$ patch < makefilePatch.diff <-- 何かエラーっぽいのが出ますが無視(^_^;)
$ make qemu-nox
*** これでいきなり動きます。
エミュレータの終了は Ctrl-a x です。
xv6 make ファイルのパッチが必要でこれを当てて下さい。
ファイル名 : makefilePatch.diff
index 33bfb0a..af625c8 100644
--- a/Makefile
+++ b/Makefile
@@ -29,10 +29,10 @@ OBJS = \
vm.o\
# Cross-compiling (e.g., on Mac OS X)
-#TOOLPREFIX = i386-jos-elf-
-#TOOLPREFIX =
+#TOOLPREFIX =
# Try to infer the correct TOOLPREFIX if not set
ifndef TOOLPREFIX
endif
-#QEMU =
# Try to infer the correct QEMU
ifndef QEMU
echo "***" 1>&2; exit 1)
endif
-CC = $(TOOLPREFIX)gcc
-AS = $(TOOLPREFIX)gas
+AS = $(TOOLPREFIX)as
LD = $(TOOLPREFIX)ld
OBJCOPY = $(TOOLPREFIX)objcopy
OBJDUMP = $(TOOLPREFIX)objdump
以上で2日ほど試行錯誤しましたが、 Mac OS X El Capitan(v10.11) 上で動く Xv6 が出来ました。
あとは、Xv6 のサイト (Xv6, a simple Unix-like teaching operating system)や 関連の話題ググると日本語情報を含めて沢山の情報が出てきますので、Unix OS の勉強になります。
* Xv6 は ラズパイに移植されたり、仮想記憶を付け加える事もされているそうです。