summaryrefslogtreecommitdiff
path: root/parabolaiso/initcpio/hooks/parabolaiso_pxe_common
diff options
context:
space:
mode:
Diffstat (limited to 'parabolaiso/initcpio/hooks/parabolaiso_pxe_common')
-rw-r--r--parabolaiso/initcpio/hooks/parabolaiso_pxe_common36
1 files changed, 29 insertions, 7 deletions
diff --git a/parabolaiso/initcpio/hooks/parabolaiso_pxe_common b/parabolaiso/initcpio/hooks/parabolaiso_pxe_common
index d8ac709..7c3b1b5 100644
--- a/parabolaiso/initcpio/hooks/parabolaiso_pxe_common
+++ b/parabolaiso/initcpio/hooks/parabolaiso_pxe_common
@@ -1,7 +1,8 @@
# vim: set ft=sh:
run_hook () {
- local i net_mac bootif_mac bootif_dev
+ # Do *not* declare 'bootif_dev' local! We need it in run_latehook().
+ local i net_mac bootif_mac
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
local DEVICE
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
@@ -21,11 +22,20 @@ run_hook () {
break
fi
done
- ip="${ip}::${bootif_dev}"
+ if [[ "${ip}" == "dhcp" ]]; then
+ ip=":::::${bootif_dev}:dhcp"
+ else
+ ip="${ip}::${bootif_dev}"
+ fi
fi
# setup network and save some values
- ipconfig "ip=${ip}"
+ if ! ipconfig -t 20 "ip=${ip}"; 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"
+ launch_interactive_shell
+ fi
. /tmp/net-*.conf
@@ -33,18 +43,30 @@ run_hook () {
# setup DNS resolver
if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then
- echo "nameserver ${IPV4DNS0}" > /etc/resolv.conf
+ echo "# added by parabolaiso_pxe_common hook" > /etc/resolv.conf
+ echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf
fi
if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then
echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf
fi
+ if [[ -n "${DNSDOMAIN}" ]]; then
+ echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
+ echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf
+ fi
fi
}
run_latehook () {
- [[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y"
+ if [[ -n "${ip}" ]]; then
+ [[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y"
- if [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then
- cp /etc/resolv.conf /new_root/etc/resolv.conf
+ if [[ "${copytoram}" == "y" ]]; then
+ if [[ -n "${bootif_dev}" ]]; then
+ ip addr flush dev "${bootif_dev}"
+ ip link set "${bootif_dev}" down
+ fi
+ elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then
+ cp /etc/resolv.conf /new_root/etc/resolv.conf
+ fi
fi
}