diff options
author | Esteban Carnevale <alfplayer@mailoo.org> | 2013-09-03 16:20:57 -0300 |
---|---|---|
committer | Esteban Carnevale <alfplayer@mailoo.org> | 2013-09-03 16:20:57 -0300 |
commit | fd3ccb1d3ea53e5da96473558b6c2457ae8affa5 (patch) | |
tree | 8e55162ca8cab8a859d269275528c7411a90ef5d /parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd |
Update profile releng
Diffstat (limited to 'parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd')
-rw-r--r-- | parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd b/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd new file mode 100644 index 0000000..1bb8cbb --- /dev/null +++ b/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd @@ -0,0 +1,40 @@ +# vim: set ft=sh: + +run_hook() { + if [[ -n "${ip}" && -n "${parabolaiso_nbd_srv}" ]]; then + + parabolaiso_nbd_srv=$(eval echo ${parabolaiso_nbd_srv}) + [[ -z "${parabolaiso_nbd_name}" ]] && parabolaiso_nbd_name="parabolaiso" + + mount_handler="parabolaiso_pxe_nbd_mount_handler" + fi +} + +parabolaiso_pxe_nbd_mount_handler () { + newroot="${1}" + + # Module autoloading like with loop devices does not work, doing manually... + modprobe nbd 2> /dev/null + + msg ":: Waiting for boot device..." + while ! poll_device /dev/nbd0 30; do + echo "ERROR: boot device didn't show up after 30 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 ${parabolaiso_nbd_srv} at /dev/nbd0" + nbd-client ${parabolaiso_nbd_srv} -N ${parabolaiso_nbd_name} /dev/nbd0 + + if [[ "${copytoram}" != "n" ]]; then + copytoram="y" + fi + + parabolaisodevice=/dev/nbd0 + + parabolaiso_mount_handler ${newroot} + + msg ":: Disconnect NBD from ${parabolaiso_nbd_srv} at /dev/nbd0" + nbd-client -d /dev/nbd0 +} |