Skip to content

Russ Coxのboot/qemuを構築する

Plan 9の /sys/src/cmd/unix/u9fs はビルドが通らない状態なので、非公式ミラーのバージョンを使う。

Terminal window
git clone https://github.com/unofficial-mirror/u9fs.git
cd u9fs
make
u9fs -a none -u lufia

次にビルド環境が必要なので、qemuで適当にインストールしたPlan 9イメージを実行する。

Terminal window
cd plan9img
./start.bash -v
Terminal window
9fs 10.0.2.1
mount /srv/10.0.2.1 /mnt/term

せっかくビルドするので64bit環境にする。一般的な再構築手順はPlan 9環境の再構築に書いたが、ここではディレクトリを作成するなど細かい手順が増えるので別途記述する。

Terminal window
bind -c /mnt/term/amd64 /amd64
mkdir /amd64/ ^ (bin lib)
mkdir /amd64/lib/ape
mkdir /amd64/bin/ape
cd /mnt/term/sys/src
objtype=amd64
mk libs
mk cleanlibs
cd /mnt/term/sys/src/ape
mk lib.install
mk lib.clean
mk cmd.install
mk cmd.nuke
mk 9src.install
mk 9src.nuke
Terminal window
mkdir -p /amd64/bin/ ^ (aux auth dial disk fossil fs ip/httpd ndb replica upas usb venti)
cd /mnt/term/sys/src/cmd
mk install
# 途中でlibmap.a6が無くて落ちるのでbindする
bind -a /mnt/term/sys/src/cmd/map/libmap /sys/src/cmd/map/libmap
mk nuke
mkdir /amd64/bin/games
cd /mnt/term/sys/src/games
mk install nuke

カーネル

Terminal window
cd /mnt/term/sys/src/9k/k10
mk install 'CONF=k10'
mk nuke 'CONF=k10'

9boot9load をビルドする。

Terminal window
cd /mnt/term/sys/src/9/pcboot
# boot設定を編集してサイズを小さくしておく
mk install clean

ブートローダ

Terminal window
mkdir /mnt/term/boot
file=/mnt/term/boot/pxeboot.raw.new
dd -bs 1000000 -if /dev/zero -of $file -count 4
disk/partfs $file
cd /dev/sdXX # これは本当にXXだった
disk/mbr -m /386/mbr data
disk/fdisk data
>>> a p1 0 1
>>> t p1 fat32
>>> A p1
>>> w
>>> q
ramfs
cp /mnt/term/pcboot/9bootpbs /tmp/9load
disk/format -b /386/pbslba -d -r 2 dos /tmp/9load

mbr, pbs{,lba,raw} をビルドしたい場合

Terminal window
cd /mnt/term/sys/src/boot/pc
mk install clean

acme

Terminal window
mkdir -p /mnt/term/acme/bin/amd64
cd /mnt/term/acme
mk install nuke

あとは以下のファイルをRussのリポジトリからコピーしておいて使う。

  • /cfg/pxe/xxx
  • /boot/qemu