ようやく修士論文を提出した。


ほぼオールナイトで印刷と修正を繰り返し、昼ごろには製本したものを持って提出会場に向かったが、そのときすでに部屋は大混雑だった。提出物がちゃんと規定に沿ってるか職員の方が一つ一つ確認する。それで少しでも不備が見つかると研究室に戻って修正してから列の最後尾に並ぶというもので、受け付けてもらえるまでかなり時間がかかった。


それでもようやく受け取ってもらったときは、今までの苦労がようやく報われた気持ちで感激した。とりあえずは一つのゴールをクリアした。


あとは2週間後に控えた発表準備。こちらもまたプレゼン資料の作成が大変そう・・・。

ようやく研究が全て終了した。最後はTXT対応ブートローダにて、initrd(初期RAMディスク)への対応を行った。


initrdは実際のルート・ファイル・システムが利用できる前にマウントさあれる初期ルート・ファイル・'システムである。オープンソースコミュニティから入手したTXT対応ブートローダはカーネルがinitrdを使用していることを想定してコードが書かれていたので、そのinitrdがなければエラーを発行していた。


研究で用いているハイパバイザはinitrdを持たないシステムであったので、オープンソースコミュニティに報告し、修正することに。パッチが正式にリリースされることになり、社会貢献(?)にもつながった。


こんなぎりぎりまでかかるとは思わなかったが、ちゃんと動作するところまで確認できて本当によかった。発表の場で、ちゃんと動きましたというのと、動きませんでしたと発表するのとでは天と地ほどの差がある。それを思うとかなりのプレッシャーを感じてきたが、まさかこんな土壇場で原因が見つかるとは思わなかった。


これでようやくまともな修士論文が書けそうである。

一応、オリジナルのハイパバイザにより、認証起動の動作確認までできた。Grubでの設定は以下の通り。

title Yashio-dev
root (hd0,0)
kernel /boot/tboot.gz
module /boot/yashio.elf no-real-mode dom0_mem=524288 com1=115200,8n1
module /boot/vmlinuz-2.6.23.1-Great-25 root=/dev/sda1
module /boot/BRLK_SINIT_20070910_debug.BIN

TPMに対する設定は以下の通り。

$ lcptools/tpmnv_defindex -i 0x20000002 -s 8 -pv 0 -rl 0x07 -wl 0x07 -p 123456
$ lcptools/tpmnv_defindex -i owner -p 123456
$ lcptools/tpmnv_defindex -i 0x20000001 -s 512 -pv 0x02 -p 123456
$ lcptools/lcp_mlehash /boot/tboot.gz > mle_hash
$ lcptools/lcp_crtpol -t hashonly -m mle_hash -o lcp.pol
$ tb_polgen/tb_polgen --create --policy_type nonfatal --uuid vmm -hash_type hash --file tcb.pol --cmdline "/boot/yashio.elf no-real-mode dom0_mem=524288 com1=115200,8n1" /boot/yashio.elf
$ tb_polgen/tb_polgen --create --uuid dom0 -hash_type hash --file tcb.pol --cmdline "/boot/vmlinuz-2.6.23.1-Great-25 root=/dev/sda1 ro" /boot/vmlinuz-2.6.23.1-Great-25
$ lcptools/lcp_writepol -i owner -f lcp.pol -p 123456
$ lcptools/lcp_writepol -i 0x20000001 -f tcb.pol -p 123456
$ lcptools/tpmnv_getcap

ただし、tbootに対する改竄は検出できるが、ハイパバイザ、ゲストOSに対しては、ポリシータイプをnonfatalにしないと立ち上がらない。つまり、haltにすると起動しなくなってしまう。そしてもちろん、nonfatalにすると改竄はもちろん検出できない。

依然、デバッグ中。。。
ハイパバイザをelf形式にしてるのがだめなのかな???