Issues with x86 PXE-based tftpboot.img (Was: Re: Bug#140579: TFTP-booting the bootfloppies on i386 now working!)
Hi Michael, et al,
"Michael R. Schwarzbach" <firstname.lastname@example.org> writes:
> Hi *,
> I have successfully installed a debian with debian's boot-floppies via
> TFTP on i386. As already mentioned in this bug, there is a tool called
> "mknbi-linux" witch appends initrds to a tftpimage. "mknbi-linux is part
> of the debian package "mknbi" (Create tagged images for Etherboot or
> Netboot). If you add the root.bin to the existing tftpboot.img with
> "mknbi-linux" the boot-floppies do their work.
Thanks for documenting this, and for preparing a patch for the tftpboot.img
on x86 for boot-floppies. However, I'm not sure if this 'mknbi' procedure
is general for all x86 network boot methods, besides the Etherboot and
Netboot you cite. I have a good deal of experience in booting (normal
Debian systems, not Debian Installer) cluster nodes with Debian using
PXE-based (Preboot eXecution Environment) Intel Boot Agents (firmware v.
4.0.22 for those who really care) on EEPro 100+/M NIC's, however no
experience with network boot on Etherboot or Netboot. 
Unfortunately, the procedure you describe above does not seem to work with
my PXE-based cards, though that might not be particularly surprising, since
'mknbi' appears to be specifically formulated for the Etherboot/Netboot
projects. When my node retrieves the mknbi-modified 'tftpboot.img'
(boot-floppies 3.0.23) image from my tftp server, (downloads successfully,
tested with separate atftp client, then md5sum'd images on both ends of
connection) I get a screenful of colored image squares, and absolutely no
I can successfully network boot the boot-floppy kernel (non-modified x86
'tftpboot.img'), however, this image kernel panics when it
cannot find the root filesystem. Of course, this is completely expected,
since no root filesystem (initrd, NFS-Root, or otherwise) was specified. I
just mention the scenario as demonstration that the kernel itself
successfully network boots with my PXE-based configuration.
> I have writte a patch to the "tftpboot.sh" 1.25 that I got via CVS. The
> patch is appended to the mail. boot-floppies should add a
> build-dependency for "mknbi", and the skript should be working on future
> Then the tftpboot.img boots with etherboot- and netboot-roms. (I've only
> tested etherboot). If you wanna boot these images with a 3com rom, you
> need to extend it with "imggen", as I mentioned before (I've tested this
> one too). I'll contact the "mknbi" maintainer to include it in his package.
Other folks (in the discussion of the bug) have reported success with using
a network boot of the tftpboot.img, and then mounting boot-floppiy's
root.bin using NFS-Root (presumably after gunzipping, loopback mounting,
then NFS exporting). As mentioned above, I've done a lot of NFS-Root boots
of nodes (regular Debian root, not boot-floppy's root), but as far as I can
see from the kernel-configuration, there's no included support for NFS-Root
(nor would I really expect there to be in a general distribution boot-floppy
kernel). However, this implies, I believe, that any user would have to roll
their own boot-floppy kernel to use x86 network boot with NFS-Root, which
seems to be asking a lot of them.
In fact, I did just this (rolled my own boot kernel by adding compiled-in
support for CONFIG_ROOT_NFS, CONFIG_IP_PNP_DHCP, and, specific to my NIC,
CONFIG_EEPRO100 to the general boot-floppy kernel config) and performed a
completely successful PXE-based network boot of the Debian installer, using
NFS-Root. Everything installed great, and Woody seems to be really shaping
up. However, IMHO, the above process involves more sophisticated knowledge
of such issues than I would imagine acceptable for a general-use tftpboot
procedure on i386 (as well as requiring an NFS server, in addition to just
tftp and dhcp/bootp servers).
So, unless I'm mistaken, I'm afraid it might be a little premature to
consider x86 network boot installation as a solved problem. I'd very much
like to help out with making x86 tftpboot a reality for all network boot
clients, as convenient to use as network boot is on other architectures
(though that's probably a little harder due to really bad BIOS's in the x86
world), and I think I have enough experience to contribute (as well as a
ready supply of machines on which to test). Does anyone, more familiar with
boot-floppies than I am, have suggestions or guidance to direct this effort?
> sorry for taking so long and missing woody-freeze :(
> I've been on a longer vacation.
Thanks so much to the entire boot-floppies team!
PS Please cc me on replies.
 The real advantage, from my standpoint, of using PXE-based boards is
that there's no need for floppy-disks or custom-made boot-ROMs that I
believe many folks use to boot with Etherboot/Netboot. The downside is that
the PXE NIC's cost a little more, but generally PXE only adds ~ $5 to the
cost of good quality 3Com or Intel NIC's (I got mine for ~ $30 in quantity).
Other folks use LinuxBios (www.linuxbios.org) for similar benefits, with the
additional advantage of a generally more reliable transmission of the kernel
boot image than PXE (though PXE can get around this with multicast tftpd,
such as that provided, experimentally, by more recent atftpd) when large
numbers of clients simultaneously network boot. However, LinuxBios must
specifically support one's motherboard chipset, since it fully replaces the
default bios, and currently only some chipsets are supported. I'm looking
forward to playing around more with LinuxBios myself, in the future.
Daniel A. Freedman
Laboratory for Atomic and Solid State Physics
Department of Physics
To UNSUBSCRIBE, email to email@example.com
with a subject of "unsubscribe". Trouble? Contact firstname.lastname@example.org