Package: initramfs-tools
Version: 0.133+deb10u1
Severity: normal
X-Debbugs-CC: rossboy...@stanfordalumni.org

Dear Maintainer,

   * What led up to the situation?
     PXE booting a system with NFS root using isc-dhcp-server and
     tftpd-hpa, most of the options passed by the dhcp server to the
     client do not take effect.   In particular the domain name and
     ntp-server arguments do not affect the final system.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?
     Traced through the init scripts and recorded network traffic to
     better understand the problem. This didn't suggest any ready cures.

     Manually created /etc/resolv.conf with some of the values dhcp
     was trying to set.  However, hostname --fqdn produces only the
     unqualified hostname.

   * What outcome did you expect instead?
     I expected that the system that finally came up would reflect the
     options dhcp communicated to it.

Analysis: when PXE booting the DHCP server is called twice, first from
the system or network card firmware (I assume) to get the initial PXE
image pxelinux.0, and second from within the initrd environment.
The second invocation is from klibc's ipconfig.

1) It is unclear to me if ipconfig understands the full range of
possible dhcp options.  Only a few are mentioned as possibilities on
the command line in the long form of the interface option as
addr:server:gateway:netmask:interface:proto, and only a few are written
to the file mentioned next.

2) The initrd process does result in some info from dhcp being written
to /run/net-<dev>.conf, which is accessible from the final client
system (i.e., after the pivot).  That does include the domain name
(DNSDOMAIN) and search list (DNSSEARCH), but nothing about ntp servers
(which are specified in dhcpd.conf in my setup).  As far as I can
tell, the domain and search list are not actually used in the final
client system.

It may be that processing the information correctly from
/run/net-<dev>.conf requires changes in the basic system
initialization scripts, rather than, or as well as, changes to this
package.

Apparently, the final client system does not start dhclient or call
dhcp.  I think this means that if the client is given a temporary
lease it will not defend it.  I have avoided that issue by using a
permanent fixed IP. I do not know if an nfs root system could survive
a change in its own IP address.

So there may be good reasons not to have the final system start a dhcp
client (aside from the obvious point that it already has an interface
up with an IP assigned), but this means that using such a client to
get parameters that have been missed in the initrd is not an option.

I prepared this bug report inside a chroot for the system that I
netboot.  So this should be the environment in which new initrd's are
generated.  I copy those initrds manually so they are available during
the PXE boot.

I reviewed the changelog for the current sid version, 0.139, and did
not see any changes that bore on this behavior.

Stepping back, there is a basic tension between the usual way the
network comes up and the way it does with an nfs root system.
Usually, the final system is already active when the network
interfaces come up, and lots of the startup logic can be hung off the
event of the interface coming up.  With nfs root, the network comes up
in the initrd.  This is a problem because that limited environment
does not have access to the regular tools like dhcp clients and the
whole systemd startup machinery.  And it is  a problem because, since
the full system doesn't bring the interface up, all the hooks that are
tied to the interface coming up never fire.

-- Package-specific info:
-- initramfs sizes
-rw-r--r-- 1 root root 36M Sep 27 13:54 /boot/initrd.img-4.19.0-11-amd64
-rw-r--r-- 1 root root 36M Oct 19 13:46 /boot/initrd.img-4.19.0-12-amd64
-- /proc/cmdline

-- /proc/filesystems

-- lsmod

-- /etc/initramfs-tools/modules

-- /etc/initramfs-tools/initramfs.conf
MODULES=most
BUSYBOX=auto
KEYMAP=n
COMPRESS=gzip
DEVICE=
NFSROOT=auto
RUNSIZE=10%

-- /etc/initramfs-tools/update-initramfs.conf
update_initramfs=yes
backup_initramfs=no

-- mkinitramfs hooks
/etc/initramfs-tools/hooks/:

/usr/share/initramfs-tools/hooks:
btrfs
dmsetup
fsck
fuse
keymap
klibc-utils
kmod
mdadm
ntfs_3g
plymouth
resume
thermal
udev
zz-busybox


-- System Information:
Debian Release: 10.6
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-12-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=
(charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: unable to detect

Versions of packages initramfs-tools depends on:
ii  initramfs-tools-core  0.133+deb10u1
ii  linux-base            4.6

initramfs-tools recommends no packages.

Versions of packages initramfs-tools suggests:
pn  bash-completion  <none>

-- no debconf information

Reply via email to