[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