[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

diskless system's limited dhcp support



I have a buster system with no disk, started by PXE boot and using NFS root.
It appears (details below) that dhcp setup is via ipconfig in one of the initrd scripts (configure_networking() in the "functions" script), with ipconfig coming from klibc.  So fiddling with the settings in dhclient.conf on the client has no effect, and ipconfig both sends and handles a narrower range of information than dhclient.  In particular, it doesn't send the host name (it actually can according to the docs, but the initrd scripts don't invoke it that way) and it seems to ignore (or at least not pass on) some of the info, like the domain, that gets sent back.

I would like, in particular, to have the client send the host name and respond to the usual parameters the server sends it, as well as to ntp-servers which I'd like to send.

Any thoughts on whether my analysis is correct?  On solutions?

I suppose since it's at a fixed IP and controlled by the server I could just set the parameters I want in the client image, but that seems like a bit of a hack.  Also, I'd like the DNS entry for the system to appear only while it is up, and without the client sending a host name that's harder.

BTW, I tried forcing dhclient to run by telling /etc/network/interfaces to run it for that interface unconditionally.  The result was 2 distinct IP addresses for the same card (may have done that before I switched to a fixed IP).

I realize there may be good reasons to disable dhclient with nfs root; I have no idea what would happen if the client IP were changed while the system was running.  The client is assigned a fixed IP (outside of the pool) in the dhcpd.conf configuration.


DETAILS
Using wireshark on the server shows 2 sets of calls to DHCP from the client.  I'll give times as minutes and seconds past the hour:
28:22 initial DHCP discover.  The Vendor class identifier is "PXEClient:Arch...."; I assume this is the BIOS of the client machine initiating netboot.  This gets the IP and then pulls in the files that are part of the netboot via tftp.
28:41 second DHCP discover.  Vendor class "Linux ipconfig".  This asks for and gets the same IP as previously.  The ipconfig docs say "Linux ipconfig" is its standard identifier, and the scripts do not override it.  So I presume this is after control has been handed over to the initrd and it is running its scripts.

The script's invocation of ipconfig is buried in a lot of conditional logic, but it seems that it is called.

28:45  first entry in kernel log for that boot.  I expect the client and server clocks are pretty close, but I don't know that's true, especially this early in the boot.  The client CMOS battery is pretty low, and is not great at preserving the time; however, this boot was immediately after I did a system restart (shutdown -r now) on the client.  I believe 28:45 is immediately after the pivot from the initrd to the real system.



Reply to: