Unix V6 互換 OS xv6 をMac OS X El Capitan(v10.11)で Homebrew で動かす

El Capitan (v10.11) にて Homebrew パッケージ管理システムを使ったクロスコンパイル環境構築を行いました。

UNIXはもともと DEC社のPDP-11上に実装されて, C も古代の Pre K&R で書かれていて、今の時代適用できないとUNIX V6 は 現代風Xv6 へと、さらに進化します\(^o^)/

xv6 けっこう以前から話題になってた様です。

xv6(x86 version 6)は、MITマサチューセッツ工科大学Operating Systems Engineering (6.828)という講義の教材として使うために、UNIX V6ANSI Cに書換え、x86に移植したOS

でこれを動かす環境を Mac OS X El Capitan (OS X v10.11) の上で動作する環境構築を行いました。

ほぼ http://attonblog.blogspot.jp/2015/04/32bit-xv6-yosemite.html こちらのサイトの通り実行しました。

1. Install Xcode. After installing Xcode install the Command Line Tools from the Downloads section of Xcode's preferences. I've installed Xcode Version 7.3.1(7D1014).
*** 最新の Xcode 7.3.1 がインストールされてます。

2. Install Homebrew
$ brew doctor <- 何かおまじないが必要(^_^;)

$ brew install homebrew/versions/gcc49
まずは GCC を導入

$ brew tap dongz9/devel
標準の homebrew にはXv6 の開発環境が無いので、追加のリポジトリ定義ファイルを利用させてもらう
https://github.com/dongz9/homebrew-devel に定義ファイルが管理されている。 

$ brew install --HEAD i386-elf-qemu
PC エミュレータをインストール

$ brew install i386-elf-binutils i386-elf-gcc i386-elf-gdb
ツールチェーン言われる一連の開発環境を導入

以上で Mac OSX 上に xv6 の開発環境が出来たので、 xv6 のソースコードを入手します。

$ git clone git://github.com/mit-pdos/xv6-public.git

あとは Makefile
35:   TOOLPREFIX = i386-elf-
54:   QEMU = qemu-system-i386
と修正して

$ make qemu-nox 
で  qemu 上でxv6 が動きます。
qumu を終了するには Ctrl-A x

あとは、xv6 のサイト (xv6, a simple Unix-like teaching operating system)や 関連の話題ググると日本語情報を含めて沢山の情報が出てきますので、Unix OS の勉強になります。

* xv6 は ラズパイに移植されたり、仮想記憶を付け加える事もされているそうです。