I'm having a bit of an issue with Clonezilla over UEFI iPXE on motherboards with multiple nics.
Almost all of the motherboards I work with are server boards (usually Supermicro or AsRock Rack / Industrial) with anywhere from 2-8 nic's on-board, sometimes including 2.5/10GbE ports, not including added PCIe adapters.
Any of our other deployment options such as winpe, memtest, netbooting ubuntu and freedos for bios flashing all work fine over ipxe on a single cable regardless of which port is used.
With Clonezilla, it seems like it has to be connected via eth0 for it to work at all.
And when it is, it works fine.
If I have the single cable in eth1, or any other interface, Clonezilla doesn't see it.
With two ethernet cables connected to two nics (one being eth0), clonezilla works fine.
With a single cable, in eth1 or any other interface, it downloads the kernel and initrd fine, after which Clonezilla looks for connected ethernet interfaces, and only finds usb0 or none at all and fails to boot or fetch the filesystem.squashfs.
Looking for a connected Ethernet interface ... eth0 ? eth1 ? usb0 ?
BOOT FAILED!
Ip link shows the eth1 interface connected:
1: lo: <loopback> mtu 65535 qdisc noop qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <no-carrier,broadcast,multicast,up> mtu 1500 qdisc mq qlen 1000
link/ether a8:a1:59:c0:53:2a brd ff:ff:ff:ff:ff:ff
3: eth1: <broadcast,multicast,up,lower_up> mtu 1500 qdisc mq qlen 1000
link/ether a8:a1:59:c0:53:2b brd ff:ff:ff:ff:ff:ff
4: usb0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel qlen 1000
link/ether 46💿d4:e3:f8:8d brd ff:ff:ff:ff:ff:ff</broadcast,multicast,up,lower_up></broadcast,multicast,up,lower_up></no-carrier,broadcast,multicast,up></loopback>
Boot Log:
Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel 6.1.0-4-amd64?
Looking for a connected Ethernet interface ... eth0 ? eth1 ? usb0 ?
Connected usb0 found
Using timeout of 15 seconds for the network configuration.
Using max dhcp loop 10 times for each network card.
IP-Config: usb-0 hardware address 46💿d4:d3:f8:8d mtu 1500 DHCP RARP
IP-Config: no response after 15 secs - giving up
(repeats 10x)
Creating /etc/resolve.conf
Connecting to 192.168.3.1 (192.168.3.1:80)
wget: can't connect to remote host )192.168.3.1): Network is unreachable
This occurs on all of the current stable and testing versions of clonezilla live, as well as older versions such as 2.7.3 and 2.8.1
However, I'm not sure this will work for what I'm trying to do exactly.
Ideally, I'd like one of my guys to just plug in a single cable into any of the available ethernet ports on-board, boot up iPXE, and use clonezilla or one of our other deployment options without any hassle. We will sometimes build up to 350 systems in a day, and being restricted to just the eth0 interface could cause problems or inconveniences at times.
Is there a better way to get any port to work (automatically) without having to individually specify every potential interface we might have via the live-netdev= parameter?
To rule it out, I've also tried serving clonezilla over other protocols such as tftp and ftp, with the same results.
Any advice would be greatly appreciated.
Last edit: miscalaneous 2023-04-11
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Actually it will try to fetch squashfs root file system from eth1 after eth0 is tried 10 times, as shown in the attached file.
This "10" times is controlled by the boot parameter "ethdev-dhcp-max-loop", which is not documented... (But you can find in the change logs, e.g., https://drbl.nchc.org.tw/download/live-testing/changelog.php)
For example, if you want to limit it to 3 times, you can assign it in boot parameter like:
ethdev-dhcp-max-loop=3
Setting the boot parameter to 1 did work for setting the loop, however I'm still experiencing the same issue. After it completes the loop, it does not appear to see or try to fetch the squashfs root file system from eth1. eth1 was also not detected before the loop started.
It fails to boot and drops straight to the initramfs prompt.
Please see the screenshot attached.
This system is set up with a single ethernet cable in the eth1 port.
At the initramfs prompt after it fails to boot, "ip link show" shows the eth1 port connected.
After some additional testing, I've figured out that the issue also occurs with a single ethernet cable in the eth0 port.
Previously, I had been using a cable connected to the dedicated IPMI port for remote KVM on a different subnet. This BMC port is influencing clonezilla somehow and was enabling it to work. Unless it is showing up as the usb0 interface, it isn't detected within clonezilla when it does the interface check. This cable would not be connected in our production environment, I only use it out of convenience while testing this system in particular.
If I remove the IPMI cable so there is physically only a single cable connected to the system, clonezilla does not detect either the eth0 port or the eth1 port as seen in the previous screenshot.
Manually setting the live-netdev=eth0 parameter does work, and clonezilla boots without any issue.
The stick-to-pxe-srv parameter didn't appear to have any effect, I tried it out of curiosity.
Without the live-netdev parameter clonezilla does not see the interface, and will not boot without a second ethernet cable connected to a second interface, either the dedicated IPMI port or eth1, and then clonezilla works fine.
In the example I saw for the live-netdev parameter, it looked like it could be configured for multiple interfaces. However, is there a way to manually configure it for multiple interfaces, all with dhcp rather than specifying IP addresses etc.?
Edit: This issue only occurs when clonezilla is being served over PXE.
When using the same clonzilla version and configuration from USB it detects the network interfaces fine.
Last edit: miscalaneous 2023-04-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
"This issue only occurs when clonezilla is being served over PXE." -> So what are your PXE configurations? Especially those boot parameters? Are they "almost" the same as that in the USB flash drive (syslinux.cfg), except those required for PXE booting?
Steven
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I'm having a bit of an issue with Clonezilla over UEFI iPXE on motherboards with multiple nics.
Almost all of the motherboards I work with are server boards (usually Supermicro or AsRock Rack / Industrial) with anywhere from 2-8 nic's on-board, sometimes including 2.5/10GbE ports, not including added PCIe adapters.
Any of our other deployment options such as winpe, memtest, netbooting ubuntu and freedos for bios flashing all work fine over ipxe on a single cable regardless of which port is used.
With Clonezilla, it seems like it has to be connected via eth0 for it to work at all.
And when it is, it works fine.
If I have the single cable in eth1, or any other interface, Clonezilla doesn't see it.
With two ethernet cables connected to two nics (one being eth0), clonezilla works fine.
With a single cable, in eth1 or any other interface, it downloads the kernel and initrd fine, after which Clonezilla looks for connected ethernet interfaces, and only finds usb0 or none at all and fails to boot or fetch the filesystem.squashfs.
Looking for a connected Ethernet interface ... eth0 ? eth1 ? usb0 ?
BOOT FAILED!
Ip link shows the eth1 interface connected:
1: lo: <loopback> mtu 65535 qdisc noop qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <no-carrier,broadcast,multicast,up> mtu 1500 qdisc mq qlen 1000
link/ether a8:a1:59:c0:53:2a brd ff:ff:ff:ff:ff:ff
3: eth1: <broadcast,multicast,up,lower_up> mtu 1500 qdisc mq qlen 1000
link/ether a8:a1:59:c0:53:2b brd ff:ff:ff:ff:ff:ff
4: usb0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel qlen 1000
link/ether 46💿d4:e3:f8:8d brd ff:ff:ff:ff:ff:ff</broadcast,multicast,up,lower_up></broadcast,multicast,up,lower_up></no-carrier,broadcast,multicast,up></loopback>
Boot Log:
Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel 6.1.0-4-amd64?
Looking for a connected Ethernet interface ... eth0 ? eth1 ? usb0 ?
Connected usb0 found
Using timeout of 15 seconds for the network configuration.
Using max dhcp loop 10 times for each network card.
IP-Config: usb-0 hardware address 46💿d4:d3:f8:8d mtu 1500 DHCP RARP
IP-Config: no response after 15 secs - giving up
(repeats 10x)
Creating /etc/resolve.conf
Connecting to 192.168.3.1 (192.168.3.1:80)
wget: can't connect to remote host )192.168.3.1): Network is unreachable
This occurs on all of the current stable and testing versions of clonezilla live, as well as older versions such as 2.7.3 and 2.8.1
I've done some searching and found references to using live-netdev=eth1, as well as what I could find on the parameter here: https://clonezilla.org/fine-print-live-doc.php?path=clonezilla-live/doc/99_Misc/00_live-boot-parameters.doc
However, I'm not sure this will work for what I'm trying to do exactly.
Ideally, I'd like one of my guys to just plug in a single cable into any of the available ethernet ports on-board, boot up iPXE, and use clonezilla or one of our other deployment options without any hassle. We will sometimes build up to 350 systems in a day, and being restricted to just the eth0 interface could cause problems or inconveniences at times.
Is there a better way to get any port to work (automatically) without having to individually specify every potential interface we might have via the live-netdev= parameter?
iPXE config:
:clonezillasaveimage
kernel http://${server_ip}/live/vmlinuz initrd=initrd.img boot=live union=overlay username=user config components noeject noswap loglevel=0 noswap edd=on nomodeset noprompt quiet enforcing=0 locales=en_US.UTF-8 keyboard-layouts=NONE ocs_lang="en_US.UTF-8" ocs_live_run="ocs-live-restore" ocs_prerun="sudo dhclient" ocs_prerun1="sleep 5" ocs_prerun2="sudo mount -t cifs -o user=username,password=password,dir_mode=0775,file_mode=0775 //192.168.3.1/images /home/partimag" ocs_prerun3="sleep 2" ocs_live_extra_param="-q2 -j2 -z1p -i 2000 -p choose savedisk ask_user ask_user" ocs_live_batch="no" net.ifnames=0 nosplash fetch=http://192.168.3.1/live/filesystem.squashfs
initrd http://${server_ip}/live/initrd.img
boot
To rule it out, I've also tried serving clonezilla over other protocols such as tftp and ftp, with the same results.
Any advice would be greatly appreciated.
Last edit: miscalaneous 2023-04-11
Actually it will try to fetch squashfs root file system from eth1 after eth0 is tried 10 times, as shown in the attached file.
This "10" times is controlled by the boot parameter "ethdev-dhcp-max-loop", which is not documented... (But you can find in the change logs, e.g., https://drbl.nchc.org.tw/download/live-testing/changelog.php)
For example, if you want to limit it to 3 times, you can assign it in boot parameter like:
ethdev-dhcp-max-loop=3
Steven
Hi Steven,
Setting the boot parameter to 1 did work for setting the loop, however I'm still experiencing the same issue. After it completes the loop, it does not appear to see or try to fetch the squashfs root file system from eth1. eth1 was also not detected before the loop started.
It fails to boot and drops straight to the initramfs prompt.
Please see the screenshot attached.
This system is set up with a single ethernet cable in the eth1 port.
At the initramfs prompt after it fails to boot, "ip link show" shows the eth1 port connected.
Last edit: miscalaneous 2023-04-20
Hi again Steven,
After some additional testing, I've figured out that the issue also occurs with a single ethernet cable in the eth0 port.
Previously, I had been using a cable connected to the dedicated IPMI port for remote KVM on a different subnet. This BMC port is influencing clonezilla somehow and was enabling it to work. Unless it is showing up as the usb0 interface, it isn't detected within clonezilla when it does the interface check. This cable would not be connected in our production environment, I only use it out of convenience while testing this system in particular.
If I remove the IPMI cable so there is physically only a single cable connected to the system, clonezilla does not detect either the eth0 port or the eth1 port as seen in the previous screenshot.
Manually setting the live-netdev=eth0 parameter does work, and clonezilla boots without any issue.
The stick-to-pxe-srv parameter didn't appear to have any effect, I tried it out of curiosity.
Without the live-netdev parameter clonezilla does not see the interface, and will not boot without a second ethernet cable connected to a second interface, either the dedicated IPMI port or eth1, and then clonezilla works fine.
In the example I saw for the live-netdev parameter, it looked like it could be configured for multiple interfaces. However, is there a way to manually configure it for multiple interfaces, all with dhcp rather than specifying IP addresses etc.?
Edit: This issue only occurs when clonezilla is being served over PXE.
When using the same clonzilla version and configuration from USB it detects the network interfaces fine.
Last edit: miscalaneous 2023-04-20
"This issue only occurs when clonezilla is being served over PXE." -> So what are your PXE configurations? Especially those boot parameters? Are they "almost" the same as that in the USB flash drive (syslinux.cfg), except those required for PXE booting?
Steven