summaryrefslogtreecommitdiff
path: root/archiso
diff options
context:
space:
mode:
authorGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2010-03-18 11:20:05 -0300
committerGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2010-03-18 12:03:59 -0300
commit7483cffb30bcc1910cfd1ffb14c2ac9ef94ba319 (patch)
tree38ee5c2d752a080ef1d646ec0f9eee500061b5ba /archiso
parent556515885d931aa0f802fffff8f56d27c1a780af (diff)
downloadarchiso32-7483cffb30bcc1910cfd1ffb14c2ac9ef94ba319.tar.xz
[archiso] Use a mount handler in archiso_pxe_nbd hook
* Register a mount_hook if booted via PXE. This allows to do all needed steps before and after calling archiso_mount_handler. * umount and disconnect network device if copytoram=y Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Diffstat (limited to 'archiso')
-rw-r--r--archiso/hooks/archiso_pxe_nbd42
1 files changed, 29 insertions, 13 deletions
diff --git a/archiso/hooks/archiso_pxe_nbd b/archiso/hooks/archiso_pxe_nbd
index 9df5a95..2d4163e 100644
--- a/archiso/hooks/archiso_pxe_nbd
+++ b/archiso/hooks/archiso_pxe_nbd
@@ -1,6 +1,5 @@
# vim: set ft=sh:
-run_hook ()
-{
+run_hook () {
local line i address netmask gateway dns0 dns1 rootserver rootpath filename
: > /ip_opts
@@ -45,19 +44,36 @@ run_hook ()
echo "IP-Config: ${address}/${netmask}"
echo "IP-Config: gw: ${gateway} dns0: ${dns0} dns1: ${dns1}"
- modprobe nbd 2> /dev/null
+ nbdserver=${rootserver}
- 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
+ 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
+ while [ ! -b /dev/nbd0 ]; do
+ sleep 1
+ done
+
+ msg "::: Setup NBD from ${nbdserver}:9040 at /dev/nbd0"
+ if [ "${copytoram}" = "y" ]; then
+ nbd-client ${nbdserver} 9040 /dev/nbd0
+ else
+ nbd-client ${nbdserver} 9040 /dev/nbd0 -persist
+ fi
+
+ archisodevice=/dev/nbd0
- msg "::: Setup NBD from ${rootserver}:9040 at /dev/nbd0 ..."
- nbd-client ${rootserver} 9040 /dev/nbd0 -persist
+ archiso_mount_handler ${newroot}
- archisodevice=/dev/nbd0
+ if [ "${copytoram}" = "y" ]; then
+ umount ${newroot}/bootmnt
+ umount /bootmnt
+ msg "::: Disconnect NBD from ${nbdserver}:9040 at /dev/nbd0"
+ nbd-client -d /dev/nbd0
fi
}