X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=fai%2Fconfig%2Fscripts%2FDEBIAN%2F30-interface;h=e249b6746cd3f7d6eb893263a46922a96c761a80;hb=83828fe2683227f4d8ecb2343eff28439741b490;hp=3388dcf1d241bcc2f01df100161d6e0e3ff154d7;hpb=4261ad7e021ec77e7198cf42c3576dad07f12a64;p=automated-distro-installer diff --git a/fai/config/scripts/DEBIAN/30-interface b/fai/config/scripts/DEBIAN/30-interface index 3388dcf..e249b67 100755 --- a/fai/config/scripts/DEBIAN/30-interface +++ b/fai/config/scripts/DEBIAN/30-interface @@ -3,11 +3,43 @@ # modified from upstream fai example error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code +if ! ifclass STABLE; then + if ifclass VM; then + # older distro still uses eth0 + if ifclass BELENOS64; then + NIC1=eth0 + else + # For a vm, we only get ID_NET_NAME_MAC from below, + # but when it reboots, it uses ID_NET_NAME_SLOT. + NIC1=ens3 + fi + else + # get persistent interface name. Note, these class conditions + # will need to get modified for new oses. testing vm doesn't use + # it right now, but other vms do I'm sure. + for field in ID_NET_NAME_FROM_DATABASE \ + ID_NET_NAME_ONBOARD \ + ID_NET_NAME_SLOT \ + ID_NET_NAME_PATH \ + ID_NET_NAME_MAC; do + name=$(udevadm info /sys/class/net/$NIC1 | sed -rn "s/^E: $field=(.+)/\1/p") + if [[ $name ]]; then + NIC1=$name + break + fi + done + if [[ ! $name ]]; then + echo "$0: error: could not find systemd predictable network name" + exit 1 + fi + fi +fi + if ifclass DHCPC && [ $FAI_ACTION = "install" -o $FAI_ACTION = "dirinstall" ] then if ifclass VM; then cat > $target/etc/network/interfaces <<-EOF - # installed by FAI + # generated by FAI auto lo $NIC1 iface lo inet loopback iface $NIC1 inet dhcp @@ -24,7 +56,7 @@ EOF # you add some delay. # http://wiki.libvirt.org/page/PXE_boot_%28or_dhcp%29_on_guest_failed iface br0 inet dhcp - bridge_ports eth0 + bridge_ports $NIC1 bridge_stp off bridge_maxwait 0 EOF @@ -40,7 +72,6 @@ then netmask $NETMASK broadcast $BROADCAST gateway $GATEWAYS - hwaddress ether $(cat /sys/class/net/$NIC1/address) EOF [ -n "$NETWORK" ] && echo "localnet $NETWORK" > $target/etc/networks if [ ! -L $target/etc/resolv.conf -a -e /etc/resolv.conf ]; then