summaryrefslogtreecommitdiff
path: root/parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd
diff options
context:
space:
mode:
Diffstat (limited to 'parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd')
-rw-r--r--parabolaiso/initcpio/hooks/parabolaiso_pxe_nbd21
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
}