MAKEROM(8)
π makerom(8) β Make bootrom image π
Okay so this is the makerom(8) page from the System Manager's Manual, and bestie, it's giving bootrom-building main character energy. π
No cap β makerom makes a netboot bootrom, either interactively or in batch mode, and we're gonna get into every single detail. Periodt.
πΈ NAME πΈ
makerom β Make bootrom image
β¨ SYNOPSIS β¨
makerom [OPTIONS]
π¦ DESCRIPTION π¦
makerom generates a netboot bootrom either interactively or in batch mode. The whole glow-up pipeline is: first it concatenates the bootrom kernel file with the network driver interface and the network driver (like packet or NDIS driver), then it compresses the resulting image, and then it concatenates that with either the floppy or the rom loader stubs. That's the magic trick, and it ate. β¨
π OPTIONS π
-b,--batch-sysSYS β Letsmakeromoperate in batch mode. It will look up the given system name in a database and generate a bootrom according to the specifications given in the database entry. If this option is not given,makeromwill operate in interactive mode, asking the user about all required parameters on the console. π«Ά-C,--config-fileFILE β Specifies the pathname of the configuration file. If this option is not given, the value of theNETBOOT_CONFIGenvironment variable or a compiled-in default will be used.-d,--driversFILE β Specifies the pathname of the network driver information file. If this option is not given, the name will be taken from the main configuration file, or a compiled-in default will be used.-D,--databaseFILE|DBSPEC β Pathname of database file (or database specification) to be used together with the-bor--batch-sysoptions. If this option is not given, the value of theNETBOOT_DATABASEenvironment variable or a compiled-in default will be used. See thenetboot(5)man page for a further explanation of database specifications. π-F,--logfileβ Name of log file to write debugging output to. The default is to print all verbose output tostdout. π¬-h,--helpβ Print short usage information.-H,--home-dirβ Specifies the home directory. If this command line option is not given, either thehomedirconfiguration file parameter or the current user's home directory will be used.-m,--md5sumsFILE β Specifies the path name of a file containing the MD5 checksums of the currently installed network drivers (MD5 checksum database file). π§-N,--datadirDIR β Specifies the directory wheremakeromlooks for the files required for generating a new bootrom. If this option is not given, the value of theNETBOOT_DATAenvironment variable or a compiled-in default will be used.-L,--libdirDIR β This directory holds system-dependant data files formakerom. The default value is either given by theNETBOOT_LIBenvironment variable or it is a compiled-in default.-v,--versionβ Print version information.-x,--verboseβ Increase verbosity level. π₯
πΈ INTERACTIVE MODE πΈ
When no -b or --batch-sys option has been specified on the command line, makerom will operate in interactive mode. It will ask for all the information necessary to build a bootrom for the target client. Of course it will only ask those questions which are really required for proper operation of the bootrom. Most questions have a list of allowed values given in round brackets. The default answer, which will be taken when you just press Enter, is printed in square brackets. Entering a question mark β ? β will print a short help text. π
π CONFIGURATION FILE π
Besides the [general] section, makerom also uses the [makerom:general] section of the configuration file. It contains general definitions only required by makerom. It can contain the following parameters:
driverdbβ Specification of the network driver information database. If missing, the default will be to read the text file//netboot.drivers. Seenetboot(5)about how to setup a database specification.md5sumsβ Pathname of the MD5 checksum database file. This file should contain the MD5 checksums of all network drivers which are currently installed. The format of this file is the same as produced by the GNUmd5sum(1)program. If themd5sumsoption is missing, the default will be//netdrvr/MD5SUMS. You can specify more than one file with this parameter. All file names have to be separated by a colon character.makeromwill search all MD5 checksum files in sequence when checking for a specific network driver file. πbindirβ Specifies the directory wheremakeromcan find the bootrom kernel, network driver interface and rom loader binary files. The default is//binaries.netdrvdirβ Specifies the directory where the network drivers can be found. All non-absolute network driver pathnames are relative to the value of this parameter. Its default value is//netdrvr.utilsdirβ This parameter specifies the directory where utility files (like the packet driver debugger) can be found. If this parameter is missing, the default//misc://utilswill be used. π οΈkernelβ Pathname of bootrom kernel file. The default iskernel.bin.romβ Pathname of rom loader file. The default isrom.bin.floppyβ Pathname of floppy loader file. The default isfloppy.bin.
If a file name specified in this section of the configuration file is not absolute, it will be treated as relative to the value of the binary directory parameter. For example, if the bindir parameter has the value //binaries, the main netboot directory is /usr/local/lib/netboot and the kernel parameter has the value kernel.bin, then the resulting file name which makerom will look up is /usr/local/lib/netboot/binaries/kernel.bin. π«Ά
π¦ SYSTEMS DATABASE π¦
The makerom records in the systems database use [makerom:<system name>] for the tag names. They can contain the following parameters:
π General bootrom parameters π
makerom can generate several output files in one run, all for the same client but with different loaders. The following parameters are used for every output file:
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. This parameter is required. βbustypeβ Specifies the bus type of the network card on which the resulting bootrom should run. The allowed values for this parameter areISA,EISA,MCAandPCI. If this parameter is not given,ISAwill be assumed.pcivendorβ Specifies the PCI vendor ID used by the network card. This value can be given as a decimal number or as a hexadecimal number if prefixed with0x. For example, Intel has the vendor ID0x8086assigned. This number will also be used by other vendors if their network cards use an Intel chipset. Thepcivendorparameter is required for PCI network cards.pcideviceβ Specifies the PCI device ID used by the network card. Like the PCI vendor ID this value can be given as a decimal or hexadecimal number. For example, the Intel EtherExpress Pro/10 PCI network card uses0x1226as its ID. This parameter is required for PCI network cards. πpnpdevidβ Specifies the device ID for non-PCI network cards. This parameter is required for ISA-PnP, EISA and MCA cards. Its value has to have a total length of 7 characters, with the first 3 characters being upper letters and the last 4 characters being hexadecimal digits. For example, an Intel EtherExpress 16 ISA card has been assigned an ID ofPNP812D.makeromis not able to check that this ID is correct, or even required or suitable for the bus type selected. β οΈkrnflagsβ These flags modify the behaviour of the bootrom kernel. The value to this option is a string which consists of comma-separated flag names. If a flag name appears in the string, that corresponding flag is set. The following flags are defined:nouidβ Prevents the bootrom to send a client UID. This might be necessary if the booted operating system also does not send a client UID, or it sends a different UID causing the bootrom and the operating system to receive different IP addresses from the DHCP server. This option has no effect when a BOOTP server is in use instead of a DHCP server. πoptsβ Lets the bootrom send an option request list with a DHCP request.nobpextβ Prevents the bootrom to load a BOOTP extension file via TFTP. This flag gets ignored with a DHCP server.
netdrvrβ Specifies the pathname of the network driver interface file to be used. If this pathname starts with two slashes, these slashes get replaced by the name of the main netboot directory. Otherwise, if the pathname is not absolute, it is taken to be relative to the binaries directory as specified in the main configuration file. This parameter is required. π§netdrvtypeβ Type of network driver interface that is supported by the interface file given with thenetdrvrparameter. The allowed values arepacket driver,ndis driverandundi driver. This parameter is required.netdrvflagsβ This is an integer value which is passed as a flag word to the network driver interface. The meaning of the different flags depend on the type of the network driver interface. Currently, only flags for the packet driver interface are supported:0x0001β Skip the hardware reset of the network card. This is needed for some buggy packet drivers which do not implement the hardware reset properly. π§0x0002β Do not use receive mode 0 of the packet driver. This receive mode turns off the network card receiver. However, some buggy packet drivers turn off the receiver permanently, and even turn off the transmit unit permanently without the ability to turn them on again when needed. When using this flag, mode 0 will never be used and will be simulated in software instead of hardware.0x0004β Override the IRQ found by the bootrom network driver interface code with the IRQ number given through the system PCI configuration. This is only necessary for some older PCI network cards for which the driver does not properly configure the interrupt setting. π
okay so the netdrvflags parameter has to be computed by adding the relevant values mentioned above π
. And listen β any other value for packet drivers, plus all values for any other network driver interface, is silently ignored. No warning, no drama, just vibes and a shrug π.
π Bootrom loader parameters
With these parameters you can specify up to three different output files for the same bootrom. Like, imagine you want output files with different hex encoding, or one output file for burning into a flash EPROM (that's the rom loader) and another for writing onto a floppy (that's the floppy loader). Same bootrom, different fits. Iconic, honestly β¨.
loaderXβ specifies the file names of all bootrom loaders.makeromwill create a bootrom image file for each rom loader specified π«Ά. TheXin the variable name can be a number from1to3. For eachloaderXvariable there has to be a correspondingoutnameXvariable as well. Normal substitution for the main netboot directory will occur.outnameXβ specifies the names of the bootrom image files created with the rom loaders π. For eachloaderXparameter there has to be a correspondingoutnameXparameter. They're a package deal, bestie.outsizeXβ this specifies the size of the output fileoutnameXin kB. Using this parameter, it's possible to write a smaller bootrom into a much larger EPROM β for example, to fill one EPROM with more than one option rom image π. If this parameter is missing, the size of a rom output file will be determined so that it will fit into the smallest possible EPROM. It will be ignored for the floppy bootrom loader.outtypeXβ this is an enumeration parameter which specifies the format of the output file generated for each bootrom image given inoutnameXπ. The following values are recognized:binaryβ raw binary for programming an EPROMintel hexβ bootrom image will be converted to Intel hex format for use with EPROM programmers which require this formatmotorola hexβ bootrom image will be converted to Motorola EXORmacs hex format for use with EPROM programmers which require this formattektronix hexβ bootrom image will be converted to Tektronix hex format for use with EPROM programmers which require this formatbiosβ raw binary for inclusion into a system BIOS. Heads up though: the netboot package currently doesn't provide any tools for actually including the resulting output file into the BIOS π. You have to use tools provided by the manufacturer of your BIOS and/or system board (for exampleamibcp.exefor an AMI BIOS, or the open source programawardmodfor different Award BIOS versions).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 or a Flash EPROM on the network card with the new bootrom image. This method can be used to easily update the bootrom in a diskless client without unmounting the cover β main character energy, fr fr. It doesn't make sense to use this output type with the floppy boot loader. Therefore, theloaderXparameter has to specify a rom loader when using theflashoutput file type.makeromwill not check for this condition β so that's on you, bestie π.
ldoptsXβ specify options forloaderX. By default, all options arefalseunless explicitly specified with this parameter. All option names are separated by a comma and have to be given in all lower case. Their order within the parameter argument string doesn't matter π . The following options are available:useint18β if this option is given, the bootrom will use interrupt18hfor startup, which is the 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 this option is not given, the bootrom will use interrupt19hinstead, 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), and immediately start the netboot process. Choices were made, and honestly? Valid β¨.nobbsβ with this option it's possible to disable support for the BIOS Boot Specification (BBS) in the bootrom. Using BBS, the BIOS is able to determine the order of devices on which to search for an operating system πΈ. If the BIOS does not support BBS, the bootrom will automatically disable BBS support. However, some BIOS do implement BBS support incorrectly, and the bootrom is not able to determine such a situation π. In those cases this option can be used. Only select it if the bootrom does not start up on reset. The default is to enable BBS support.bootaskβ if this option is given, the bootrom will ask the user if it should continue with the network boot process or not upon startup πββοΈ. Consent, but make it firmware.asktimeβ this option should be followed by an equal sign and a number between0and31. It specifies the time the bootrom will wait for a user to press a key when thebootaskoption (see above) is specified β³. A value of0means to wait forever. It is the default. If thebootaskoption is not given, theasktimeoption has no effect.devnumβ with this option it's possible to specify a certain network card if more than one card of the same type is installed in the client system π¦. The card numbers range from1to7. If the value of this option is zero, the bootrom will instead use that network card on which it is installed.
π§ Packet driver parameters
These parameters are only used with the packet driver interface.
pktdrvidxβ specifies the index number of the packet driver in the list of programs to load (see below).progXβ specifies the file names of programs to be loaded by the bootrom, including the packet driver π. TheXin the parameter name can be a number from0to7. For eachprogXparameter there has to be a correspondingargsXparameter as well. If the file name is not absolute it will be treated as relative to the utilities directory β except for the packet driver itself (identified by thepktdrvidxparameter), which is relative to the network driver directory π.argsXβ command line arguments for programprogX.minsizeXβ specifies the run-time size of programprogXin bytes.maxsizeXβ specifies the load size of programprogXin bytes.
π NDIS driver parameters
These parameters are only used with the NDIS driver interface.
protiniβ specifies the pathname of aprotocol.inifile, which will be parsed bymakeromπ. The bootrom will later use the parsedprotocol.inifile to simulate a protocol manager to the NDIS driver. Theprotocol.inifile has to have at least the entry for the NDIS driver used by the bootrom. This entry has to have at least adrivernamespecification, which has to be set according to what the NDIS driver expects. Typicalprotocol.inifiles for your NDIS driver can usually be found at the same place where you got your driver binary π. For a further explanation of the format of theprotocol.inifile, see the netboot documentation.ndisdrvidxβ specifies the index number of the NDIS driver in the list of programs to load (see below).progX,argsX,minsizeX,maxsizeXβ these four parameters have the same meaning for the NDIS driver interface as for the packet driver interface mentioned above π. However, an NDIS driver is usually unable to accept a command line, so you should leave the correspondingargsXoption empty.
πΈ UNDI driver parameters
These parameters are only used with the UNDI driver interface.
undiprogβ specifies the file name of the UNDI driver binary. If it's not absolute it will be treated as relative to the directory specified by thenetdrvrparameter in the main configuration file β¨.
π minsize and maxsize parameters
All DOS file specifications (those used with the packet and NDIS driver interfaces) use minsize and maxsize parameters. With these parameters it's possible to optimize the memory usage of the bootrom β especially when programs get loaded in addition to the network driver binary π₯. All these parameters are optional, and if any of them is missing, makerom tries to find a suitable default value (which can sometimes be wrong π). No cap.
minsizeβ this parameter specifies the run-time size of the program or network driver in bytes. If a program terminates normally, itsminsizevalue is zero. Only if the program or driver stays resident in memory should theminsizevalue be larger than zero π . You can determine it by running the program under plain DOS, and then inspect the memory usage using themem /ccommand. Add1024bytes for the PSP and for a safety margin to the number of bytes printed by thememcommand π«Ά.maxsizeβ okay so this is literally the number of bytes you're allocating so the program or driver can load. For EXE type programs you usually don't need to set this yourself, because makerom can read their memory needs straight out of the file header. COM type programs are a lil messier though. Usually it's enough to take the size of the program or driver binary file and add, say,4096bytes for PSP and stack to get themaxsizevalue. The real amount of memory required might differ because stacks have needs, but4096is probably a good stack-size assumption. If you don't give this parameter, makerom assumes a stacksize requirement of1024bytes by default. If that's too small β like your program or network driver crashes when the bootrom starts it β you have to use a largermaxsizeparameter. Especially if the COM type program has been compressed (for example withPKLITE, a popular executable compressor), this assumption might be wrong and you'll need a largermaxsizevalue. π
Since minsize gives the runtime size of a network driver, its value should only be smaller than maxsize if the driver really shrinks after it gets loaded. Sometimes a network driver actually increases in size because it has to allocate some internal buffer memory. In that case, minsize should have the same value as maxsize, and both should be large enough to hold the memory requirements of the network driver. Since makerom is unable to detect this condition, you should NOT let it assume default values here β specify the sizes correctly. π«Ά
If makerom can't automatically detect your network driver (for example because you're running it in batch mode, or the driver isn't mentioned in the network driver information database), you should run your packet driver under plain DOS first to find out its memory requirements and necessary command line options. If your network driver doesn't load under plain DOS, it will most likely not load in a bootrom either. π
π NETWORK DRIVER INFORMATION DATABASE π
The Driver Information Database contains definitions for all network driver interface files. It also contains definitions for a large number of different pre-known network drivers. However, it will only be used in interactive mode. When using makerom in batch mode, you have to specify all necessary parameters within the systems database using the record format mentioned above. β¨
Also note that not all network drivers named in the database files distributed with netboot are included in this package due to copyright reasons. In fact, most of the drivers mentioned in the database are manufacturer-provided network drivers, which can usually be found on the driver disks shipped with a network card, or on the manufacturer FTP or HTML server. For a listing of some network card manufacturers, see the netboot home page on http://netboot.sourceforge.net. It also contains direct links to some pages where you can find the latest drivers. π¦
π§ Network driver interface file definitions
For each network card, the netboot bootrom doesn't only require a network driver β it also requires an interface file for that driver. Currently, files are provided for the following interfaces: packet driver, NDIS driver and UNDI driver. For each interface a separate section has to be specified in the database. The sections are named [netdrv:<interface>] with the interface name being one of pktdrv, ndis or undi. Note that like with all other configuration files, these names have to be given in all lower case. Each section can have the following parameters:
descriptionβ specifies a description string for the interface. This string will be printed in interactive mode when more than one interface is available for a certain network card.filenameβ specifies the name of the binary file for the interface. If this file name is not absolute, it will be assumed to be relative to the binary directory as specified in the main configuration file.directoryβ specifies the directory or colon-separated directories where network drivers can be found for the interface.patternβ when printing a listing of the directories specified with thedirectoryparameter, only files that match the given patterns will be printed. All patterns in the value of this parameter have to be separated by colons. These patterns are like the simple command line patterns used by the shell, instead of regular expressions. A star character serves as a wildcard. π
π³ Network card descriptions
A network card description contains parameters that describe the hardware and are common for all drivers for a certain NIC. The section names are constructed as [card:<nicname>] where <nicname> specifies a unique name for a network card. If more than one section with the same NIC name appears in the database, the information used is the one that comes last. A network card section can contain the following parameters:
descriptionβ specifies a descriptive text for the network card. It will be printed in interactive mode in the listing of supported network cards.bustypeβ specifies the host bus type of the network card. If a card gets manufactured with different bus types, a separate section with a distinct<nicname>has to be written for each type. This parameter can have one of the following values:ISA,EISA,MCAandPCI.pcivendorβ if this NIC is a PCI card, this parameter specifies the PCI vendor ID. It has to be a numerical value, and can be given in hex if prefixed by"0x".pcideviceβ specifies the PCI device ID. This parameter also has to be numerical.pnpdevidβ specifies the PNP device ID, which is a string of 7 characters. The first 3 characters have to be upper case letters, and the last 4 characters have to be hexadecimal digits. This parameter is required if the NIC is a ISA/PnP, EISA or MCA card. However, makerom is not able to check if this parameter really is required or suitable for the card or bus type selected. πusedriverβ if no network driver has been specified for this NIC, then it is possible to use the network driver descriptions of a different NIC using this parameter. It specifies the<nicname>of that network card whose driver descriptions should be used.
π Network driver descriptions
Following a network card description, there can be one or more network driver description sections. Each such section has to have a name of [driver:<nicname>] with <nicname> being the same name as the one for the card description it belongs to. It is allowed to specify more than one driver description for a certain NIC. Each driver description section can have the following parameters:
driverdescβ specifies a descriptive string for the driver. This string will be printed in interactive mode if more than one driver for a selected network card has been found.drvtypeβ specifies the interface type supported for this driver. This enumeration parameter can have one of the following values:packet driver,ndis driverandundi driver. makerom will select the proper interface binary file according to this parameter.fileβ file name of the network driver binary. If this file name is not absolute, it will be looked up by using the search directory path specified in the interface description relevant for this network driver.paramsβ specifies the hardware parameters which makerom should ask the user about in interactive mode. This parameter is required when wildcards are used withcmdlineandprotinias described below. All parameter values have to be separated by commas. The following values are known:HW_IRQβ hardware IRQ numberIO_ADDRβ I/O port addressBASE_MEMβ base memory segment for shared RAMAUI_TYPEβ type of network connector to be usedDMA_NUMβ DMA channel number
Note that in contrast to all other enumeration values used with the netboot configuration files, these parameter values are all upper case. π
cmdlineβ for packet drivers, a command line is required. This parameter specifies the string to be used for it. This string can contain wildcards for certain values:%S,%sβ gets replaced by the default software packet driver interrupt number. This number is fixed and can't be changed.%H,%hβ gets replaced by the hardware interrupt number as entered by the user. makerom will only ask for a hardware interrupt number if theHW_IRQoption has been given with theparamsparameter.%A,%aβ gets replaced by the I/O port address as entered by the user. makerom will only ask for a I/O port address if theIO_ADDRoption has been given with theparamsparameter.%M,%mβ gets replaced by the base memory segment as entered by the user. makerom will only ask for a base memory segment if theBASE_MEMoption has been given with theparamsparameter.%D,%dβ gets replaced by the DMA channel number as entered by the user. makerom will only ask for a DMA channel number if theDMA_NUMoption has been given with theparamsparameter.%tβ gets replaced by the AUI type number as entered by the user. makerom will only ask for a AUI type number if theAUI_TYPEoption has been given with theparamsparameter.
Upper case wildcards get replaced by a hexadecimal number, while lower case wildcards get replaced by a decimal number. All wildcards used within the command line string (except the %S and %s wildcards which are fixed) have to be specified with the params parameter as described above. Otherwise, their value will not be asked for in interactive mode, and the resulting command line will get unpredictable substitutions. ππ₯
bestie, fr fr: if you skip the params setup for a wildcard, makerom is not gonna magically know what to put there β and unpredictable substitutions are exactly the kind of chaos we do not want in a bootrom. π
protiniβ so NDIS drivers need a protocol manager, right? And that manager reads aprotocol.inifile. The netboot bootrom simulates this whole mechanism, but it still needs theprotocol.inicontents that matter to the NDIS driver. This parameter can point at an actual file name, and thenmakeromreads that file as aprotocol.inifile. It literally does not have to be namedprotocol.iniβ any name you like is fine. Alternatively,protinican contain a string value that gets treated as the contents of aprotocol.inifile relevant for the NDIS driver. Since that kind of file contents usually needs newlines, the string should best be wrapped in double quotes. Then it can spread across multiple lines, and all newlines between the double quotes get copied into the string verbatim. Aprotocol.inifile contents β whether given as a string or by reading an actualprotocol.inifile β can use the same wildcards as a packet driver command line. See above for more wildcard explanation, bestie β¨md5sumβ specifies the MD5 checksum of the network driver binary. With this parameter you can specify different driver information records for different versions of a network driver. If themd5sumparameter is missing in a network driver record,makeromwill use that record whenever it is unable to find the network driver file name in the MD5 checksum database file specified in the configuration file or on the command line with the-mcommand line option. But if an MD5 checksum has been specified for a network driver record with themd5sumparameter, that record will only be used when the file name has been found in the MD5 database file, and the checksum values in the MD5 database file and the checksum given with themd5sumparameter are exactly the same. no cap on the exactness πminsizeβ specifies the runtime size of the network driver in bytes. See above for a further explanation of theminsizeparameter.maxsizeβ specifies the required number of bytes to load the driver into memory. See above for a further explanation of themaxsizeparameter.noresetβ this is a boolean parameter which specifies if the packet driver interface is allowed to use the NIC hardware reset feature. The default if this parameter is missing is false. This parameter is only necessary for very few packet drivers for which it is known that the hardware reset feature doesn't work correctly.nomode0β some buggy packet drivers do not correctly implement receive mode 0 to turn off the network card receiver, so using this boolean parameter allows to never use receive mode 0 when set to a value of true. Instead this receive mode is simulated in software. iconic workaround behavior tbh π«Ά
ποΈ COMPRESSED NETWORK DRIVERS ποΈ
Some network drivers β especially packet drivers β have been compressed by the manufacturer. They will decompress themselves when started, and that decompression requires a lot of memory π For EXE type programs, the memory requirement should be encoded into the EXE file header. However, for COM programs there is no such header. makerom tries to identify compressed programs. Currently, it only knows about the PKLITE compressor. All other runtime compressors (like LZEXE or TINYPROG for example) convert COM type programs into EXE files, which have the above mentioned header.
When makerom finds a compressed program it tries to find out how much memory will be required. Unfortunately, at least all PKLITE versions I found have a bug in the compressor which results in an incorrect specification about how much memory is required for the decompression. makerom can only rudimentarily check for this condition, and will print a warning in this case. It will then use a hopefully safe default. Even when makerom does not print this warning, the bootrom might fail on the compressed executable. Therefore, whenever you experience problems running the network driver either in its startup phase or during bootrom operation, you should check if it has been compressed, and decompress it manually if possible. Programs to do so can be found on many DOS software FTP sites, like ftp.simtel.net.
It doesn't make sense to use compressed executables anyway, since the final bootrom gets compressed by makerom also. likeβ¦ why double-compress the vibe? π
π PROTOCOL.INI FILES π
NDIS drivers require a so called protocol manager which gets simulated by the NDIS interface binary. However, this simulator needs a protocol.ini file like a real protocol manager. makerom parses this protocol.ini file and converts it into a format suitable for the bootrom. The contents of this protocol.ini file has to follow the same rules as layed out in the NDIS specification, published by Microsoft and 3Com.
In general, a protocol.ini file is divided into sections like all netboot configuration files. Each section has to start with a name enclosed in square brackets. Usually, the protocol.ini file used for a bootrom only requires one section for the network driver. All other sections usually found in a DOS protocol.ini file are not required and just increase the size of the bootrom. Especially, it's not necessary to specify a section for the protocol manager. makerom is presently unable to remove those unused sections, so you should not specify them in the first place.
Comments in a protocol.ini file are preceded by a semicolon, and will be removed by makerom internally, so that they don't take up any space in the final bootrom.
Like all netboot configuration files, each section of a protocol.ini file contains several parameters, with each parameter on a seperate line. However, in contrast to the netboot configuration files a protocol.ini file is parsed case-independently. All text in the file gets converted to upper case. A NDIS driver section has to contain at least the drivername parameter, followed by an equal sign and the driver name required by the NDIS driver. This name has to be exactly the one expected by the driver. You can usually find it in the documentation of the network driver. It commonly ends with a dollar sign. Other parameters might be necessary depending on the driver. Common parameters include: iobase, ramaddress and irq. It is also usually possible to define many other parameters for a network driver, like specifying the number of transmit or receive buffers etc.
Please note that when changing these numbers from within aprotocol.inifile, the memory requirement of a NDIS driver might change and might require differentminsize/maxsizevalues. For a further description of any additional NDIS driverprotocol.iniparameters refer to the documentation which comes with your driver.
π FILES π
For all files mentioned below the physical path might differ according to the configuration of makerom. See the netboot(5) man page for a further explanation of these files.
/usr/local/etc/netboot.configβ Main netboot configuration file.//netboot.driversβ Network driver information file, which contains information about various network driver interfaces and network driver binaries.//netdrvr/MD5SUMSβ Network driver MD5 checksum database.//netboot.dbβ Default database file for specifying system configurations.//binaries/kernel.binβ Standard bootrom kernel//binaries/floppy.binβ Floppy bootrom loader//binaries/rom.binβ Bootrom loader//binaries/netpkt.binβ Packet driver interface file//binaries/netndis.binβ NDIS driver interface file//binaries/netundi.binβ UNDI driver interface file//utils/pktwatch.comβ Packet driver debugger//netdrvr/pktdrvr/*β Packet driver executables//netdrvr/ndis/*β NDIS driver executables//netdrvr/undi/*β UNDI driver executables
π ENVIRONMENT VARIABLES π
See the netboot(5) man page for a description of all environment variables used by makerom.
π BUGS π
None known yet.
π SEE ALSO π
netboot(5), netboot.config(5), netboot.drivers(5)
π AUTHOR π
makerom was written by Gero Kuhlmann <gero@gkminix.han.de>.
Signing off from the MAKEROM(8) source/version corner, dated 15 Dec 2004 β this iconic little manual page ate and left no crumbs, bestie πβ¨π
π¦ where this page comes from
- nixos 26.05: netboot 0.10.2
- nixpkgs unstable: netboot 0.10.2
- Copyright (C) 1997-2007 Gero Kuhlmann <gero@gkminix.han.de>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms