[CentOS] PXEBoot/Diskless client NFS issue

Fri Jan 25 17:24:42 UTC 2019
John Cole <john.cole.nh at gmail.com>

Hey CentOS list!

I've got an oddity with a diskless client setup that I suspect is the
result of the initrd.img I'm using, or some parameter I'm unaware -- or I
need to build my own initrd image (and could use some assistance on what
has to be done in that department)

Testbed is defined as:

VM A:
    ip: 192.168.250.10 with dhcp server, tftp server, nfs server
VM B:
    pxeboot VM, with no local disk, bios set to pxe, same internal network
as VM A
    Early on in the boot cycle, it grabs a DHCP address of 192.168.250.100,
with correct mask, gw etc from VM A

When I start the testbed setup:

On the master VM I see log messages with the NIC of the client getting an
address, and successfully loading pxelinux.0, pxelinux.cfg/default, vmlinuz
and initrd.img.

The PXE client on VM B boots up, downloads all the above images, unpacks
and executes the inird image.  I see drivers load and normal device
registration for the nics just fine.

After the PXE client VM shows the nic has its link up, this is where things
go wrong...

* The PXE client (that properly got an address in the 250 space to get its
images) sends out a DHCP discover message as would be expected.
* VM A responds with an offer of the same 192.168.250.100 address that was
used to load
* The PXE client comes back with a DHCPREQUEST for 192.168.85.128
* The DHCP server sends a DHCPNAK to the client, and offers the 250 address
again.
* The client never responds and the image seems to ignore the NAK/OFFER
* Eventually the diskless client comes back with a dracut-initqueue message
that (as a lease was not ACKed correctly reports) mount.nfs: Network is
unreachable

IF however, I run the identical configuration I mention above changing the
addresses from 192.168.250.x to the 192.168.85.x space to match the initrd
image request, everything works fine and the diskless client boots up
normally and I get a command prompt.   This would seem to indicate that
I've got an otherwise working setup.

The images I've always used for diskless boot are the ones prebuilt and
posted on the centos mirrors site --
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/    I've
confirmed they and the pxeboot.0 file I'm using are the most recent being
distributed.

I've also unsuccessfully tried to use the ip parameters on the
pxelinux.cfg/default line.  As this seems to me as the most relevant config
to post, here's what I've got there:

label kiosk
    kernel kiosk/vmlinuz
    append initrd=kiosk/initrd.img ip=dhcp
root=nfs:192.168.250.10:/var/lib/tftpboot/kiosk/root
rw selinux=0

If other configs are requested, I'll gladly provide them, but again all
works fine if I do this in the 192.168.85.x IP range.


Once I've got this particular problem solved, I'm looking to boot up and
bond BOTH NICs together, something I know should be possible, but I've not
done myself yet.   I believe that'd be handled in the append line as well.

Any assistance in what I need to do to build a proper initrd image that
doesn't suffer the problem of accepting a DHCP offered address, OR pointers
to a config parameter I'm missing would be most appreciated.   And a
breadcrumb to help me with the dual nic once I'm out of the woods would be
the "icing on the cake" but that's obviously a secondary concern right now!

Thanks
jc