スポンサーリンク

KGZIP(8) FreeBSD システム管理者マニュアル KGZIP(8)

名称

kgzip − カーネルを圧縮する

書式

kgzip [−cv] [−f format] [−l loader] [−o output] file

解説

kgzip ユーティリティは、カーネルその他のブート可能バイナリを圧縮します。 この動作は次の 2 つのフェーズからなります。

       1. 実行可能ファイルのロードイメージは、 ‘text’ セグメントと ‘data’ セグメント以外のすべてを省略して作成されます。このイメージを gzip(1) を用いて圧縮し、再配置可能なオブジェクト形式として出力します。

2. 出力されるオブジェクトファイルは、特殊な自立ローダとともにリンクさ れ、第 2 レベルもしくは第 3 レベルのブートストラッププログラムによる ブートに適した実行ファイルが生成されます。

サポートする入力ファイルは 32 ビット ELF と a.out ZMAGIC の形式です。

file オペランドが ‘.o’ 接尾子を持つ場合、入力はリンクフェーズにあると見な され、最初のフェーズは省略されます。

オプションは次のとおりです。

−c
リンクフェーズを省略します。

−v
オブジェクトファイル情報を表示します。

−f format
出力形式に format を使用します。 format は ‘aout’ または ‘elf’ です。デフォルトの形式は ELF です。

−l loader
loader
をローダとしてリンクします。

−o output
出力ファイルの名前を output とします。デフォルトの名前は、(再 配置可能形式については) 入力ファイル名の接尾子を ‘.o’ にした ものです。または、(実行可能形式については) 入力ファイルの接尾 子を ‘.kgz’ にしたものです。

以下と等価な大域変数が出力の中で定義されます。

struct kgz_hdr {

char

ident[4];

/* 識別子: "KGZ" */
uint32_t

dload;

/* デコードされたイメージのロードアドレス */
uint32_t

dsize;

/* デコードされたイメージの大きさ */
uint32_t

isize;

/* メモリ中のイメージの大きさ */
uint32_t

entry;

/* エントリポイント */
uint32_t

nsize;

/* エンコードされたイメージの大きさ */

} kgz;

uint8_t kgz_ndata[];

/* エンコードされたデータ */

エンコードされたデータは、単に gzip(1) の出力です。ヘッダ (オプション フィールドは一切持ちません)、圧縮されたデータ、32 ビットの CRC とサイズの 値を持ちます。

関連ファイル

       /usr/lib/kgzldr.o

デフォルトのローダ。

関連項目

gzip(1), ld(1), a.out(5), elf(5), boot(8), loader(8)

診断

ユーティリティ kgzip は、成功すると 0 で、エラーがあった場合は >0 で終了 します。

作者

Robert Nordier ⟨rnordier@FreeBSD.org⟩

バグ

シンボル情報は失われていますので、カーネルの圧縮にこのユーティリティを使 う利点は、 loader(8) が使用できない状況に限られます。それ以外の場合、単に gzip(1) を使ってカーネルを圧縮する方が望ましいでしょう。

FreeBSD 10.0 July 19, 1999 FreeBSD 10.0

スポンサーリンク