1 (edited by gedakc 2015-07-27 17:24:35)

Topic: SOLVED - PXE boot issue with multiple NICs

I am having an issue with PXE boot on hosts with multiple NICs.  I'm able to recreate the issue.

My setup to PXE boot uses the documented procedure here.
http://gparted.org/livepxe.php

My system can't fetch filesystem.squashfs because it doesn't get on the network.

The issue seems to be with the multiple NICs.  My physical host does PXE boot off the internal NIC.  It is the only NIC on a VLAN that can get DHCP.  When the gparted image boots, the internal NIC is seen as eth4.  For some reason, a DHCP request doesn't get sent from eth4.  It appears to only go out eth0, eth1, and eth2.

I have recreated the issue in a virtual machine.  When I PXE boot from the virtual NIC that gparted discovers as eth0 everything boots fine.  If I force PXE boot from the virtual NIC that gparted sees as eth4, I get the same result as my physical host.

Can anyone assist me if figuring out a way to workaround this?

2

Re: SOLVED - PXE boot issue with multiple NICs

Please disregard.  Not sure why my physical host still isn't working, but the issue is not recreatable in the virtual machine.

3

Re: SOLVED - PXE boot issue with multiple NICs

Thank you Brad for reporting back.  If you do discover the issue, or a series of steps to recreate the issue, then please post with your findings.

4 (edited by jclough 2015-07-25 03:49:01)

Re: SOLVED - PXE boot issue with multiple NICs

I have a similar problem. This is gparted 22.0.1 amd64 (though I tried 22.0.2 i586 and amd64 with no success).

I tftpboot my kernel and initrd onto the board across eth0 using PXE/DHCP. The kernel comes up and begins configuring the nics. For some TBD reason in my case, the kernel selects eth1 as its first interface to run ipconfig, it doesn't proceed to eth0 and my filesystem is not available to me.

eth1 isn't connect to a network with a DHCP server and my filesystem.squashfs sits in a local LAN off eth0. I cannot get an option to force the kernel to go to eth0 first, so I am contemplating what options I may have:

Looking for a connected Ethernet interface ... eth0 ? eth1 ?
[    9.706370] igb 0000:07:00.1 eth1: igb: eth1 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX
[    9.716664] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
Connected eth1 found
Using timeout of 15 seconds for network configuration.
[   11.187925] igb 0000:07:00.0 eth0: igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
[   11.198659] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready


BusyBox v1.22.1 (Debian 1:1.22.0-15) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
(initramfs) IP-Config: eth1 hardware address 00:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: no response after 15 secs - giving up
Creating /etc/resolv.conf
Begin: Trying wget ... some host ip .. -O /live/medium/live/filesystem.squashfs ... Connecting to 10.142.0.1 (10.142.0.1:80)
wget: can't connect to remote host (10.142.0.1): Network is unreachable
Unable to find a live file system on the network
modprobe: module ehci-orion not found in modules.dep

(initramfs) ipconfig eth0
IP-Config: eth0 hardware address 00:xx:xx:xx:xx:xx mtu 1500 DHCP RARP
IP-Config: eth0 complete (dhcp from 10.142.0.101):
address: 10.142.0.129     broadcast: 10.142.255.255   netmask: 255.255.0.0
gateway: 10.142.0.2       dns0     : 172.30.84.40     dns1   : 0.0.0.0
host   : host-10-142-0-129
domain : openstacklocal
rootserver: 10.142.0.1 rootpath:
filename  : pxelinux.0


(initramfs) ls /run
initramfs      net-eth0.conf  net-eth1.conf  udev

(initramfs) cat /run/net-eth0.conf
DEVICE='eth0'
PROTO='dhcp'
IPV4ADDR='10.142.0.129'
IPV4BROADCAST='10.142.255.255'
IPV4NETMASK='255.255.0.0'
IPV4GATEWAY='10.142.0.2'
IPV4DNS0='172.30.84.40'
IPV4DNS1='0.0.0.0'
HOSTNAME='host-10-142-0-129'
DNSDOMAIN='openstacklocal'
NISDOMAIN=''
ROOTSERVER='10.142.0.1'
ROOTPATH=''
filename='pxelinux.0'
UPTIME='72'
DHCPLEASETIME='86400'
DOMAINSEARCH=''

(initramfs) cat /run/net-eth1.conf
DEVICE='eth1'
PROTO='none'
IPV4ADDR='0.0.0.0'
IPV4BROADCAST='0.255.255.255'
IPV4NETMASK='255.0.0.0'
IPV4GATEWAY='0.0.0.0'
IPV4DNS0='0.0.0.0'
IPV4DNS1='0.0.0.0'
HOSTNAME=''
DNSDOMAIN=''
NISDOMAIN=''
ROOTSERVER='0.0.0.0'
ROOTPATH=''
filename=''
UPTIME='8'
DHCPLEASETIME='0'
DOMAINSEARCH=''
(initramfs) netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         10.142.0.2      0.0.0.0         UG        0 0          0 eth0
10.142.0.0      *               255.255.0.0     U         0 0          0 eth0

If I could only get the kernel to ipconfig eth0 first -

(initramfs) mkdir live
(initramfs) wget http://10.142.0.1/filesystem.squashfs -O /live/medium/live/file
system.squashfs
Connecting to 10.142.0.1 (10.142.0.1:80)
filesystem.squashfs  100% |*******************************|   189M  0:00:00 ETA
(initramfs) ls
live
(initramfs) cd live
(initramfs) ls
filesystem.squashfs

5

Re: SOLVED - PXE boot issue with multiple NICs

You can use the boot parameter "live-netdev=eth1" to assign that. This is not documented in the live-boot manual:
http://live.debian.net/manpages/stable/ … boot.7.txt
But it can be found in the source code:
http://live.debian.net/gitweb/?p=live-b … an-old-4.0
and the clonezilla live doc:
http://clonezilla.org/fine-print-live-d … meters.doc

Steven.

6

Re: SOLVED - PXE boot issue with multiple NICs

Steven,

Thanks for the response. That did the trick.

7

Re: SOLVED - PXE boot issue with multiple NICs

Thank you Steven for the suggestion that jclough confirms addressed the problem.

As such I have edited the initial post to prefix SOLVED in front of the title.  This might help others searching for answers to similar problems.