tail head cat sleep
QR code linking to this page

manページ  — KGZIP

名称

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)

診断

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

作者

Robert Nordier <rnordier@FreeBSD.org>

バグ

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

KGZIP (8) July 19, 1999

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.