You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
5.0 KiB
144 lines
5.0 KiB
#!/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 |
|
# Don't write anything if we don't know our bootdev |
|
[ -f /tmp/net.ifaces ] || return 1 |
|
|
|
read IFACES < /tmp/net.ifaces |
|
|
|
if [ -e /tmp/bond.info ]; then |
|
. /tmp/bond.info |
|
fi |
|
|
|
if [ -e /tmp/bridge.info ]; then |
|
. /tmp/bridge.info |
|
fi |
|
|
|
mkdir -m 0755 -p /tmp/ifcfg/ |
|
|
|
for netif in $IFACES ; do |
|
# bridge? |
|
unset bridge |
|
unset bond |
|
if [ "$netif" = "$bridgename" ]; then |
|
bridge=yes |
|
elif [ "$netif" = "$bondname" ]; then |
|
# $netif can't be bridge and bond at the same time |
|
bond=yes |
|
fi |
|
cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr |
|
{ |
|
echo "# Generated by dracut initrd" |
|
echo "DEVICE=$netif" |
|
echo "ONBOOT=yes" |
|
echo "NETBOOT=yes" |
|
if [ -f /tmp/net.$netif.lease ]; then |
|
strstr "$ip" '*:*:*' && |
|
echo "DHCPV6C=yes" |
|
echo "BOOTPROTO=dhcp" |
|
else |
|
echo "BOOTPROTO=none" |
|
# 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" |
|
echo "NETMASK=$mask" |
|
[ -n "$gw" ] && echo "GATEWAY=$gw" |
|
fi |
|
} > /tmp/ifcfg/ifcfg-$netif |
|
|
|
# bridge needs different things written to ifcfg |
|
if [ -z "$bridge" ] && [ -z "$bond" ]; then |
|
# standard interface |
|
{ |
|
echo "HWADDR=$(cat /sys/class/net/$netif/address)" |
|
echo "TYPE=Ethernet" |
|
echo "NAME=\"Boot Disk\"" |
|
} >> /tmp/ifcfg/ifcfg-$netif |
|
fi |
|
|
|
if [ -n "$bond" ] ; then |
|
# bond interface |
|
{ |
|
# This variable is an indicator of a bond interface for initscripts |
|
echo "BONDING_OPTS=\"$bondoptions\"" |
|
echo "NAME=\"Boot Disk\"" |
|
} >> /tmp/ifcfg/ifcfg-$netif |
|
|
|
for slave in $bondslaves ; do |
|
# Set ONBOOT=no to prevent initscripts from trying to setup already bonded physical interface |
|
# write separate ifcfg file for the raw eth interface |
|
{ |
|
echo "# Generated by dracut initrd" |
|
echo "DEVICE=$slave" |
|
echo "TYPE=Ethernet" |
|
echo "ONBOOT=no" |
|
echo "NETBOOT=yes" |
|
echo "HWADDR=$(cat /sys/class/net/$slave/address)" |
|
echo "SLAVE=yes" |
|
echo "MASTER=$netif" |
|
echo "NAME=$slave" |
|
} >> /tmp/ifcfg/ifcfg-$slave |
|
done |
|
fi |
|
|
|
if [ -n "$bridge" ] ; then |
|
# bridge |
|
{ |
|
echo "TYPE=Bridge" |
|
echo "NAME=\"Boot Disk\"" |
|
} >> /tmp/ifcfg/ifcfg-$netif |
|
if [ "$ethname" = "$bondname" ] ; then |
|
{ |
|
# Set ONBOOT=no to prevent initscripts from trying to setup already bridged bond interface |
|
echo "# Generated by dracut initrd" |
|
echo "DEVICE=$bondname" |
|
echo "ONBOOT=no" |
|
echo "NETBOOT=yes" |
|
# This variable is an indicator of a bond interface for initscripts |
|
echo "BONDING_OPTS=\"$bondoptions\"" |
|
echo "BRIDGE=$netif" |
|
echo "NAME=\"$bondname\"" |
|
} >> /tmp/ifcfg/ifcfg-$bondname |
|
for slave in $bondslaves ; do |
|
# write separate ifcfg file for the raw eth interface |
|
# Set ONBOOT=no to prevent initscripts from trying to setup already bridged physical interface |
|
{ |
|
echo "# Generated by dracut initrd" |
|
echo "DEVICE=$slave" |
|
echo "TYPE=Ethernet" |
|
echo "ONBOOT=no" |
|
echo "NETBOOT=yes" |
|
echo "HWADDR=$(cat /sys/class/net/$slave/address)" |
|
echo "SLAVE=yes" |
|
echo "MASTER=$bondname" |
|
echo "NAME=$slave" |
|
} >> /tmp/ifcfg/ifcfg-$slave |
|
done |
|
else |
|
# write separate ifcfg file for the raw eth interface |
|
{ |
|
echo "# Generated by dracut initrd" |
|
echo "DEVICE=$ethname" |
|
echo "TYPE=Ethernet" |
|
echo "ONBOOT=no" |
|
echo "NETBOOT=yes" |
|
echo "HWADDR=$(cat /sys/class/net/$ethname/address)" |
|
echo "BRIDGE=$netif" |
|
echo "NAME=$ethname" |
|
} >> /tmp/ifcfg/ifcfg-$ethname |
|
fi |
|
fi |
|
done |
|
|
|
# Pass network opts |
|
[ -d /run/initramfs ] || mkdir -m 0755 -p /run/initramfs |
|
cp /tmp/net.* /run/initramfs/ >/dev/null 2>&1 |
|
for i in /run/initramfs/state /run/initramfs/state/etc/ /run/initramfs/state/etc/sysconfig /run/initramfs/state/etc/sysconfig/network-scripts; do |
|
[ -d $i ] || mkdir -m 0755 -p $i |
|
done |
|
cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/ >/dev/null 2>&1 |
|
echo "files /etc/sysconfig/network-scripts" > /run/initramfs/rwtab |
|
cp -a -t /run/initramfs/state/etc/sysconfig/network-scripts/ /tmp/ifcfg/* >/dev/null 2>&1
|
|
|