/dev/fl2 の2ブロック目?


先日、/dev/fl2 にはローダが収められているらしいことを解析した。

fl2 を od していて気が付いたのだが、 ローダの後にもまだ何か入っているようだ。

0102260 6669 6c65 2065 7272 6f72 0000 0000 0000
          f   i   l   e       e   r   r   o   r  \0  \0  \0  \0  \0  \0
0102300 7374 7265 616d 2065 6e64 0000 0000 0000
          s   t   r   e   a   m       e   n   d  \0  \0  \0  \0  \0  \0
0102320 0000 0000 0000 0000 0000 0000 0000 0000
         \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0110000 726f 6f74 3d2f 6465 762f 6864 6131 0000
          r   o   o   t   =   /   d   e   v   /   h   d   a   1  \0  \0
0110020 0080 8050 0001 0000 0080 2e5c 0080 2e84
         \0 200 200   P  \0 001  \0  \0  \0 200   .   \  \0 200   . 204
0110040 0080 355c 0000 0000 0080 8060 0001 0000
         \0 200   5   \  \0  \0  \0  \0  \0 200 200   `  \0 001  \0  \0
0110060 0080 2ea8 0080 2ed0 0080 375c 0000 0000
         \0 200   . 250  \0 200   . 320  \0 200   7   \  \0  \0  \0  \0
0110000 (0x9000) という切りの良いオフセットから、 カーネルの引数と思われる "root=/dev/hda1" が収められている。
そのあと、0080 が 16 バイト毎に 11 回並んでいる。 ごみ?何らかのテーブル?(i-node?)
謎。

カーネル?ローダのソースを探ることにする。

まず、物理アドレスを計算することから。
FLASH は fl1, fl2, fl3, fl0 の順で連続していて、 fl1 は 0xFFC00000 番地から始まる。
fl1 のサイズは 3145728 なので、fl2 は 0xFFF00000 から開始。
上記 0x9000 を足すと 0xFFF09000。
arch/ppc の下を 0xFFF0 や 0x9000 で grep しても、該当箇所なし。
やっぱり謎。何に使っている?
Documentation/i386/boot.txt には、

	0x9000-0x90FF	Kernel command line
という記述は見つけたが、i386 だし、、
LinkStation/玄箱 をハックしよう → 設定初期化ボタンを押しながらの電源ON

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