<div dir="ltr">Thanks a lot Michael and Gene!<div><br></div><div>I am loading gPXE from USB using the ./bin/gpxe.usb.</div><div><br></div><div>I tried with using the gPXE script Michael suggests, but gPXE reported "no specific image to load" at 'boot'. When I use 'boot vmlinuz', then there's the old errors of not finding RAMDISK and unspecified root. Does it mean I have the wrong kernel or initrd image? The 'vmlinuz' file is from the /boot folder, and the 'diskless_initrd.img' is made by dracut. </div>


<div><br></div><div>I will try some of the PXELINUX version suggested by Gene, and I already switched to iPXE. Meanwhile, I still have one question which seems to be common to both gPXE and iPXE. </div><div><br></div><div>


Because I'm using static IP, I think due to our network setup, it takes the gateway some time to recognize the new IP every time it is set. The result is, when I use the script to setup static IP, the following fetching for image will have a connection timeout, because either the DNS or the gateway hasn't responded yet. So every time I have to Ctrl+B and manually type the image fetching command again after the connection timeout, and that will work. In iPXE, it seems to quit the moment the connection failure occurs and I don't have opportunities to go into command line. So my question is, is there a command or some way to do a sleep() to wait for the IP address to be ready and then start to fetch the image? Or maybe a way to set a number of retries for the fetching command?</div>


<div><br></div><div>Thanks,</div><div>Allan</div><div class="gmail_extra"><br clear="all"><div><br>--<br>Di Wu (Allan)<br><a href="http://www.cdsc.ucla.edu/" target="_blank">Center of Domain-Specific Computing</a>,<br>
Department of Computer Science, UC Los Angeles<br>Email: <a href="mailto:allwu@cs.ucla.edu" target="_blank">allwu@cs.ucla.edu</a><br>Phone: <a href="tel:310-982-5215" value="+13109825215" target="_blank">310-982-5215</a><br>

</div>
<br><br><div class="gmail_quote">On Fri, Dec 6, 2013 at 4:33 PM, Gene Cumm <span dir="ltr"><<a href="mailto:gene.cumm@gmail.com" target="_blank">gene.cumm@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div>On Fri, Dec 6, 2013 at 6:39 PM, Allan Wu <<a href="mailto:allwu@cs.ucla.edu" target="_blank">allwu@cs.ucla.edu</a>> wrote:<br>
> Hello,<br>
><br>
> I got a problem of starting PXELINUX with gPXE using HTTP server. I am<br>
> trying to setup a diskless system using gPXE. I intend for all the client<br>
> machines to use static IP in the network, and our network already have a<br>
> DHCP server which is difficult for me to modify. So I want to use gPXE to<br>
> assign static IP for my client machine and obtain image from a HTTP server.<br>
><br>
> In gPXE, I can successfully load the pxelinux.0 file and execute it.<br>
> However, PXELINUX then reported an error saying "Unable to locate<br>
> configuration file". I tried with several versions but got similar problems.<br>
><br>
> In general, I want to set each client with static IP to get around the DHCP<br>
> server, which seems to work for getting the images. I also tried to load the<br>
> initrd image and vmlinuz kernel directly. But I got error saying the kernel<br>
> cannot find ramdisk. I think I need to use the parameters such as 'initrd='<br>
> and 'root=' when booting the kernel. Is there a way to do that with gPXE<br>
> along? I'm open to other alternatives, since my approach may be limited on<br>
> my lack of knowledge.<br>
><br>
> My setup looks like this:<br>
><br>
> - On the HTTP server:<br>
> <a href="http://xxxx.xxx.xxx/xxx/tftpboot/" target="_blank">http://xxxx.xxx.xxx/xxx/tftpboot/</a>   ~ this is the root directory for the<br>
> pxelinux file<br>
> ./pxelinux.0<br>
> ./pxelinux.cfg/default<br>
> ./centos6/                          ~ this directory contains the ramdisk<br>
> image and kernel<br>
><br>
> The pxelinux configure file looks something like this:<br>
><br>
> default rhel6<br>
> label rhel6<br>
> kernel centos6/vmlinuz<br>
> append initrd=centos6/diskless_initrd.img<br>
> root=nfs:xxx.xxx.xxx.xxx:/diskless/x86_64/RHEL6/root/ rw<br>
><br>
> - For my client, I embedded a static.gpxe script looks something like this:<br>
> #! gpxe<br>
> ifclose net0<br>
> set net0/ip       xxx.xxx.xxx.xxx<br>
> set net0/netmask  xxx.xxx.xxx.xxx<br>
> set net0/gateway  xxx.xxx.xxx.xxx<br>
> set net0/dns      xxx.xxx.xxx.xxx<br>
> ifopen net0<br>
> set 209:string pxelinux.cfg/default<br>
> set 210:string <a href="http://xxx.xxx.xxx/xxx/tftpboot/" target="_blank">http://xxx.xxx.xxx/xxx/tftpboot/</a><br>
> chain ${210:string}pxelinux.0<br>
><br>
> After this the PXELINUX is booted, but then failed on the error. I was using<br>
> PXELINUX 4.02. For newer version, I also tried 5.10, but then PXELINUX<br>
> stucks on the first line (version and copyright stuff).<br>
<br>
</div></div>How are you loading gPXE, from floppy/ISO/USB?<br>
<br>
For a first test, I'd suggest a different version of PXELINUX.  Having<br>
seen numerous bugfixes on <a href="mailto:syslinux@zytor.com" target="_blank">syslinux@zytor.com</a>, I'd suggest starting<br>
with the precompiled binaries from the binary/source archive at<br>
<a href="http://kernel.org" target="_blank">kernel.org</a> and using 4.07.<br>
<br>
If you want to try 5.1x, you can either use gPXE to load<br>
core/pxelinux.0 via HTTP then com32/elflink/ldlinux/ldlinux.c32 (yes,<br>
it needs that before the configuration file) OR set DHCP option 210<br>
(direct or encapsulated) on your DHCP server and load core/lpxelinux.0<br>
from TFTP then all other files relative to the prefix in 210.  I'd<br>
suggest version 5.11-pre9 for your first test of a 5.1x version.<br>
<br>
Also, if you wanted to try 6.0x, either 6.02 or 6.01, either<br>
bios/core/pxelinux.0 or bios/core/lpxelinux.0 with<br>
bios/com32/elflink/ldlinux/ldlinux.c32<br>
<span><font color="#888888">--<br>
-Gene<br>
</font></span></blockquote></div><br></div></div>