---
name: "makerom"
section: "8"
platform: "linux"
package: "netboot"
version: "0.8.1-9"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/makerom"
---

# makerom(8)

Make bootrom image

## NAME

makerom - Make bootrom image

## SYNOPSIS

**makerom** \[OPTIONS\]

## DESCRIPTION

**makerom** generates an IP Boot-Rom either interactively or in batch mode. It works by first concatenating the bootrom kernel file with the program driver files (like packet driver etc.), then compressing the resulting image and concatenating it with either the floppy or the rom loader stubs.

## OPTIONS

- **-b, --batch-sys SYS**

  Lets **makerom** operate in batch mode. It will look up the given system name in a database file and generate a bootrom according to the specifications given in the database entry. If this option is not given, **makerom** will operate in interactive mode, asking the user about all required parameters on the console.

- **-C, --config-file FILE**

  Specifies a configuration file.

- **-h, --help**

  Print short usage information.

- **-N, --netboot-dir DIR**

  Specifies the netboot directory where **makerom** looks for the files required for generating a new bootrom. If this option is given, it will override the corresponding environment and configuration file settings.

- **-v, --version**

  Print version information.

- **-x, --verbose**

  Increase verbosity level.

## CONFIGURATION FILE

The following sections and parameters in the configuration file are used by **makerom**:

- **\[makerom:general\]**

  This section contains general definitions, like in what directories to find the necessary files for building a bootrom. It can contain these parameters:

  - **kerneldir**

    Specifies the directory where **makerom** looks for kernel files to generate a list of usable kernels in interactive mode.

  - **loaderdir**

    Specifies the directory where the bootrom and floppy loader stubs can be found.

  - **netdrvdir**

    Specifies the directory where **makerom** looks for network driver binaries in interactive mode.

  - **utilsdir**

    Specifies the directory where **makerom** looks for the utility files **ansidrv.com**, the bootrom ANSI display driver, and **pktwatch.com**, a program to debug the bootrom packet driver interface.

  For all these variables two leading slashes in the value get replaced by the name of the main netboot directory. Therefore, //kernel gets expanded to /usr/lib/netboot/kernel provided that the main netboot directory has been set to /usr/lib/netboot.

- **\[makerom:kernel:\<kernel name\>\]**

  These sections contain descriptions for the bootrom kernels **makerom** uses to actually create the final bootrom image, and will only be used in interactive mode. A configuration file can have as many kernel sections as necessary. However, each section has to have a unique *\<kernel name\>* as an identifier. The following parameters are recognized:

  - **description**

    This parameter requires a string value, which shortly describes the kernel image. It will be used in interactive mode when displaying the menu of available kernel images.

  - **file**

    String parameter giving the name of the kernel image file. It's relative to the kernel directory as specified by the **kerneldir** parameter in the general section.

  - **flags**

    This parameter specifies certain features of the kernel image. It has to be a string value consisting of one or several flag values. All flags have to be separated by a comma, with no blanks in between. The following flags are recognized (caution: case matters!):

    - **MINIMAL**

      Specifies a minimal kernel.

    - **X86**

      Specifies a kernel for a 16 bit x86 processor. If this kernel is selected in interactive mode, **makerom** automatically selects the corresponding 16 bit rom loader.

- **\[makerom:netdrv:\<driver name\>\]**

  Like with the kernel sections these describe the network driver binaries usable by **makerom** to create the bootrom image. It is also used in interactive mode only. The fields are defined as follows:

  - **description**

    A short description of the network driver which will be used in the network driver selection menu. This parameter is required.

  - **file**

    This string parameter names the file to be used for this network driver. It is relative to the directory given by the **netdrvdir** parameter in the general section. The **file** parameter is required.

  - **type**

    Specify the type of the network driver. It is a string parameter, and it's only recognized value presently is **packet** **driver**. If this parameter is missing, this value is also the default.

  - **parameters**

    The string value has to contain flags which describe what network driver command line options **makerom** should ask for in interactive mode. If it's empty, no parameters will be asked for. The following flags are recognized:

    - **HW\_IRQ**

      The network driver requires specifying the hardware interrupt of the network card.

    - **IO\_ADDR**

      The network driver requires specifying the I/O address of the network card.

    - **BASE\_MEM**

      If the network card uses shared memory, this flag tells **makerom** to ask the user for the base segment address of the shared memory.

    - **DMA\_NUM**

      Some network cards use a DMA line, which has to be specified to the network driver.

    - **AUI\_TYPE**

      If the network card supports different ethernet interfaces, this flag tells **bootrom** to ask for the type to be used.

  - **cmdline**

    This string value specifies how the command line to the network driver should look like. All characters in this string are copied verbatim into the command line, except the % character which stands for a placeholder for certain parameters. The character following the % specifies which parameter gets copied into the command line:

    - **%S**

      Software interrupt for the packet driver interface (hex)

    - **%H**

      Network card hardware interrupt (decimal)

    - **%A**

      Network card I/O address (hex)

    - **%M**

      Network card shared memory base address (hex)

    - **%D**

      Network card DMA chanal number (decimal)

    - **%T**

      Type of network interface to use (decimal)

    Of course, the **parameters** field should specify those parameters which are actually used with the command line. Otherwise, unpredictable substitutions may occur.

    **makerom** will use only those network driver sections for displaying the menu, for which it can find the specified file.

## DATABASE FILE

The makerom sections in the database file use \[\<system name\>:makerom\] for the tag names. They can contain the following parameters:

- **kernel**

  Specifies the name of the kernel file to be used. If the name starts with two slashes these get replaced by the name of the general netboot directory.

- **useint18**

  If this boolean parameter is **true**, the bootrom will use interrupt 18h for startup which is the old BASIC startup vector on old PC's. This interrupt gets called by the BIOS when it can't find a bootable floppy or hard disk partition. If the value of this variable is set to **false**, the bootrom will use interrupt 19h instead, which is the PC bootstrap interrupt. In this case, the system will not seek any hard disks in the system for a bootable partition (but will still check the first floppy drive), but immediately start the netboot process. The default for this parameter is **false**.

- **loaderX**

  Specifies the file names of all bootrom loaders. **makerom** will create a bootrom image file for each rom loader specified. The **X** in the variable name can be a number from 1 to 3. For each **loaderX** variable there has to be a corresponding **outnameX** variable as well. Normal substition for the main netboot will occur.

- **outnameX**

  Specifies the names of the bootrom image files created with the rom loaders. For each **loaderX** parameter there has to be a corresponding **outnameX** parameter.

- **outtypeX**

  This is an enumeration parameter which specifies the format of the output file generated for each bootrom image given in **outnameX**. The following values are recognized:

  - **binary**

    Raw binary for programming an EPROM

  - **intel hex**

    Bootrom image will be converted to Intel hex format for use with EPROM programmers which require this format.

  - **motorola hex**

    Bootrom image will be converted to Motorola EXORmacs hex format for use with EPROM programmers which require this format.

  - **tektronix hex**

    Bootrom image will be converted to Tektronix hex format for use with EPROM programmers which require this format.

  - **flash**

    The bootrom image will be prepended by a special boot loader which allows it to be booted using a bootrom. It will then program a FlashCard with the new bootrom image. This method can be used to easily update the bootrom in a diskless client without unmounting the cover. It cannot be used with the floppy boot loader. Therefore, the **loaderX** parameter has to specify a rom loader when using the **flash** option.

- **driverX**

  Specifies the file names of all driver programs (like network driver, ANSI display driver etc.) to be loaded into the bootrom. The **X** in the variable name can be a number from 1 to 8. For each **driverX** variable there has to be a corresponding **argumentX** variable as well. If the file name starts with two slashes these get substituted with the name of the main netboot directory.

- **argumentX**

  Specifies the command lines which have to passed to each of the drivers. The value of an argument variable can be empty. Everything following the equal sign up to the last non-blank character is used for the command line, including any blanks in between.

## BUGS

None known yet.

## SEE ALSO

[netboot.config(5)](/netboot.config/5.md)

## AUTHOR

**makerom** was written by Gero Kuhlmann \<gero@gkminix.han.de\>.
