# vim: set ft=sh: run_hook () { local line i address netmask gateway dns0 dns1 rootserver rootpath filename : > /ip_opts if [ -n "${ip}" ]; then if [ -n "${BOOTIF}" ]; then bootif_mac=${BOOTIF#01-} bootif_mac=${bootif_mac//-/:} bootif_dev=$(grep -l $bootif_mac /sys/class/net/*/address) bootif_dev=${bootif_dev#/sys/class/net/} bootif_dev=${bootif_dev%/address} ip="$ip::$bootif_dev" fi # setup network and save some values ipconfig "ip=${ip}" | while read line; do # echo ":: ${line}" if [ "${line#"IP-Config:"}" != "${line}" ]; then continue fi line="$(echo ${line} | sed -e 's/ :/:/g;s/: /=/g')" for i in ${line}; do case "${i}" in address=*) echo "${i}" >> /ip_opts ;; netmask=*) echo "${i}" >> /ip_opts ;; gateway=*) echo "${i}" >> /ip_opts ;; dns0=*) echo "${i}" >> /ip_opts ;; dns1=*) echo "${i}" >> /ip_opts ;; rootserver=*) echo "${i}" >> /ip_opts ;; rootpath=*) echo "${i}" >> /ip_opts ;; esac done done . /ip_opts echo "IP-Config: ${address}/${netmask}" echo "IP-Config: gw: ${gateway} dns0: ${dns0} dns1: ${dns1}" nbdserver=${rootserver} mount_handler="archiso_pxe_nbd_mount_handler" fi } archiso_pxe_nbd_mount_handler () { newroot="${1}" # Module autoloading like with loop devices does not work, doing manually... modprobe nbd 2> /dev/null while [ ! -b /dev/nbd0 ]; do sleep 1 done msg "::: Setup NBD from ${nbdserver}:9040 at /dev/nbd0" if [ "${copytoram}" = "y" ]; then nbd-client ${nbdserver} 9040 /dev/nbd0 else nbd-client ${nbdserver} 9040 /dev/nbd0 -persist fi archisodevice=/dev/nbd0 archiso_mount_handler ${newroot} if [ "${copytoram}" = "y" ]; then msg "::: Disconnect NBD from ${nbdserver}:9040 at /dev/nbd0" nbd-client -d /dev/nbd0 fi }