v7x86 on QEMU
先日もLions' commentary on UNIX読み会に参加したりと、UNIX v6づいている。この前はxv6をVirtualBoxにインストールして遊んでみたが、次はUNIX v7をx86に移植したv7x86をQEMU on Ubuntu 10.10上で動かしてみた*1。こちらは(UNIX v7が多少なりとも移植性を考慮して実装されているということもあり)xv6と違い、素直な移植になっているようだ。
本家のダウンロードページには、ISOイメージがあるので、QEMUでこれをブートする。インストール先のディスクイメージは256MBもあれば十分だろう。ただし、ドキュメントにもあるがあらかじめv7x86用のパーティションをfdiskで用意しておくことをお勧めする。
$ dd if=/dev/zero of=v7x86.img bs=$((1024*1024)) count=256 $ sudo losetup /dev/loop0 v7x86.img $ sudo cfdisk /dev/loop0 (プライマリパーティションを一つ作り、typeを0x72に設定する) $ sudo losetup -d /dev/loop0 $ qemu -boot d -hda v7x86.img -cdrom v7x86-0.8a.iso
インストールは簡単で、メニュにしたがってcd0からhd0にインストールすればOK。インストールがすんでQEMUを再起動すると、MBRが空のようでブートしない。このインストーラはブートローダのことを何もケアしてくれないようだ。
ということでGrubのレスキューディスクを作ってチェインロードすることにした*2。もっとスマートなインストール方法があったら教えてください。
$ grub-mkrescure -o grub.iso $ qemu -boot d -hda v7x86.img -cdrom grub.iso
Grubが起動するので、
grub> root (hd0,msdos1) grub> chainloader +1 grub> boot
とすると、まずはシングルユーザモードでブートした。
BOOT [hd(0,0)unix]: text=43120 data=4560 bss=175892 ...... : mem = 14016512 #
シングルユーザモードではrootfsしかマウントされていないので、/dev/hd0eを/usrにマウントする。
# /etc/mount /dev/hd0e /usr
そして、Ctrl-dで、マルチユーザモードに遷移する。guestユーザはパスワードなしでログインできる。カーネルのソースは/usr/sys/sys以下で、viも使えるぞ。