index : mkinitcpio-archiso32 | |
Archlinux32 initcpio scripts used by archiso | gitolite user |
summaryrefslogtreecommitdiff |
author | Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> | 2012-08-25 15:14:51 -0300 |
---|---|---|
committer | Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> | 2012-08-25 15:14:51 -0300 |
commit | 6369815d5721e2908174d9ddc76bd9ffe32570b4 (patch) | |
tree | 06e3d7a2c9b8c8a4172d97ab90a9ed9eb8550879 /hooks/archiso_pxe_nbd | |
parent | d93c9c21873ddc269f8cde7bd39e3e54650f2489 (diff) |
-rw-r--r-- | hooks/archiso_pxe_nbd | 37 |
diff --git a/hooks/archiso_pxe_nbd b/hooks/archiso_pxe_nbd new file mode 100644 index 0000000..a9f84d5 --- /dev/null +++ b/hooks/archiso_pxe_nbd @@ -0,0 +1,37 @@ +# vim: set ft=sh: + +run_hook() { + if [[ -n "${ip}" && -n "${archiso_nbd_srv}" ]]; then + + archiso_nbd_srv=$(eval echo ${archiso_nbd_srv}) + [[ -z "${archiso_nbd_name}" ]] && archiso_nbd_name="archiso" + + 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 + + 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 ${archiso_nbd_srv} at /dev/nbd0" + nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0 + + copytoram="y" + archisodevice=/dev/nbd0 + + archiso_mount_handler ${newroot} + + msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0" + nbd-client -d /dev/nbd0 +} |