diff options
author | Aaron Griffin <aaronmgriffin@gmail.com> | 2008-09-06 21:06:39 -0500 |
---|---|---|
committer | Aaron Griffin <aaronmgriffin@gmail.com> | 2008-09-06 21:06:39 -0500 |
commit | 9417199206e59c2015ba764e66a4b536b95629f5 (patch) | |
tree | f043d0f9740cb59689d93f26b51830ac384f4ca1 /archiso/hooks | |
parent | 98318ea039c39bff953c6b83010e48791ee6d286 (diff) | |
download | archiso32-9417199206e59c2015ba764e66a4b536b95629f5.tar.xz |
Unify initcpio hooks to one glorious archiso hook
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
Diffstat (limited to 'archiso/hooks')
-rw-r--r-- | archiso/hooks/archiso | 53 | ||||
-rw-r--r-- | archiso/hooks/boot-cd | 37 | ||||
-rw-r--r-- | archiso/hooks/boot-usb | 35 |
3 files changed, 48 insertions, 77 deletions
diff --git a/archiso/hooks/archiso b/archiso/hooks/archiso index 376593b..1464a6a 100644 --- a/archiso/hooks/archiso +++ b/archiso/hooks/archiso @@ -31,13 +31,56 @@ run_hook () mount -t tmpfs -o "size=${ramdisk_size}" tmpfs /tmpfs msg "done." - if [ "x${BOOT_MOUNT}" = "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" + # external drives may need to settle + msg ":: Waiting for usb devices to settle..." + /sbin/udevtrigger --subsystem-match=usb + /sbin/udevsettle + sleep 5 + + msg ":: Scanning for boot device..." + + /bin/mkdir -p /bootmnt + bootmnt="/bootmnt" + found=0 + + /bin/modprobe -q isofs >/dev/null 2>&1 + msg ":: Scanning cd drives..." + for cdrom in /dev/cd/*; do + if mount -r -t iso9660 "${cdrom}" ${bootmnt} >/dev/null 2>&1; then + if [ -e "${bootmnt}/archlive.sqfs" ]; then + found=1 + msg "${cdrom}" + break + fi + else + echo "Failed to mount ${cdrom}" + fi + [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1 + done + + if [ ${found} -eq 0 ]; then + msg ":: Scanning usb drives..." + for usb in /dev/sd[a-z][0-9]; do + if mount -r -t vfat "${usb}" ${bootmnt} >/dev/null 2>&1 ||\ + mount -r -t ext2 "${usb}" ${bootmnt} >/dev/null 2>&1; then + if [ -e "${bootmnt}/archlive.sqfs" ]; then + found=1 + msg "${usb}" + break + fi + else + echo "Failed to mount ${usb}" + fi + [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1 + done + fi + + if [ ${found} -eq 0 ]; then + echo "ERROR: cannot find boot device, cannot continue..." exit 1 fi - base_img="${BOOT_MOUNT}/archlive.sqfs" + base_img="${bootmnt}/archlive.sqfs" if [ "${copytoram}" = "y" ]; then msg ":: Copying squashfs image to RAM" /bin/cat ${base_img} > /tmpfs/archlive.sqfs @@ -52,7 +95,7 @@ run_hook () /bin/mount -t unionfs -o dirs=/tmpfs=rw none /real_root export LOOP_NUM="0" - addon_dir="${BOOT_MOUNT}/addons" + addon_dir="${bootmnt}/addons" # always layer default configuration _mnt_squashfs "${addon_dir}/overlay.sqfs" diff --git a/archiso/hooks/boot-cd b/archiso/hooks/boot-cd deleted file mode 100644 index 1670c6b..0000000 --- a/archiso/hooks/boot-cd +++ /dev/null @@ -1,37 +0,0 @@ -run_hook () -{ - # external drives may need to settle - msg ":: Waiting for usb devices to settle..." - /sbin/udevtrigger --subsystem-match=usb - /sbin/udevsettle - sleep 5 - - msg ":: Scanning for boot cdrom device..." - - /bin/mkdir -p /bootmnt - bootmnt="/bootmnt" - found=0 - - /bin/modprobe -q isofs >/dev/null 2>&1 - for cdrom in /dev/cd/*; do - if mount -r -t iso9660 "${cdrom}" ${bootmnt} >/dev/null 2>&1; then - if [ -e "${bootmnt}/archlive.sqfs" ]; then - found=1 - msg "${cdrom}" - break - fi - else - echo "Failed to mount ${cdrom}" - fi - [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1 - done - - if [ ${found} -eq 0 ]; then - echo "ERROR: cannot find booted cdrom device, cannot continue..." - exit 1 - else - export BOOT_MOUNT="${bootmnt}" - fi -} - -# vim:ft=sh:ts=4:sw=4:et: diff --git a/archiso/hooks/boot-usb b/archiso/hooks/boot-usb deleted file mode 100644 index e84dd1c..0000000 --- a/archiso/hooks/boot-usb +++ /dev/null @@ -1,35 +0,0 @@ -run_hook () -{ - msg ":: Waiting for usb devices to settle..." - /sbin/udevtrigger --subsystem-match=usb - /sbin/udevsettle - sleep 5 - msg ":: Scanning for boot usb device..." - - /bin/mkdir -p /bootmnt - bootmnt="/bootmnt" - found=0 - - for usb in /dev/sd[a-z][0-9]; do - if mount -r -t vfat "${usb}" ${bootmnt} >/dev/null 2>&1 ||\ - mount -r -t ext2 "${usb}" ${bootmnt} >/dev/null 2>&1; then - if [ -e "${bootmnt}/archlive.sqfs" ]; then - found=1 - msg "${usb}" - break - fi - else - echo "Failed to mount ${usb}" - fi - [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1 - done - - if [ ${found} -eq 0 ]; then - echo "ERROR: cannot find booted usb device, cannot continue..." - exit 1 - else - export BOOT_MOUNT="${bootmnt}" - fi -} - -# vim:ft=sh:ts=4:sw=4:et: |