[gPXE] Convert TFTP boot to gPXE
Ben Francis
wirelessben at gmail.com
Mon Aug 29 15:35:13 EDT 2011
This worked:
gPXE> dhcp net0
gPXE> initrd http://ip-address/gpxe/initrd
gPXE> kernel http://ip-address/gpxe/vmlinuz root=/dev/ram0
ramdisk_blocksize=4096
ramdisk_size=144000000
gPXE> boot
So gPXE doesn't like quotes.
Thanks to Gene, Andrew, and Dmitri for all the hints!
Note: The http download of the 140 MB initrd was about ten times faster than
tftp, confirming what H. Peter Anvin said in a similar thread.
Cheers!
Ben Francis
On Fri, Aug 19, 2011 at 9:49 PM, Gene Cumm <gene.cumm at gmail.com> wrote:
> On Fri, Aug 19, 2011 at 15:53, Andrew Bobulsky <rulerof at gmail.com> wrote:
> > Ben,
> >
> > Not entirely sure what the problem is there. In my experience, 150
> > megs or so should come down within 20 seconds on gigabit when using
> > the undionly.kpxe build. The best suggestion that I have is to try
> > monitoring the download from the server end, if possible. If your
> > webserver doesn't let you easily do that in real time, I can suggest
> > HFS. It's a very small Windows app that makes a great HTTP File
> > Server in a pinch: http://www.rejetto.com/hfs/
> >
> > Otherwise, perhaps someone else may have an idea :)
> >
> > Cheers,
> > Andrew Bobulsky
>
> 1) What about Wireshark on the server? This would be especially handy
> if something else by chance is interfering (although unlikely)
>
> 2) Why not a middle of the road file (say 14 MiB but 10-20 would
> suffice nicely)?
>
> 3) Is your initrd completely uncompressed? If so, look into what
> decompression your kernel supports (recent kernels can even support XZ
> compressed initrds).
>
> 4) Does it eventually load that initrd or does it eventually just
> fail? What HTTP daemon? Tried using your web browser to ensure you
> can appropriately download it (including a post-download check like
> sha1sum)?
>
> 5) By "bigger blocksize", are you thinking the data size that each
> period character represents? I know PXELINUX changed in the last year
> or so to a much larger block size per period character.
>
> --
> -Gene
>
> > On Fri, Aug 19, 2011 at 3:19 PM, Ben Francis <wirelessben at gmail.com>
> wrote:
> >> Dimitri,
> >>
> >> The same initrd works when I boot over TFTP using pxelinux.0, but it
> doesn't
> >> work from the web directory, so I think the initrd is good. Thanks for
> >> archlinux link.
> >>
> >> Andrew, I tried loading the initrd first before the kernel, i.e.
> >>
> >> gPXE> dhcp net0
> >> DHCP (net0 mac-address).... ok
> >> gPXE> initrd http://ip-addres/gpxe/initrd
> >>
> .............................................................................................................
> >>
> .....................................................................................................................................................
> >>
> .....................................................................................................................................................
> >> .......................(20 lines of this)
> >>
> >> is the result for about ten minutes now. Same problem.
> >>
> >> The initrd IS a huge file at 143MB, but my network downloads that size
> file
> >> over tftp in about a minute. gPXE was loading the 1.4 MB vmlinuz file in
> one
> >> second, so it seems gPXE knows how to download a file quickly.
> >>
> >> Can the initrd command take parameters like a bigger blocksize, say
> 4096?
> >>
> >> Ben
> >>
> >> On Fri, Aug 19, 2011 at 6:08 PM, DiP <aspamkiller at yandex.ru> wrote:
> >>>
> >>> 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)<http://192.168.0.0/24%28rw,fsid=0,no_root_squash,no_subtree_check,async%29>
> >>>
> >>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://etherboot.org/pipermail/gpxe/attachments/20110829/70f11b2d/attachment.html>
More information about the gPXE
mailing list