我想configuration我们的服务器以两个绑定接口的NFS根启动。
我设法使用启用了NFS根启动的initrd和以下内核参数,使用一个networking接口成功设置NFS根目录
root=/dev/nfs nfsroot=192.168.1.1:/nfsroot/ubuntu ip=dhcp initrd=initrd.img
我发现有关如何在博客文章中设置与NFS-root绑定的信息 。
由于我使用的是Ubuntu,所以必须将绑定模块添加到/etc/initramfs-tools/modules的末尾。 我build立一个新的initrd并使用内核参数
root=/dev/nfs nfsroot=192.168.1.1:/nfsroot/ubuntu biosdevname=0 bond=bond0:eth0,eth1:mode=4:miimon=100:lacp-rate=1:slaves=none:xmit_hash_policy=layer3+4 ip=bond0:dhcp initrd=initrd.img
当我启动服务器时,我得到一个内核恐慌,显示在消息之后
ipconfig: can't parse IP address 'bond0'
任何人都可以帮我解决这个问题吗?
启动日志的相关部分可以在这个要点中find。
更新:
在深入了解Ubuntu引导过程后,我发现目前有两种不同的方法来创build初始ramdisk。 Ubuntu使用initramfs-tools,RedHat使用最新的dracut工具。 我引用的博客文章是为Fedora编写的,为dracut列出的引导参数对Ubuntu不可用。 由于我无法弄清楚如何处理与initramfs工具的绑定接口,我在Ubuntu上使用了dracut,并在博客文章中写下了我的发现。 安装和configurationdracut以通过VLAN标记的networking从NFS-root引导Ubuntu 12.10使用绑定的接口 。
稍微编写一段脚本后,我就可以使用通过内核cmdline指定的dynamicslave界面来使用initramfs-tools。
将绑定模块和以太网模块添加到/etc/initramfs-tools/modules
igb bonding
然后使用0755 perms创build/etc/initramfs-tools/scripts/nfs-top/00_bonding_init并使用以下命令填充它:
#!/bin/sh -e PREREQS="" case $1 in prereqs) echo "${PREREQS}"; exit 0;; esac echo "Network interfaces loaded: " echo `ls /sys/class/net` for x in $cmdline; do case $x in bondslaves=*) bondslaves="${x#bondslaves=}" ;; esac done IFS="," for x in $bondslaves; do echo "+$x" > /sys/class/net/bond0/bonding/slaves done
之后,您将能够使用bondslaves = kernel cmdline参数来指定您的从属接口,例如: boot=nfs root=/dev/nfs initrd=ubuntu/initrd.img-3.13.0-44-generic ip=:::::bond0:dhcp aufs=tmpfs console=ttyS1,115200 console=tty0 bondslaves=p1p1,p1p2
更换
IP = bond0:DHCP
同
IP = BOOTP
尝试改变ip=bond0:dhcp到ip=:::::bond0:dhcp