mirror of
https://github.com/nchevsky/systemrescue-zfs.git
synced 2026-04-21 06:03:41 +00:00
Fix PXE boot when multiple interfaces are available (#19)
This commit is contained in:
parent
6b02e5c468
commit
64237bda3a
1 changed files with 60 additions and 0 deletions
60
patches/archiso-fix-pxeboot-multiple-interfaces.patch
Normal file
60
patches/archiso-fix-pxeboot-multiple-interfaces.patch
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
diff --git a/archiso/initcpio/hooks/archiso_pxe_common b/archiso/initcpio/hooks/archiso_pxe_common
|
||||
index 2380ca3..fa2a6a0 100644
|
||||
--- a/archiso/initcpio/hooks/archiso_pxe_common
|
||||
+++ b/archiso/initcpio/hooks/archiso_pxe_common
|
||||
@@ -3,6 +3,8 @@
|
||||
run_hook () {
|
||||
# Do *not* declare 'bootif_dev' local! We need it in run_latehook().
|
||||
local i net_mac bootif_mac
|
||||
+ local ifdevlist
|
||||
+ local ipcfgres
|
||||
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
||||
local DEVICE
|
||||
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
|
||||
@@ -19,18 +21,40 @@ run_hook () {
|
||||
if [[ "${bootif_mac}" == "${net_mac}" ]]; then
|
||||
bootif_dev=${i#/sys/class/net/}
|
||||
bootif_dev=${bootif_dev%/address}
|
||||
+ ifdevlist="${bootif_dev}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
- if [[ "${ip}" == "dhcp" ]]; then
|
||||
- ip=":::::${bootif_dev}:dhcp"
|
||||
- else
|
||||
- ip="${ip}::${bootif_dev}"
|
||||
- fi
|
||||
+ else
|
||||
+ for i in /sys/class/net/*; do
|
||||
+ bootif_dev=${i#/sys/class/net/}
|
||||
+ if [[ "${bootif_dev}" != 'lo' ]]; then
|
||||
+ ifdevlist="${ifdevlist} ${bootif_dev}"
|
||||
+ fi
|
||||
+ done
|
||||
fi
|
||||
|
||||
+ for bootif_dev in ${ifdevlist}
|
||||
+ do
|
||||
+ if [[ "${ip}" == "dhcp" ]]; then
|
||||
+ ipopt=":::::${bootif_dev}:dhcp"
|
||||
+ else
|
||||
+ ipopt="${ip}::${bootif_dev}"
|
||||
+ fi
|
||||
+
|
||||
+ # setup network and save some values
|
||||
+ echo "Attempting to configure network interface ${bootif_dev} ..."
|
||||
+ ipconfig -t 20 "ip=${ipopt}"
|
||||
+ ipcfgres=$?
|
||||
+ if [[ ${ipcfgres} -eq 0 ]]; then
|
||||
+ echo "SUCCESS: Network interface ${bootif_dev} has been successfully configured"
|
||||
+ sleep 1
|
||||
+ break
|
||||
+ fi
|
||||
+ done
|
||||
+
|
||||
# setup network and save some values
|
||||
- if ! ipconfig -t 20 "ip=${ip}"; then
|
||||
+ if [[ ${ipcfgres} -ne 0 ]]; then
|
||||
echo "ERROR; Failed to configure network"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
Loading…
Add table
Add a link
Reference in a new issue