f21da59e81
We received an IP address from DHCP server and configure it statically. This is required if we continue to use network connectivity to access the root device (for example via NBD or NFS). The lease is not updated, though. This can cause trouble in networks with low lease times. So let's flush the addresses if root filesystem has been copied to RAM. A dhcp client in main system can handle the network connectivity then. Signed-off-by: Christian Hesse <mail@eworm.de>
58 lines
1.8 KiB
Bash
58 lines
1.8 KiB
Bash
# vim: set ft=sh:
|
|
|
|
run_hook () {
|
|
local i net_mac bootif_mac bootif_dev
|
|
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
|
local DEVICE
|
|
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
|
|
local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH
|
|
local filename
|
|
# /tmp/net-*.conf
|
|
|
|
if [[ -n "${ip}" ]]; then
|
|
if [[ -n "${BOOTIF}" ]]; then
|
|
bootif_mac=${BOOTIF#01-}
|
|
bootif_mac=${bootif_mac//-/:}
|
|
for i in /sys/class/net/*/address; do
|
|
read net_mac < ${i}
|
|
if [[ "${bootif_mac}" == "${net_mac}" ]]; then
|
|
bootif_dev=${i#/sys/class/net/}
|
|
bootif_dev=${bootif_dev%/address}
|
|
break
|
|
fi
|
|
done
|
|
ip="${ip}::${bootif_dev}"
|
|
fi
|
|
|
|
# setup network and save some values
|
|
if ! ipconfig "ip=${ip}"; then
|
|
echo "ERROR; Failed to configure network"
|
|
echo " Falling back to interactive prompt"
|
|
echo " You can try to fix the problem manually, log out when you are finished"
|
|
launch_interactive_shell
|
|
fi
|
|
|
|
. /tmp/net-*.conf
|
|
|
|
pxeserver=${ROOTSERVER}
|
|
|
|
# setup DNS resolver
|
|
if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then
|
|
echo "nameserver ${IPV4DNS0}" > /etc/resolv.conf
|
|
fi
|
|
if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then
|
|
echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf
|
|
fi
|
|
fi
|
|
}
|
|
|
|
run_latehook () {
|
|
[[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y"
|
|
|
|
if [[ "${copytoram}" == "y" ]]; then
|
|
ip address flush scope global
|
|
elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then
|
|
cp /etc/resolv.conf /new_root/etc/resolv.conf
|
|
fi
|
|
}
|