initramfs-tools自带的dhcp有时不能获取到ip,修改使用udhcpc配置dhcp,先禁用自带的网络配置:
sed -i -e '/configure_networking\(\)/{n; a\' -e 'return 0' -e '}' /usr/share/initramfs-tools/scripts/functions初始化时启动udhcpc:
cat << EOF > /usr/share/initramfs-tools/scripts/init-premount/00-network
#!/bin/sh
PREREQ=""
prereqs() {
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
interface=eth0
ip link set dev $interface up
udhcpc -i $interface -t 5 -T 5 -A 30 -b -s /scripts/udhcpc.script
exit 0
EOF
chmod +x /usr/share/initramfs-tools/scripts/init-premount/00-networkudhcpc调用的ip配置脚本:
cat << EOF > /etc/initramfs-tools/scripts/udhcpc.script
#!/bin/sh
case "$1" in
BOUND|bound|RENEW|renew)
# 配置网卡
ip addr flush dev $interface
ip addr add $ip/$mask dev $interface
ip link set dev $interface up
# 配置默认路由
ip route del default 2>/dev/null
if [ -n "$router" ]; then
for gw in $router; do
ip route add default via $gw dev $interface
done
fi
# 配置 DNS
if [ -n "$dns" ]; then
for ns in $dns; do
echo "nameserver $ns" >> /etc/resolv.conf
done
fi
;;
esac
exit 0
EOF
chmod +x /etc/initramfs-tools/scripts/udhcpc.script