kgzip -- compress a kernel
kgzip [-cv] [-f format] [-l loader] [-o output] file
The kgzip utility compresses a kernel or some other bootable binary.
Operation is in two phases as follows:
1. A load image of the executable file is built which omits all but the
`text' and `data' segments. This image is compressed using gzip(1)
and output as data in relocatable object format.
2. The object file is linked with a special self-hosting loader, producing
an executable suitable for booting with either the second- or
third-level bootstraps.
Supported object formats are 32-bit ELF and a.out ZMAGIC.
If the file operand has a `.o' suffix, input is assumed to be for the
link phase, and the first phase is omitted.
The options are:
-c Omit the link phase.
-v Display object file information.
-f format Use format as the output format, where format is `aout' or
`elf'. The default format is ELF.
-l loader Link loader as the loader.
-o output Name the output file output. The default is to use the input
name with the suffix `.o' (for relocatables) or `.kgz' (for
executables).
Global variables equivalent to the following are defined in the output:
struct kgz_hdr {
char ident[4]; /* identification: "KGZ" */
uint32_t dload; /* decoded image load address */
uint32_t dsize; /* decoded image size */
uint32_t isize; /* image size in memory */
uint32_t entry; /* entry point */
uint32_t nsize; /* encoded image size */
} kgz;
uint8_t kgz_ndata[]; /* encoded data */
The encoded data is simply gzip(1) output: a header (with no optional
fields); compressed data; and 32-bit CRC and size values.
/usr/lib/kgzldr.o The default loader
gzip(1), ld(1), a.out(5), elf(5), boot(8), loader(8)
The kgzip utility exits 0 on success, and >0 if an error occurs.
Robert Nordier <[email protected]>.
As symbols are lost, the usefulness of this utility for compressing kernels
is limited to situations where loader(8) cannot be used; otherwise
the preferred method of compressing a kernel is simply to gzip(1) it.
FreeBSD 5.2.1 July 19, 1999 FreeBSD 5.2.1 [ Back ] |