Difference between revisions of "PXE booting for BIOS updates"
Line 36: | Line 36: | ||
== syslinux's memdisk module == |
== syslinux's memdisk module == |
||
− | The syslinux memdisk module can load a disk image over the network and create a RAM-backed virtual floppy or hard drive. For our purposes, a floppy will perform nicely. Most BIOS updates are pretty small files (1.8Mbytes for our Dell GX740 update). memdisk assumes that images smaller than 4Mibytes are floppies. We'll be creating a 3840kibyte floppy image and putting FreeDOS and the BIOS update on it. |
+ | The syslinux memdisk module can load a disk image over the network and create a RAM-backed virtual floppy or hard drive. For our purposes, a floppy will perform nicely. Most BIOS updates are pretty small files (1.8Mbytes for our Dell GX740 update). memdisk assumes that images smaller than 4Mibytes are floppies. We'll be creating a 3840kibyte floppy image and putting FreeDOS and the BIOS update on it. The floppy image will be stored in <code>/var/lib/tftpboot/fdboot.img</code>. Complete documentation for the memdisk module can be found in <code>/usr/share/doc/syslinux/memdisk.txt.gz</code>. |
= create a floppy image to netboot = |
= create a floppy image to netboot = |
Revision as of 21:42, 19 January 2011
So you're all about the free software. But you've just obtained a new (or old) machine. And its firmware is out of date and in need of updates. It doesn't have a floppy drive, just a CD or DVD drive and USB hard drive support. There aren't any copies of DOS or Windows in the house that might be used to for a firmware update. Ah, but it will netboot!
set up DHCP to point net-booting machines at a TFTP server
Here's an /etc/dhcp/dhcpd.conf stanza for the to-be-updated machine:
host yesdear { hardware ethernet 00:1a:a0:25:fc:f3; fixed-address 172.16.0.150; option host-name "yesdear"; next-server 172.16.0.1; filename "pxelinux.0"; }
The "next-server" keyword tells the client machine which TFTP server to contact. And the "filename" keyword tells it which file to download from that TFTP server.
install a TFTP server
TFTP is the "trivial file transfer protocol" defined in RFC 1350 (and others). It's a UDP based mechanism often used to get boot images over a network.
I'm running the "atftpd" TFTP server. It's home on the web seems to be ftp://ftp.mamalinux.com/pub/atftp/
Running Debian, atftpd is installed with the command apt-get install atftpd
. The package maintainer scripts will add an entry to /etc/inetd.conf and will create a directory called /var/lib/tftpboot from which atftpd will serve files.
Setting up pxelinux and create a config file
installing pxelinux
PXElinux is part of syslinux. Install it thusly:
apt-get install syslinux install -o root -g root -m 444 /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux.0
a PXElinux config file
The config file telling PXElinux what to do is also fetched from the TFTP server by the client machine. The config files live in the pxelinux.cfg
directory under the TFTP server's root. For us, this will be /var/lib/tftpboot/pxelinux.cfg
. PXElinux tries to fetch a number of config files in turn. This process is documented in /usr/share/doc/syslinux/pxelinux.txt.gz
. For our purposes, we'll just be setting up the default
config file. It reads like so:
label dos kernel memdisk append initrd=fdboot.img
This config file instructs PXElinux to load the memdisk driver from the TFTP server instead of a Linux kernel. And it tells the memdisk driver to read in the fdboot.img file from the TFTP server to use as a fake disk drive.
The memdisk driver is part of the syslinux distribution and must be copied to the TFTP server's root directory before the client can load it:
install -o root -g root -m 444 /usr/lib/syslinux/memdisk /var/lib/tftpboot/memdisk
syslinux's memdisk module
The syslinux memdisk module can load a disk image over the network and create a RAM-backed virtual floppy or hard drive. For our purposes, a floppy will perform nicely. Most BIOS updates are pretty small files (1.8Mbytes for our Dell GX740 update). memdisk assumes that images smaller than 4Mibytes are floppies. We'll be creating a 3840kibyte floppy image and putting FreeDOS and the BIOS update on it. The floppy image will be stored in /var/lib/tftpboot/fdboot.img
. Complete documentation for the memdisk module can be found in /usr/share/doc/syslinux/memdisk.txt.gz
.
create a floppy image to netboot
Get FreeDOS bits
mtools to format
- update /etc/mtools.conf:
- specify a file instead of a floppy special device
- specify 12-bit FAT
- use FreeDOS boot sector