ローダ(2)


先日、/dev/fl2 にはローダが収められているらしいことを解析した。
そこで「本当にこのソースツリーをコンパイルしてできたものなのか疑問」 としたが、、、

fl2 を od していて気が付いた。

0103300 ffff eac0 ffff eb90 ffff ec84 ffff ecfc
        377 377 352 300 377 377 353 220 377 377 354 204 377 377 354 374
0103320 ffff edd0 ffff ee38 ffff ef78 ffff f070
        377 377 355 320 377 377 356   8 377 377 357   x 377 377 360   p
0103340 ffff f0c0 ffff f0dc 302e 3935 5000 0000
        377 377 360 300 377 377 360 334   0   .   9   5   P  \0  \0  \0
0103360 6275 6666 6572 2065 7272 6f72 0000 0000
          b   u   f   f   e   r       e   r   r   o   r  \0  \0  \0  \0
0103400 696e 7375 6666 6963 6965 6e74 206d 656d
          i   n   s   u   f   f   i   c   i   e   n   t       m   e   m
0103420 6f72 7900 6461 7461 2065 7272 6f72 0000
          o   r   y  \0   d   a   t   a       e   r   r   o   r  \0  \0
0103440 7374 7265 616d 2065 7272 6f72 0000 0000
          s   t   r   e   a   m       e   r   r   o   r  \0  \0  \0  \0
0103460 6669 6c65 2065 7272 6f72 0000 0000 0000
          f   i   l   e       e   r   r   o   r  \0  \0  \0  \0  \0  \0
0103500 7374 7265 616d 2065 6e64 0000 0000 0000
          s   t   r   e   a   m       e   n   d  \0  \0  \0  \0  \0  \0
0103520 0000 0000 0000 0000 0000 0000 0000 0000
         \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
"stream end" までは bootcode.bin である。
"file error" や "stream end" は arch/ppc/boot/lib/zlib.c で記述されている。

zlib.c には

char *zlib_version = ZLIB_VERSION;
と書かれていて、ZLIB_VERSION は include/linux/zlib.h で
#define ZLIB_VERSION "1.0.4P"
となっている。
ところが、 上記 zlib.c がコンパイルされた辺りを見ると、
0102140 ffff f190 ffff f1ac 302e 3935 5000 0000
        377 377 361 220 377 377 361 254   0   .   9   5   P  \0  \0  \0
と 0.95P となっている。

やっぱり提供されたソースと /dev/fl2 内のバイナリとは違うもののようだ。

ソースが違えば、Flash ROM 内のバイナリと、 コンパイルして出来上がった bootcode.bin とを バイナリで比較しても同じになるはずがない。
カーネルをコンパイルするときにも Flash ROM 内のバイナリと、 コンパイルして出来上がった vmlinux とを バイナリで比較しても同じであれば手順、コンフィギュレーションが 間違っていないと判断できると思ったが、先行きが思いやられる。
(コンパイラの問題もあるし、、、)


LinkStation/玄箱 をハックしよう → /dev/fl2 の2ブロック目?

Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp
山下康成京都府向日市