EN JA
KGZIP(8)
KGZIP(8) FreeBSD System Manager's Manual 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
デフォルトのローダ。

終了ステータス

The kgzip utility exits 0 on success, and >0 if an error occurs.

作者

Robert Nordier <rnordier@FreeBSD.org>

バグ

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