Add support for isoboot= option (for Gentoo bug #294268)
authorAndrew Gaffney <agaffney@gentoo.org>
Sun, 27 Dec 2009 00:30:32 +0000 (18:30 -0600)
committerAndrew Gaffney <agaffney@gentoo.org>
Sun, 27 Dec 2009 00:30:32 +0000 (18:30 -0600)
ChangeLog
defaults/initrd.scripts
defaults/linuxrc

index 27eb652d6c46b0e708b1fb131e8d84718eda7370..c19f6cd899c5298ea4d96ea190abf7f523603830 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@
 # Distributed under the GPL v2
 # $Id$
 
+  27 Dec 2009; Andrew Gaffney <agaffney@gentoo.org> defaults/initrd.scripts,
+  defaults/linuxrc:
+  Add support for isoboot= option (for Gentoo bug #294268)
+
   26 Dec 2009; Andrew Gaffney <agaffney@gentoo.org>
   defaults/initrd.defaults, defaults/initrd.scripts:
   Properly apply NFS mount options for Gentoo bug #262915
index df4a7dd8a9f0fca1659f161ea94fcc7c6009809e..afe4b31706e60ce7ff7d754fdacb4a83ea07fc9a 100755 (executable)
@@ -72,8 +72,17 @@ findmediamount() {
 
        if [ "$#" -gt "0" ]
        then
-
                [ ! -d "${mntdir}" ] && mkdir -p ${mntdir} 2>/dev/null >/dev/null
+               if [ -n "${ISOBOOT}" ]
+               then
+                       mntcddir="${mntdir%${media}}iso"
+                       if [ ! -f ${mntcddir} ]
+                       then
+                               mkdir ${mntcddir}
+                       fi
+               else
+                       mntcddir=${mntdir}
+               fi
 
                for x in $*
                do
@@ -104,9 +113,18 @@ findmediamount() {
 #                              else
 #                                      mount -r -t auto ${x} ${mntdir} &>/dev/null
 #                              fi
-                               mount -r -t ${CDROOT_TYPE} ${x} ${mntdir} >/dev/null 2>&1
+                               mount -r -t ${CDROOT_TYPE} ${x} ${mntcddir} >/dev/null 2>&1
                                if [ "$?" = '0' ]
                                then
+                                       if [ -n "${ISOBOOT}" ]; then
+                                               if [ -f ${mntcddir}/${ISOBOOT} ]; then
+                                                       mount -o loop ${mntcddir}/${ISOBOOT} ${mntdir}
+                                                       if [ "$?" = "0" ]; then
+                                                               good_msg "iso mounted on ${mntdir}"
+                                                       fi
+                                               fi
+                                       fi
+
                                        # Check for the media
                                        if [ -f "${mntdir}/${recon}" ]
                                        then
@@ -115,7 +133,7 @@ findmediamount() {
                                                good_msg "Media found on ${x}" ${CRYPT_SILENT}
                                                break
                                        else
-                                               umount ${mntdir}
+                                               umount ${mntcddir}
                                        fi
                                fi
                        fi
index 0f47215ebaa54cf0db3fc6972ed2cce7d042ead2..0bf7316f933fd91daa4a37471e3d46bd54235ea8 100755 (executable)
@@ -80,6 +80,9 @@ do
                looptype\=*)
                        LOOPTYPE=`parse_opt "${x}"`
                ;;
+               isoboot\=*)
+                       ISOBOOT=`parse_opt "${x}"`
+               ;;
                # Start Volume manager options 
                dolvm)
                        USE_LVM_NORMAL=1