Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to configure our servers to boot with an NFS-root with two bonded interfaces.

I managed to successfully set up the NFS-root with one network interface using a NFS-root enabled initrd and the following kernel parameters

root=/dev/nfs nfsroot= ip=dhcp initrd=initrd.img

I found information on how to setup bonding with NFS-root in a blog post.

As I'm using Ubuntu I had to add the bonding module to the end of /etc/initramfs-tools/modules. I build a new initrd and used the kernel parameters

root=/dev/nfs nfsroot= 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

When I boot the server I get a kernel panic which is shown right after the message

ipconfig: can't parse IP address 'bond0'

Can anyone help me solve this issue?

The relevant part of the boot log can be found in this gist.


After a deep dive into the Ubuntu boot process, I figured out that there are currently two different approaches for creating initial ramdisks. Ubuntu uses the initramfs-tools and RedHat uses the newer dracut tool. The blog post I referenced is written for Fedora and the boot parameters listed for dracut are not usable for Ubuntu. As I couldn't figure out how to handle bonded interfaces with the initramfs-tools, I used dracut on Ubuntu and wrote up my findings in the blog post Installing and configuring dracut to boot Ubuntu 12.10 from an NFS-root over a VLAN tagged network using bonded interfaces.

share|improve this question

After a little scripting I was able to get it working with initramfs-tools using dynamic slave interfaces specified via the kernel cmdline.

Add the bonding module and your ethernet module to /etc/initramfs-tools/modules


Then create /etc/initramfs-tools/scripts/nfs-top/00_bonding_init with 0755 perms and populate it with the following:

#!/bin/sh -e
case $1 in
        prereqs) echo "${PREREQS}"; exit 0;;

echo "Network interfaces loaded: "
echo `ls /sys/class/net`

for x in $cmdline; do
    case $x in

for x in $bondslaves; do
    echo "+$x" > /sys/class/net/bond0/bonding/slaves

Afterwards you will be able to use bondslaves= kernel cmdline parameter to specify your slave interfaces, for example: 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

share|improve this answer





share|improve this answer

Try changing ip=bond0:dhcp to ip=:::::bond0:dhcp

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.