diff options
Diffstat (limited to 'parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd')
-rw-r--r-- | parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd b/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd index 1bb8cbb..1991f80 100644 --- a/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd +++ b/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd @@ -1,5 +1,12 @@ # vim: set ft=sh: +run_earlyhook() { + if [[ -n "${ip}" && -n "${parabolaiso_nbd_srv}" ]]; then + # Module autoloading like with loop devices does not work, doing manually... + modprobe nbd 2> /dev/null + fi +} + run_hook() { if [[ -n "${ip}" && -n "${parabolaiso_nbd_srv}" ]]; then @@ -13,9 +20,6 @@ run_hook() { 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..." @@ -25,16 +29,19 @@ parabolaiso_pxe_nbd_mount_handler () { 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 + nbd-client ${parabolaiso_nbd_srv} -N ${parabolaiso_nbd_name} /dev/nbd0 copytoram="y" + else + nbd-client ${parabolaiso_nbd_srv} -N ${parabolaiso_nbd_name} -systemd-mark -persist /dev/nbd0 fi parabolaisodevice=/dev/nbd0 parabolaiso_mount_handler ${newroot} - msg ":: Disconnect NBD from ${parabolaiso_nbd_srv} at /dev/nbd0" - nbd-client -d /dev/nbd0 + if [[ "${copytoram}" == "y" ]]; then + msg ":: Disconnect NBD from ${parabolaiso_nbd_srv} at /dev/nbd0" + nbd-client -d /dev/nbd0 + fi } |