はじめてのOSコードリーディング #2 simhでV6を動かす

simhというエミュレータ上でUNIX V6を動かせるとのことで試してみた。

simhエミュレータのインストール

http://simh.trailing-edge.com/がsimhの開発プロジェクト。

debian系なら apt-get で楽ちんインストール。

$ sudo apt-get install simh

simh用のUNIX V6キットをダウンロード

http://simh.trailing-edge.com/software.htmlからPDP-11 UNIX V6キットをダウンロードする。

$ wget http://simh.trailing-edge.com/kits/uv6swre.zip
$ unzip uv6swre.zip

simhでUNIX V6を動かす

起動の前にPDP-11用の設定ファイルを作る。名前はなんでもいいけど、pdp11.rcにした。

set cpu 11/40
set cpu u18
att rk0 unix0_v6_rk.dsk
att rk1 unix1_v6_rk.dsk
att rk2 unix2_v6_rk.dsk
att rk3 unix3_v6_rk.dsk
boot rk0

simh、UNIX V6を起動する

simhのPDP-11エミュレータを起動する。引数に先ほどの設定ファイルをつける。

$ pdp11 pdp11.rc

PDP-11 simulator V3.8-1
Disabling XQ
@

@の後にunixと入力するとUNIX V6が立ち上がる。ログイン名はroot

@unix
login:root

UNIX V6の終了方法

syncを3回入力してからctrl-eを入力する。

# sync
# sync
# sync
# [ctrl-e]

simhの終了方法

quitを入力

UNIX V6上でアセンブラ出力

  1. ed hoge.cで頑張ってコードを書く
  2. cc -S hoge.cアセンブラコードを吐かせる
  3. cat hoge.sで眺める

参考ページ


2013.1.30追記
ここのページのやり方の方がいいみたい。


はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)
はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)