dracut/write-ifcfg-suse.sh

184 lines
5.1 KiB
Bash
Raw Normal View History

#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# NFS root might have reached here before /tmp/net.ifaces was written
udevadm settle --timeout=30
if [ -e /tmp/bridge.info ]; then
. /tmp/bridge.info
fi
if [ -e /tmp/vlan.info ]; then
. /tmp/vlan.info
fi
mkdir -m 0755 -p /tmp/ifcfg/
mkdir -m 0755 -p /tmp/ifcfg-leases/
get_vid() {
case "$1" in
vlan*)
echo ${1#vlan}
;;
*.*)
echo ${1##*.}
;;
esac
}
for netup in /tmp/net.*.did-setup ; do
[ -f $netup ] || continue
netif=${netup%%.did-setup}
netif=${netif##*/net.}
[ -e /tmp/ifcfg/ifcfg-$netif ] && continue
unset bridge
unset bond
unset bondslaves
unset bondname
unset bondoptions
unset uuid
unset ip
unset gw
unset mtu
unset mask
unset macaddr
unset slave
unset ethname
[ -e /tmp/bond.${netif}.info ] && . /tmp/bond.${netif}.info
uuid=$(cat /proc/sys/kernel/random/uuid)
if [ "$netif" = "$bridgename" ]; then
bridge=yes
elif [ "$netif" = "$bondname" ]; then
# $netif can't be bridge and bond at the same time
bond=yes
fi
if [ "$netif" = "$vlanname" ]; then
vlan=yes
fi
cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr
{
echo "# Generated by dracut initrd"
echo "NAME='$netif'"
if [ -f /tmp/net.$netif.has_ibft_config ]; then
echo "STARTMODE='nfsroot'"
else
echo "STARTMODE='auto'"
fi
local bootproto="static"
if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv6 ]; then
bootproto="dhcp6"
fi
if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv4 ]; then
if [ "$bootproto" = "dhcp6" ]; then
bootproto="dhcp"
else
bootproto="dhcp4"
fi
fi
echo "BOOTPROTO='$bootproto'"
if [ "$bootproto" = "static" ]; then
# If we've booted with static ip= lines, the override file is there
[ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
echo "IPADDR='$ip'"
if [ -n "$mask" ]; then
if strstr "$mask" "."; then
echo "NETMASK='$mask'"
else
echo "PREFIXLEN='$mask'"
fi
fi
if [ -n "$gw" ]; then
echo "GATEWAY='$gw'"
fi
fi
[ -n "$mtu" ] && echo "MTU='$mtu'"
} > /tmp/ifcfg/ifcfg-$netif
# bridge needs different things written to ifcfg
if [ -z "$bridge" ] && [ -z "$bond" ] && [ -z "$vlan" ]; then
# standard interface
{
if [ -n "$macaddr" ]; then
echo "LLADDR='$macaddr'"
else
echo "LLADDR='$(cat /sys/class/net/$netif/address)'"
fi
echo "INTERFACETYPE='Ethernet'"
} >> /tmp/ifcfg/ifcfg-$netif
fi
if [ -n "$vlan" ]; then
{
echo "INTERFACETYPE='Vlan'"
echo "VLAN_ID='$(get_vid $vlanname)'"
echo "ETHERDEVICE='$phydevice'"
} >> /tmp/ifcfg/ifcfg-$netif
fi
if [ -n "$bond" ] ; then
# bond interface
{
# This variable is an indicator of a bond interface for initscripts
echo "BONDING_MASTER='yes'"
echo "BONDING_MODULE_OPTS='$bondoptions'"
echo "INTERFACETYPE='Bond'"
} >> /tmp/ifcfg/ifcfg-$netif
local i=0
for slave in $bondslaves ; do
echo "BONDING_SLAVE_$i='$slave'" >> /tmp/ifcfg/ifcfg-$netif
i=$((i+1))
# write separate ifcfg file for the raw eth interface
{
echo "# Generated by dracut initrd"
echo "NAME='$slave'"
echo "INTERFACETYPE='Ethernet'"
echo "STARTMODE='hotplug'"
echo "BOOTPROTO='none'"
echo "# ETHTOOL=''"
} >> /tmp/ifcfg/ifcfg-$slave
done
fi
if [ -n "$bridge" ] ; then
# bridge
{
echo "INTERFACETYPE='Bridge'"
echo "BRIDGE='yes'"
echo "BRIDGE_STP='off'"
echo "BRIDGE_FORWARDDELAY='0'"
echo -n "BRIDGE_PORTS='"
} >> /tmp/ifcfg/ifcfg-$netif
if [ "$ethname" = "$bondname" ] ; then
{
for slave in $bondslaves ; do
echo -n "$bondname "
done
echo "'"
} >> /tmp/ifcfg/ifcfg-$netif
else
echo "$ethname'" >> /tmp/ifcfg/ifcfg-$netif
fi
fi
done
# Pass network opts
mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network
mkdir -m 0755 -p /run/initramfs/state/var/run/wicked
echo "files /etc/sysconfig/network" >> /run/initramfs/rwtab
echo "files /var/run/wicked" >> /run/initramfs/rwtab
{
cp /tmp/net.* /run/initramfs/
cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/resolv.conf
copytree /tmp/ifcfg /run/initramfs/state/etc/sysconfig/network
cp /tmp/leaseinfo.* /run/initramfs/state/var/run/wicked/
} > /dev/null 2>&1