network: add save_netinfo, fix problems with nfs->NM takeover
For NetworkManager to properly take over a NFS-root system, we need to have the interface name(s) in /tmp/net.ifaces and save the dhclient lease. This lets the ifcfg module do its magic. save_netinfo should properly write out /tmp/net.ifaces when needed, and copies the dhclient files into place.master
parent
1e4a880125
commit
e173f0b384
|
|
@ -105,6 +105,22 @@ setup_net() {
|
||||||
> /tmp/net.$netif.did-setup
|
> /tmp/net.$netif.did-setup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
save_netinfo() {
|
||||||
|
local netif="$1" IFACES="" f="" i=""
|
||||||
|
[ -e /tmp/net.ifaces ] && read IFACES < /tmp/net.ifaces
|
||||||
|
# Add $netif to the front of IFACES (if it's not there already).
|
||||||
|
set -- "$netif"
|
||||||
|
for i in $IFACES; do [ "$i" != "$netif" ] && set -- "$@" "$i"; done
|
||||||
|
IFACES="$*"
|
||||||
|
for i in $IFACES; do
|
||||||
|
for f in /tmp/dhclient.$i.*; do
|
||||||
|
[ -f $f ] && cp -f $f /tmp/net.${f#/tmp/dhclient.}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo $IFACES > /tmp/.net.ifaces.new
|
||||||
|
mv /tmp/.net.ifaces.new /tmp/net.ifaces
|
||||||
|
}
|
||||||
|
|
||||||
set_ifname() {
|
set_ifname() {
|
||||||
local name="$1" mac="$2" num=0 n=""
|
local name="$1" mac="$2" num=0 n=""
|
||||||
# if it's already set, return the existing name
|
# if it's already set, return the existing name
|
||||||
|
|
|
||||||
|
|
@ -84,14 +84,8 @@ source_hook netroot
|
||||||
# Run the handler; don't store the root, it may change from device to device
|
# Run the handler; don't store the root, it may change from device to device
|
||||||
# XXX other variables to export?
|
# XXX other variables to export?
|
||||||
if $handler $netif $netroot $NEWROOT; then
|
if $handler $netif $netroot $NEWROOT; then
|
||||||
# Network rootfs mount successful
|
# Network rootfs mount successful - save interface info for ifcfg etc.
|
||||||
for iface in $IFACES ; do
|
save_netinfo $netif
|
||||||
[ -f /tmp/dhclient.$iface.lease ] && cp /tmp/dhclient.$iface.lease /tmp/net.$iface.lease
|
|
||||||
[ -f /tmp/dhclient.$iface.dhcpopts ] && cp /tmp/dhclient.$iface.dhcpopts /tmp/net.$iface.dhcpopts
|
|
||||||
done
|
|
||||||
|
|
||||||
# Save used netif for later use
|
|
||||||
[ ! -f /tmp/net.ifaces ] && echo $netif > /tmp/net.ifaces
|
|
||||||
else
|
else
|
||||||
warn "Mounting root via '$netif' failed"
|
warn "Mounting root via '$netif' failed"
|
||||||
# If we're trying with multiple interfaces, put that one down.
|
# If we're trying with multiple interfaces, put that one down.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue