nfsroot + multiple ethernet interfaces == boom

Bug #378167 reported by ward on 2009-05-19
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
initramfs-tools (Ubuntu)
Undecided
Unassigned

Bug Description

Binary package hint: initramfs-tools

Tested on Hardy Heron.

Doing a PXE boot with NFS root on a machine with multiple network interfaces is ... interesting as the order in which the kernel/udev detect the interfaces is not necessarily the same as the PXE option rom.

In other words - say you have two interfaces, only one of which you can NFS boot off. Machine boots - PXE boots from that interface, gets IP and tftp information from dhcp server, finds tftp server, gets kernel and initrd, boots kernel, loads initrd.... and then it tries to load its nfs root filesystem.

We've passed ip=dhcp on the command line, as that's darn handy.

Unfortunately, the kernel/udev find the other interface first, and the machine tries to load the nfs root fs from the wrong interface. Booting fails.

The solution is obvious - you make sure the network interfaces are detected in the right order via /etc/udev/rules.d/70-persistent-net.rules, and run update-initramfs -u.

However, that file is not in the list of udev files copied into the initrd by initramfstools. See line 39 in /usr/share/initramfs-tools/hooks/udev.

Adding 70-persistent-net.rules there fixes this problem for me.

ward (ward-pong) on 2009-05-19
description: updated
Stephan Ruegamer (sadig) wrote :

Hey Ward,

try the following:

add to the pxe booted kernel the appendline: ip=all

ipconfig should try to send dhcp requests to all known interfaces, means, it brings all interfaces up and sends out dhcp requests...one of the nics will get an IP and voila it gives you the result.

Regards,

\sh

PS: There are other issues with klibcs ipconfig tool, in combination with real network hardware like cisco and netconfigs with spanning trees and portfast config...etc. but this needs to be filed in another bug.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers