[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>
This commit is contained in:
parent
556515885d
commit
7483cffb30
2
README
2
README
@ -40,7 +40,7 @@ to create a mkinitcpio config file that suits your needs. Typically this
|
|||||||
means modifying whatever hooks you want. A typical set of hooks for
|
means modifying whatever hooks you want. A typical set of hooks for
|
||||||
archiso looks something like this:
|
archiso looks something like this:
|
||||||
|
|
||||||
HOOKS="base archiso_early udev archiso pata scsi sata usb fw pcmcia filesystems usbinput"
|
HOOKS="base udev archiso archiso_pxe_nbd pata scsi sata usb fw pcmcia filesystems usbinput"
|
||||||
|
|
||||||
It's probably worth mentioning that hardware autodetection and things
|
It's probably worth mentioning that hardware autodetection and things
|
||||||
of that nature do not belong here. Only what's necessary to get the system
|
of that nature do not belong here. Only what's necessary to get the system
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
# vim: set ft=sh:
|
# vim: set ft=sh:
|
||||||
run_hook ()
|
run_hook () {
|
||||||
{
|
|
||||||
local line i address netmask gateway dns0 dns1 rootserver rootpath filename
|
local line i address netmask gateway dns0 dns1 rootserver rootpath filename
|
||||||
|
|
||||||
: > /ip_opts
|
: > /ip_opts
|
||||||
@ -45,19 +44,36 @@ run_hook ()
|
|||||||
echo "IP-Config: ${address}/${netmask}"
|
echo "IP-Config: ${address}/${netmask}"
|
||||||
echo "IP-Config: gw: ${gateway} dns0: ${dns0} dns1: ${dns1}"
|
echo "IP-Config: gw: ${gateway} dns0: ${dns0} dns1: ${dns1}"
|
||||||
|
|
||||||
modprobe nbd 2> /dev/null
|
nbdserver=${rootserver}
|
||||||
|
|
||||||
msg ":: Waiting for boot device..."
|
mount_handler="archiso_pxe_nbd_mount_handler"
|
||||||
while ! poll_device /dev/nbd0 10; do
|
fi
|
||||||
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"
|
archiso_pxe_nbd_mount_handler () {
|
||||||
launch_interactive_shell
|
newroot="${1}"
|
||||||
done
|
|
||||||
|
# Module autoloading like with loop devices does not work, doing manually...
|
||||||
msg "::: Setup NBD from ${rootserver}:9040 at /dev/nbd0 ..."
|
modprobe nbd 2> /dev/null
|
||||||
nbd-client ${rootserver} 9040 /dev/nbd0 -persist
|
while [ ! -b /dev/nbd0 ]; do
|
||||||
|
sleep 1
|
||||||
archisodevice=/dev/nbd0
|
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
|
||||||
|
|
||||||
|
archiso_mount_handler ${newroot}
|
||||||
|
|
||||||
|
if [ "${copytoram}" = "y" ]; then
|
||||||
|
umount ${newroot}/bootmnt
|
||||||
|
umount /bootmnt
|
||||||
|
msg "::: Disconnect NBD from ${nbdserver}:9040 at /dev/nbd0"
|
||||||
|
nbd-client -d /dev/nbd0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,5 @@
|
|||||||
MODULES=""
|
MODULES=""
|
||||||
BINARIES=""
|
BINARIES=""
|
||||||
FILES=""
|
FILES=""
|
||||||
HOOKS="base udev archiso_pxe_nbd archiso pata scsi sata usb fw pcmcia filesystems usbinput"
|
HOOKS="base udev archiso archiso_pxe_nbd pata scsi sata usb fw pcmcia filesystems usbinput"
|
||||||
COMPRESSION="lzma"
|
COMPRESSION="lzma"
|
||||||
|
Loading…
Reference in New Issue
Block a user