Hack BBS

[全部のスレッド一覧][新規投稿][記事の削除・変更] [Home Page]

返信投稿はタイトルのリンクをクリックして下さい
スレッド【No.195】の中の記事をすべて表示しています

【No.195】のスレッド
04/03/30(火) 22:02:17 投稿者[高橋 ] [No.195]のスレッド内
【No.195】 タイトル[gz ファイルを展開しているのは誰?] この記事がスレッドの最初です
普通の組込み系 PowerPC Linux では、load_kernel 関数が
kernel loader の処理を行う所で、gzip 圧縮された kernel
Image を伸張し、所定のメモリ上に配置します。
arch/ppc/boot/common/misc-simple.c か、
arch/ppc/boot/simple/misc-embedded.c です。

元々は、起動時に serial console に、その旨の情報が出力さ
れる Uncompressing Linux... のように。

シリアル付けた方のが掲載していた起動メッセージに、その
出力は無かったので、puts をガシガシ削っているのでしょう
かね。(boot debug には、大変役に立つのに)

私の手元には、LinkStation も玄箱もありませんので、単なる
想像ですけど。


04/04/01(木) 17:38:44 投稿者[山下康成] <http://www.yamasita.jp/> [No.195]のスレッド内
【No.210】 タイトル[Re: gz ファイルを展開しているのは誰?] 【No.195】に対する返信
>普通の組込み系 PowerPC Linux では、load_kernel 関数が
>kernel loader の処理を行う所で、gzip 圧縮された kernel
>Image を伸張し、所定のメモリ上に配置します。
>arch/ppc/boot/common/misc-simple.c か、
>arch/ppc/boot/simple/misc-embedded.c です。

前者(misc-simple.c)のdecompress_kernel()でした。
詳しくは後ほど

04/04/02(金) 01:45:59 投稿者[たつや ] <http://linkstation.yi.org/> [No.195]のスレッド内
【No.212】 タイトル[Re: gz ファイルを展開しているのは誰?] 【No.210】に対する返信
>前者(misc-simple.c)のdecompress_kernel()でした。
>詳しくは後ほど

「ローダ」読みました。
カーネルには組み込まれないけど、やっぱりこのソースを使っている
んですね。

む〜、ソースほしい。MontaVista のソースには arch/ppc/boot/sandpoint
というディレクトリ自体が存在しないので、この辺はわからないので
す。
私が使っているのは preview release なので、MontaVista を購入し
た場合に手に入るものとはバージョンが違うからなのか、それとも
ローダ自体が BUFFALO で書いたものなのかはわかりませんが、、、

とりあえず、今は山下さんのカーネルコンパイル等のご報告を楽しみ
にさせていただいています。
明日は BUFFALO からのよい返事が来ることを期待しつつ、、、

04/03/30(火) 23:32:18 投稿者[たつや ] <http://linkstation.yi.org/> [No.195]のスレッド内
【No.198】 タイトル[Re: gz ファイルを展開しているのは誰?] 【No.195】に対する返信
>普通の組込み系 PowerPC Linux では、load_kernel 関数が
>kernel loader の処理を行う所で、gzip 圧縮された kernel
>Image を伸張し、所定のメモリ上に配置します。

一般的にはそのとおりだと思います。
が、LinkStation のカーネルイメージは先頭に山下さんが解析
されたようなヘッダ情報があり、その直後にいきなり gzip の
ヘッダがあります。
カーネル本体より後には initrd が入っていたりしますが、い
ずれも gzip 圧縮データですので、通常の zImage のように自
己展開を行うコードがまったく存在しないように見えます。

>シリアル付けた方のが掲載していた起動メッセージに、その
>出力は無かったので、puts をガシガシ削っているのでしょう
>かね。(boot debug には、大変役に立つのに)

というわけで、メッセージを削っているのではなくて、その
メッセージを表示する部分が存在しないのですね。
で、カーネルイメージを展開するコードがない→誰が展開し
ているのか?もしかして Flash 上のブートコードで展開して
いるのではないか、という推測になっているのではないかと
思います。