Split off from Etherboot as mknbi-1.1-0 on 2001-02-18

+ Change Z5 unpack formats to a5 because Z introduced on in Perl 5.005.

+ Set dl to drvid just before calling boot block, in case some boot
blocks expect this.

+ Updated comments in first32.c to reflect Etherboot-5.0 memory map.

Released as mknbi-1.1-1 (development)

Released as mknbi-1.2-0 (production)

+ A debugging statement left behind in disnbi.pl, tsk.

+ Support setup.S header version 0x0202 where parameter string pointer
is 32-bit pointer.

+ Put mknbi version into vendor string so that it will be in image.

+ Derive version number of mknbi.pl and first32.c from VERSION in Makefile.

+ Replace 0x9000 by $relocseg, and add support for placement of Linux
segments at 0x90000 and 0x80000 upwards.

+ Makefile now makes 2 more versions of first32{,pm,elf}.linux for
placement at 0x92200 and 0x82200.

Released as mknbi-1.2-1 (production)

+ Vendor magic string changed due to addition of version number, this
caused the self consistency check to fail in first-*dos.

+ Use --oformat binary to cater for newest ld's.

+ Moved setup segment of mknbi-fdos to 0x93000. 0x97000 is used by
Etherboot now.

Released as mknbi-1.2-2 (production)

+ Added the --rdbase option to mknbi-linux, for specifying the memory
location of the ramdisk.

+ Added some tips by Phil Davey on creating bootable MSDOS images.

+ Henk van de Kamer pointed out that 2.88 MB floppies actually have 80
tracks and 36 sectors instead of 160/18. It doesn't matter for network
booting, but I changed it to reduce confusion.

+ Merged in changes by Peter Lister to support --rootmode=rw|ro.

+ Round down top of memory as returned by memory sizing routine to next
lower 4kB boundary to make sure that ramdisk will be aligned properly.

+ Implement missing functionality per spec: appending additional kernel
options from the vendor selection. RFC1533_VENDOR_SEL option holds value
of tag that holds the options string. If the 7th argument exists, append
it to kernel options after the global options, but before keyword=value
substitutions.

Released as mknbi-1.2-3 (production)

+ Hyun-Joon Cha discovered a trivial bug in 1.2-3.  The kernel
parameters are inserted twice, which may lead to overflow of the
parameter space.

+ A new (s)printf which does not limit the length of the output is now
used.

Released as mknbi-1.2-4 (production)

+ Renamed do_printf to vsprintf because that's the standard function it
has the same signature as.

+ Moved include of linux-asm-string.h into string.h in anticipation of
using string.h for other standalone binaries. Added signatures for more
string functions. Introduced stddef.h which contains minimal definitions
to port hosted programs. Current target: lua.

+ Daniel Wagner sent in patches to the Makefile so that distinct
intermediate files are used for the various first* images, otherwise
there will be problems with parallel makes (-j).

+ Implemented --noharddisk option to disable hard disk access. No, make
that --disableharddisk. In Perl Getopt --noharddisk is automatically the
inverse of --harddisk.

+ first-linux.S had the right parenthesis in the wrong place for the
initialisation of vmagic.

+ Print warning if zImage kernels are large enough to extend into
Etherboot area.

Released as mknbi-1.2-5 (production)

+ Implement --rdbase for mknbi-fdos and mknbi-dos to specify starting
address of ramdisk (floppy image).

+ Make first.*dos depend on Makefile so that the version signature gets
updated when the version is updated.

+ Print some friendly advice if --ip is not specified and there is no
ramdisk argument (i.e. probably needs NFSroot).

+ Shuffle segments to make more space for parameters and first32. This
version and future versions may not work with Etherboot images that have
been compiled with BOOTP_DATA_AT_0x93Cxx. (There is some reprieve due to
first32.c not using all 6kB of the allocated room yet, but that space
may be used some day.)

+ Implement interception and decoding of the mem= kernel parameter to
use as top of memory for the purpose of relocating the ramdisk.

Released as mknbi-1.2-6 (production)

+ Add E820 BIOS memory sizing routines from Etherboot written by Eric
Biederman. May help people with recent BIOSes.

+ Limit the top of ramdisk to 896MB for setup version 0x202 and earlier,
or the greater of the setup variable ramdisk_max or 896MB for setup
version 0x203 and later. If the user overrides it with mem=, then it's
their responsibility.

Released as mknbi-1.2-7 (production)

+ Add an EXTRAVERSION to Makefile, to be printed out by first32.c.

+ Modified call to int15h/e801 in start32.S to check for return values
in CX, DX in case BIOS doesn't return them in AX, BX.

+ Ported internal menu program from Etherboot to be external menu
program for mknbi-menu.

+ Updated URL for FreeDOS kernel sources.

Released as mknbi-1.2-8 (production)

+ Robb Main contributed an enhanced menu implementation, mknbi-nfl.

Released as mknbi-1.2-9 (production)

+ Add finalise_image hook in Elf.pm and Nbi.pm for later use.

+ Fixed start32.S to not rely on where it's called from, essential for
booting from Etherboot 5.1+. For this we have to switch GDT like
startmenu.S does.

Released as mknbi-1.2-10 (production)

+ Patch from Doug Ambrisko to handle BSD.

+ Put in serial port console.

+ Forgot to include binary menu in RPM version, spotted by Masaru
Kawashima.  Also make symlinks to man page while at it.

Released as mknbi-1.2-11 (production)

+ Changes by Eric Biederman for checksumming. Propagate
parse_elf_boot_notes to other menu programs.

+ printf ignores width specification now.

+ mknbi-rom loads ROM image at 0x60000 now.

+ Make printf return value of sprintf, as per C99 spec.

Released as mknbi-1.2-12 (production)

+ Relocated menu programs to 0x60000.

+ Rename some calls in startmenu.S for uniformity and hide some symbols
that don't have to be global.

+ Downloadable Lua interpreter.

Released as mknbi-1.4.0 (production)

+ Number segments in disnbi from 0 both in messages and in filenames.

+ Fix problem found by Eric in startmenu.S which affects segment
override on 486s.

+ Add -I. to CFLAGS to make sure we get our includes instead of the
system's.

+ In disnbi, call binmode on O not 0.

+ Quick and dirty Perl script to convert NBI Linux images to ELF.

+ Patches from Robb Main to handle larger "disks".

+ Added a --version option to display version.

+ Use lret to jump off to kernel instead of indirect jump through a
data location.

+ Warn if in a .UTF-8 locale as this may affect binary string handling.

Released as mknbi-1.4.1 (production)

+ Fixed bug in menu generator where ANSI escapes did not work. Was
broken by introduction of LUA interpreter.

Released as mknbi-1.4.2 (production)

+ first32.c can now be conditionally compiled as a DOS trampoline. Not
tested, have to postpone to 1.4.4.

+ Add Quit Etherboot entry to nfl.c.

+ Add mkelf-img program.

+ Use perl instead of sed to substitute variables. If they have perl
for execution they should have perl for building.

+ Fix a serious error in mkelf-linux where a reference to a memory
location in Etherboot was used after moving the initrd up in memory.

Released as mknbi-1.4.3 (production)

+ Improved spec file from Oron Peled.

+ Add memcmp to string.c and add string.o to list of objects to link,
as recent gcc versions don't provide a builtin memcmp anymore.

+ Merge patches from Isac, and Michael Brown pertaining to padding
of initrds and memdisk images.

+ Merge patch to menu-simple.c from Isac.

+ Merge corrected algorithm for calculating used sectors from Isac.

+ Don't print warning message for UTF-8 with Perl 5.8.3 onwards.
Earlier versions of 5.8.x may be safe too, let me know.

Released as mknbi-1.4.4 (production)
