# vim: set ft=sh: run_hook () { # 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 local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH local filename # /tmp/net-*.conf if [[ -n "${ip}" ]]; then if [[ -n "${BOOTIF}" ]]; then bootif_mac=${BOOTIF#01-} bootif_mac=${bootif_mac//-/:} for i in /sys/class/net/*/address; do read net_mac < ${i} if [[ "${bootif_mac}" == "${net_mac}" ]]; then bootif_dev=${i#/sys/class/net/} bootif_dev=${bootif_dev%/address} break fi done if [[ "${ip}" == "dhcp" ]]; then ip=":::::${bootif_dev}:dhcp" else ip="${ip}::${bootif_dev}" fi fi # setup network and save some values 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 pxeserver=${ROOTSERVER} # setup DNS resolver if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then 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 () { if [[ -n "${ip}" ]]; then [[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y" 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 }