summaryrefslogtreecommitdiff
path: root/archiso/hooks/archiso_pxe_nbd
diff options
context:
space:
mode:
Diffstat (limited to 'archiso/hooks/archiso_pxe_nbd')
-rw-r--r--archiso/hooks/archiso_pxe_nbd63
1 files changed, 63 insertions, 0 deletions
diff --git a/archiso/hooks/archiso_pxe_nbd b/archiso/hooks/archiso_pxe_nbd
new file mode 100644
index 0000000..9df5a95
--- /dev/null
+++ b/archiso/hooks/archiso_pxe_nbd
@@ -0,0 +1,63 @@
+# vim: set ft=sh:
+run_hook ()
+{
+ local line i address netmask gateway dns0 dns1 rootserver rootpath filename
+
+ : > /ip_opts
+
+ if [ -n "${ip}" ]; then
+ # 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}"
+
+ modprobe nbd 2> /dev/null
+
+ msg ":: Waiting for boot device..."
+ while ! poll_device /dev/nbd0 10; do
+ echo "ERROR: boot device didn't show up after 10 seconds..."
+ echo " Falling back to interactive prompt"
+ echo " You can try to fix the problem manually, log out when you are finished"
+ launch_interactive_shell
+ done
+
+ msg "::: Setup NBD from ${rootserver}:9040 at /dev/nbd0 ..."
+ nbd-client ${rootserver} 9040 /dev/nbd0 -persist
+
+ archisodevice=/dev/nbd0
+ fi
+}