KGZIP(8) | FreeBSD System Manager's Manual | KGZIP(8) |
名称
kgzip — カーネルを圧縮する書式
kgzip | [ -cv][ -f format][ -l loader][ -o output] file |
解説
kgzip ユーティリティは、カーネルその他のブート可能バイナリを圧縮します。この動作は次の 2 つのフェーズからなります。- 実行可能ファイルのロードイメージは、‘text’セグメントと‘data’セグメント以外のすべてを省略して作成されます。このイメージを gzip(1) を用いて圧縮し、再配置可能なオブジェクト形式として出力します。
- 出力されるオブジェクトファイルは、特殊な自立ローダとともにリンクされ、第 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.作者
<rnordier@FreeBSD.org>バグ
シンボル情報は失われていますので、カーネルの圧縮にこのユーティリティを使う利点は、 loader(8) が使用できない状況に限られます。それ以外の場合、単に gzip(1) を使ってカーネルを圧縮する方が望ましいでしょう。July 19, 1999 | FreeBSD |