[gPXE] Convert TFTP boot to gPXE

DiP aspamkiller at yandex.ru
Fri Aug 19 14:08:23 EDT 2011


I think you have to check your initrd.
For me wiki.archlinux.org directions have been very usefull in that way.
Look at the "Network boot NFS root" article.
I hope my working configuration will be usefull for you:

dd if=/srv/mixer/boot/gpxe-1.0.1-gpxe.usb of=/dev/<flash_card>

for booting client from that flashcard (I use it for clients that cannot boot from network)

dhcpd.conf

allow booting;
allow bootp;
group{
	option domain-name "home";
	option domain-name-servers 192.168.0.254;
	server-name "server.home";
	next-server 192.168.0.254;
	if exists dhcp-parameter-request-list {
		option dhcp-parameter-request-list = concat(option
		dhcp-parameter-request-list,d0,d1,d2,d3); }
	host mixer {
		hardware ethernet 00:30:4f:12:d9:a6;
		fixed-address 192.168.0.51;
		option routers 192.168.0.254;
		site-option-space "pxelinux";
		option pxelinux.magic f1:00:74:7e;
		option pxelinux.configfile "pxelinux.cfg/default";
		option pxelinux.pathprefix "http://server.home/";
		filename "http://server.home/boot.txt";
	}
}

/srv/mixer/boot/boot.txt

#!gpxe
echo Greetings!
kernel http://server.home/vmlinuz-linux  rootfstype=nfs root=/dev/nfs nfsroot=192.168.0.254:/srv/mixer,v3,rsize=16384,wsize=16384 ip=::::::dhcp
initrd http://server.home/initramfs-linux.img boot

/etc/exports

/srv/mixer 192.168.0.0/24(rw,fsid=0,no_root_squash,no_subtree_check,async)

and I have working archlinux installation in /srv/mixer/

from nginx.conf

    server {
      listen 192.168.0.254;
      server_name server.home;
      charset utf-8;
      access_log logs/tftp.access.log;
      root /srv/mixer/boot;
      autoindex on;
    }


If you want to boot your client from the standard network card ROM you have to change

	filename "http://server.home/boot.txt";
	to
	filename "http://server.home/gpxelinux.0";
so the BIOS of the card will boot gpxelinux, who will get paramethers from pxelinux.cfg/default where contents is:

default linux
label linux
kernel http://server.home/vmlinuz-linux
append initrd=http://server.home/initramfs-linux.img rootfstype=nfs root=/dev/nfs nfsroot=192.168.0.254:/srv/mixer,v3,rsize=16384,wsize=16384 ip=::::::dhcp

I placed all those files and dirs, eg pxelinux.cfg/ boot.txt gpxelinux.0 in the /srv/mixer/boot folder.

//Dimitri

On Fri, 19 Aug 2011 15:30:40 +0000
Ben Francis <wirelessben at gmail.com> wrote:

> I have a netboot system that works over TFTP.  It consists of vmlinuz and
> initrd.
> 
> I want to convert it to gPXE so it will boot across subnets.
> 
> So I put the files on a web server and tried to test from the gPXE command
> line:
> 
> *gPXE> kernel http://ip-address/gpxe/vmlinuz
> *
> That command works. However,
> 
> *gPXE> initrd http://ip-address/gpxe/initrd
> *
> just slowly fills up the screen with periods. I tried using the
> *append *command
> from the working pxelinux setup:
> 
> *append ramdisk_blocksize=4096 initrd=/gpxe/initrd root=/dev/ram0
> ramdisk_size=144000000 console=ttyS3 splash=silent vga=791
> *
> but gpxe doesn't have append.
> 
> The initrd is about 143MB.
> 
> What to do?
> 
> Ben


More information about the gPXE mailing list