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"