ISO/hooks/archiso
Simo Leone 5c7046f2fc Can now break out of archiso hook into dash
Usually initcpio's init takes care of this, but
it never executes that far, so this is copypasta.

Signed-off-by: Simo Leone <simo@archlinux.org>
2007-10-10 22:42:50 -05:00

58 lines
1.9 KiB
Bash

run_hook ()
{
if [ "x${ramdisk_size}" = "x" ]; then
ramdisk_size="75%"
fi
msg -n ":: Mounting tmpfs, size=${ramdisk_size}..."
mount -t tmpfs -o "size=${ramdisk_size}" tmpfs /tmpfs
msg "done."
if [ "x${BOOT_MOUNT}" -eq "x" ]; then
echo "ERROR: BOOT_MOUNT is not set. The boot-cd or boot-usb hook MUST"
echo " be run before this one. This image was improperly built"
exit 1
fi
squashimg="${BOOT_MOUNT}/archlive.sqfs"
if [ "${copytoram}" = "y" ]; then
/bin/cat ${squashimg} > /tmpfs/archlive.sqfs
squashimg="/tmpfs/archlive.sqfs"
fi
msg ":: Mounting squashfs image"
/bin/modprobe -q squashfs >/dev/null 2>&1
/bin/mkdir -p /tmpfs/squashfs_root
if ! /bin/losetup /dev/loop0 "${squashimg}" >/dev/null 2>&1; then
echo "ERROR: Cannot mount loop device /dev/loop0...aborting"
exit 1
fi
/bin/mount -r -t squashfs /dev/loop0 /tmpfs/squashfs_root
msg ":: Mounting root (union) filesystem"
/bin/modprobe -q unionfs >/dev/null 2>&1
/bin/mount -t unionfs -o dirs=/tmpfs=rw:/tmpfs/squashfs_root=ro none /real_root
if [ -d /proc/sys/dev/cdrom ]; then
echo 0 > /proc/sys/dev/cdrom/lock
echo 1 > /proc/sys/dev/cdrom/autoeject
fi
if [ "${break}" = "y" ]; then
echo ":: Break requested, type 'exit' to resume operation"
echo " NOTE: klibc contains no 'ls' binary, use 'echo *' instead"
PS1="ramfs$ " /bin/sh -i
fi
udevpid=$(/bin/minips -C udevd -o pid=)
[ "x${udevpid}" != "x" ] && /bin/kill -9 $udevpid 2>&1 >/dev/null
#Yep, we're bailing out here. We don't need kinit.
msg ":: Passing control to Archlinux Initscripts...Please Wait"
/bin/umount /sys
/bin/umount /proc
/bin/umount /dev
exec /bin/run-init -c /dev/console /real_root /sbin/init ${CMDLINE}
}
# vim:ft=sh:ts=4:sw=4:et: