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.

This philosophy, in the hands of amateurs, leads to inexplicably mind-numbing botches like the existence of two programs, “head” and “tail,” which print the first part or the last part of a file, depending. Even though their operations are duals of one another, “head” and “tail” are different programs, written by different authors, and take different options!
— The Unix Haters' handbook