その時は、なんとも思わなかったが、、、
ヘッダファイルがあるということは、
そのヘッダファイルを使っているソースがあるはず。
そのヘッダファイル(/dev/fl1 のヘッダ部の構造)を使うのは、
ローダではないだろうか?
早速 grep しまくってみると、include しているのは
arch/ppc/boot/common/misc-simple.c であった。
このソースには Misc. bootloader code for many machines. と書いてある。
ざっと見ると、decompress_kernel() という関数があり、 /dev/fl2 を strings した時に見た
******* Product Information ******* ---------------------------------- Product Name: (firminfo より取得) VER: (firminfo より取得) Date:(firminfo より取得) ----------------------------------このような表示をしたり、
つまり、3/27 に書いた 「gzip のソースコードを使わずに gz ファイルを展開しているはず」 というのは間違い。 Monta Vista Linux 標準のローダに手を入れて(?)使っている。
arch/ppc/boot/sandpoint/Makefile を見ると、 make zImage を実行すると、bootcode.bin が出来上がりそう。 早速やってみる。
[yasunari@ls kernel_melext3]$ make zImageすこしして、
objcopy -O elf32-powerpc -R .comment \ bootcode.tmp bootcode objcopy -I elf32-powerpc -O binary bootcode bootcode.binbootcode.bin と /dev/fl2 とを比べてみる
[yasunari@ls sandpoint]$ cmp bootcode.bin /tmp/fl2 bootcode.bin /dev/fl2 異なります: バイト 5116、行 2むむ。コンパイラや objcopy が違うので、予想はしていたが、、、
ただ、両者を strings しても、微妙に異なる。
strings /dev/fl2 すると、on board とか mini pci とかが見えるのだが、
strings bootcode.bin してもそんな文字列はない。
ソースコードを grep しても出てこない。(探し方が悪いだけかもしれないが)
本当にこのソースツリーをコンパイルしてできたものなのか疑問。
ローダを書けば HDD にカーネルを置く事もできるんだろうが、、、
ローダがちゃんと動かなければ、(カーネルの置き換え失敗と同様)
お亡くなりになるのは確実だし、、、
← | LinkStation/玄箱 をハックしよう | → 玄箱簡単インストール:失敗 |