ウォンツテック

そでやまのーと

OS作成

 メモリ上のダンプを見たいけどqemubochsだとアドレス指定して一覧表示させて見るという方法があるにはあるけど面倒だという事でメモリダンプシステムコールを実装。これで特定プロセスのリニアアドレス上のメモリダンプをserial経由で以下のようにファイルに出力出来るようになりました。

qemu -fda kernel -serial file:serial.out

ファイルにするのでgrepもできるし色々便利そう。

早速

これでmallocのpage faultの原因を探ってみると、の0x8049000番地以降に格納しているあるはずの.rodata文字列が0になってた。set pagingかmemcpyがうまくいっていないぽい。

追跡

sodexのファイルシステム上にコピーされていないんじゃないかと思いfsboot.binをLinux上でマウントしてみたけどきっちりコピーされていた。やっぱりkernel内部の問題だ。

sudo mount fsboot.bin /mnt -t ext2 -o loop=/dev/loop3

追跡

ext3_readの問題だった。0x1000以上のサイズのファイルread時におかしくなってたので修正。とりあえず手抜きmallocできたっぽ。次はPIC timerいじる予定です。