From 1baefc75a6bfe252c9f5b0014a73574afa4fc177 Mon Sep 17 00:00:00 2001 From: Gerardo Exequiel Pozzi Date: Thu, 4 Feb 2010 18:48:55 -0300 Subject: Update archiso hooks to work with next mkinitcpio 0.6 Some basic changes to make archiso hooks work with the next mkinitcpio 0.6 Tested under KVM, a ""2010.02"" and works fine with it. NOTE: current mkinitcpio-0.5.99.2-2 does not include "losetup", maybe will be included in next version, see #[1]. For now must be added manually. Signed-off-by: Gerardo Exequiel Pozzi --- archiso/hooks/archiso | 22 ++++++++++++---------- archiso/hooks/archiso-early | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/archiso/hooks/archiso b/archiso/hooks/archiso index bed8f7a..5b102d7 100644 --- a/archiso/hooks/archiso +++ b/archiso/hooks/archiso @@ -9,7 +9,7 @@ _mnt_bind() # args: /path/to/image_file _mnt_squashfs() { - /bin/modprobe -q loop >/dev/null 2>&1 + /sbin/modprobe -q loop >/dev/null 2>&1 img="${1}" base_img="${img##*/}"; @@ -27,7 +27,7 @@ _mnt_squashfs() while [ ! -e "/dev/loop${LOOP_NUM}" ]; do sleep 1 done - if ! /bin/losetup "/dev/loop${LOOP_NUM}" ${img}; then + if ! /sbin/losetup "/dev/loop${LOOP_NUM}" ${img}; then echo "ERROR: Cannot mount loop device /dev/loop${LOOP_NUM}" break fi @@ -70,7 +70,7 @@ run_hook () PS1="ramfs$ " /bin/sh -i done - eval $(fstype < /dev/archiso 2>/dev/null) + FSTYPE=$(blkid -o value -s TYPE /dev/archiso 2>/dev/null) if [ -n "${FSTYPE}" ]; then if [ "${FSTYPE}" = "unknown" ]; then # First try mounting then with vfat, maybe someone put the image on @@ -98,8 +98,8 @@ run_hook () echo "ERROR: /dev/archiso found, but the filesystem type is unknown." fi - /bin/modprobe -q squashfs >/dev/null 2>&1 - /bin/modprobe -q aufs >/dev/null 2>&1 + /sbin/modprobe -q squashfs >/dev/null 2>&1 + /sbin/modprobe -q aufs >/dev/null 2>&1 msg ":: Mounting root (aufs) filesystem" /bin/mount -t aufs -o dirs=/tmpfs=rw none /real_root @@ -137,17 +137,19 @@ run_hook () 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. + #Special handling if udev is running + udevpid=$(/bin/pidof udevd) + if [ -n "${udevpid}" ]; then + /bin/kill -9 ${udevpid} > /dev/null 2>&1 + /bin/sleep 0.01 + fi msg ":: Passing control to Arch Linux Initscripts...Please Wait" /bin/umount /sys /bin/umount /proc - exec /bin/run-init -c /dev/console /real_root /sbin/init ${CMDLINE} + exec /sbin/switch_root -c /dev/console /real_root /sbin/init ${CMDLINE} } # vim:ft=sh:ts=4:sw=4:et: diff --git a/archiso/hooks/archiso-early b/archiso/hooks/archiso-early index d57b73b..edd554b 100644 --- a/archiso/hooks/archiso-early +++ b/archiso/hooks/archiso-early @@ -2,7 +2,7 @@ run_hook () { if [ -n "${archisolabel}" ]; then - echo "ACTION==\"add|change\", SUBSYSTEM==\"block\", IMPORT{program}=\"vol_id --export \$tempnode\"" > /lib/udev/rules.d/00-archiso-device.rules + echo "ACTION==\"add|change\", SUBSYSTEM==\"block\", IMPORT{program}=\"/sbin/blkid -o udev \$tempnode\"" > /lib/udev/rules.d/00-archiso-device.rules echo "ENV{ID_FS_LABEL_ENC}==\"${archisolabel}\", SYMLINK+=\"archiso\"" >> /lib/udev/rules.d/00-archiso-device.rules fi } -- cgit v1.2.3-70-g09d2