FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

xv6の起動方法を追い掛ける

土日は出勤だったため、集中して勉強することが出来なかった...

xv6を勉強していきたくて、ひととおりテキストは読み込んだものの、実際のコードはどこから手を付けていいのか分からない。 まずは、xv6の動作の仕組みを分かるところから探っていこう。

make qemu-noxをすると何が起こるのか

make qemu-noxをすると、自動的にxv6が立ち上がって、QEMU上でエミュレートが走りだす。

$ make qemu-nox
dd if=/dev/zero of=xv6.img count=10000
10000+0 records in
10000+0 records out
5120000 bytes (5.1 MB) copied, 0.0159053 s, 322 MB/s
dd if=bootblock of=xv6.img conv=notrunc
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00308072 s, 166 kB/s
dd if=kernel of=xv6.img seek=1 conv=notrunc
331+1 records in
331+1 records out
169508 bytes (170 kB) copied, 0.00104549 s, 162 MB/s
qemu-system-i386 -nographic -hdb fs.img xv6.img -smp 2 -m 512
xv6...
cpu1: starting
cpu0: starting
sb: size 1000 nblocks 941 ninodes 200 nlog 30 logstart 2 inodestart 32 bmap start 58
init: starting sh

まずはディスクイメージを作成している。

./mkfs fs.img README _cat _echo _forktest _grep _init _kill _ln _ls _mkdir _rm _sh _stressfs _usertests _wc _zombie
nmeta 59 (boot, super, log blocks 30 inode blocks 26, bitmap blocks 1) blocks 941 total 1000
balloc: first 570 blocks have been allocated
balloc: write bitmap block at sector 58
dd if=/dev/zero of=xv6.img count=10000
10000+0 records in
10000+0 records out
5120000 bytes (5.1 MB) copied, 0.0114842 s, 446 MB/s
dd if=bootblock of=xv6.img conv=notrunc
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000372747 s, 1.4 MB/s
dd if=kernel of=xv6.img seek=1 conv=notrunc
331+1 records in
331+1 records out
169508 bytes (170 kB) copied, 0.000937154 s, 181 MB/s

mkfs.c が鍵になっているようだが、これは何を生成するものだろうか。

その後、qemu-system-i386を起動している。

qemu-system-i386 -nographic -hdb fs.img xv6.img -smp 2 -m 512