--- trunk/mkinitrd-magellan/mkinitrd.in 2010/08/19 12:24:23 1140 +++ trunk/mkinitrd-magellan/mkinitrd.in 2010/12/15 21:42:48 1180 @@ -44,6 +44,7 @@ CONFMODS="${MODULES}" MODULES="" +INITEXEC="/sbin/init" compress=1 allowmissing="" @@ -76,7 +77,8 @@ echo " [--image-version] [--force-scsi-probe | --omit-raid-modules]" echo " [--with=] [--force-lvm-probe | --omit-lvm-modules]" echo " [--builtin=] [--initramfs | --loopback] [--no-strip]" - echo " [--fstab=] [--nocompress] " + echo " [--fstab=] [--nocompress] [--initexec=]" + echo " " echo echo " (ex: $(basename $0) /boot/initrd-2.2.5-15.img 2.2.5-15)" @@ -415,6 +417,14 @@ --initramfs) IMAGE_TYPE=initramfs ;; --loopback) IMAGE_TYPE=loopback ;; --no-strip) NOSTRIP=true ;; + --initexec*) + if echo $1 | grep -q '=' ; then + INITEXEC=$(echo $1 | sed 's/^--initexec=//') + else + INITEXEC=$2 + shift + fi + ;; *) if [ -z "${target}" ] then @@ -836,6 +846,11 @@ done fi +# get the right initexec +add_initrd "INITEXEC=\"${INITEXEC}\"" +# support init=* from cmdline +add_initrd 'for i in $(cat /proc/cmdline); do if [[ ${i} = init=* ]]; then INITEXEC=${i/init=}; fi; done' + add_initrd 'echo "-- Mounting sysroot ..."' add_initrd '. /etc/rootdev' add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' @@ -852,12 +867,12 @@ add_initrd 'umount /sys' add_initrd 'umount /proc' -[[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot /sbin/init $@ /sysroot/dev/console' +[[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot ${INITEXEC} $@ /sysroot/dev/console' if [[ ${IMAGE_TYPE} = loopback ]] then add_initrd 'cd /sysroot' add_initrd 'pivot_root . initrd' - add_initrd "exec /sbin/chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;exec -a init.new /sbin/init'/dev/console 2>&1" + add_initrd "exec /sbin/chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;exec -a init.new \${INITEXEC}'/dev/console 2>&1" fi chmod +x ${DEST}/init || die