commit:     137151956da638841b27e8faf3fb8401a3b37df6
Author:     Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Tue Jun  3 01:36:28 2014 +0000
Commit:     Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Jun 23 23:11:15 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=13715195

A new bootstrapFS function has been added to cut on duplicate code
use which both aufs and squashfs boot types use and this it's moved
to the top of the boot process.

---
 defaults/initrd.scripts | 70 +++++++++++++++++++++++++++++++++----------------
 defaults/linuxrc        | 29 +++-----------------
 2 files changed, 50 insertions(+), 49 deletions(-)

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 22769bd..07890ec 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -177,6 +177,52 @@ devicelist(){
        echo ${DEVICES}
 }
 
+bootstrapFS() {
+        if [ "${USE_AUFS_NORMAL}" -eq '1' ]; then
+                # Directories used for rw changes in union mount filesystem
+                UNION=/union MEMORY=/memory
+
+                # Mountpoint for the changesdev
+                CHANGESMNT=${NEW_ROOT}/mnt/changesdev
+
+                if [ -z "$UID" ]; then
+                        CHANGES=${MEMORY}/aufs_changes/default
+                else
+                        CHANGES=${MEMORY}/aufs_changes/${UID}
+                fi
+
+                mkdir -p ${MEMORY} ${UNION} ${CHANGESMNT}
+        else
+                # Legacy SquashFS implementation
+                good_msg "Making tmpfs for ${NEW_ROOT}"
+                mount -n -t tmpfs tmpfs ${NEW_ROOT}
+        fi
+
+        # Setup the filesystem nodes and directories
+        for i in ${CDROOT_PATH} /mnt/livecd /mnt/key /mnt/gentoo /tmp 
/tmp/.initrd /dev /proc /run /sys; do
+                mkdir -p "${NEW_ROOT}${i}"
+                chmod 755 "${NEW_ROOT}${i}"
+        done
+
+        [ ! -d "${CDROOT_PATH}" ] && mkdir -p "${CDROOT_PATH}"
+        [ ! -e "${NEW_ROOT}/dev/null" ] && mknod "${NEW_ROOT}"/dev/null c 1 3
+        [ ! -e "${NEW_ROOT}/dev/zero" ] && mknod -m 660 "${NEW_ROOT}"/dev/zero 
c 1 5
+        [ ! -e "${NEW_ROOT}/dev/console" ] && mknod "${NEW_ROOT}"/dev/console 
c 5 1
+        [ ! -e "${NEW_ROOT}/dev/ttyS0" ] && mknod -m 600 
"${NEW_ROOT}"/dev/ttyS0 c 4 64
+
+        # For SGI LiveCDs
+        if [ "${LOOPTYPE}" = "sgimips" ]; then
+                [ ! -e "${NEW_ROOT}/dev/sr0" ] && mknod "${NEW_ROOT}/dev/sr0" 
b 11 0
+                [ ! -e "${NEW_ROOT}/dev/loop0" ] && mknod 
"${NEW_ROOT}/dev/loop0" b 7 0
+        fi
+
+        # Required for splash to work. Not an issue with the initrd as this
+        # device isn't created there and is not needed.
+        for minor in 0 1 ; do
+                [ ! -e "${NEW_ROOT}/dev/$minor" ] && mknod -m 600 
"${NEW_ROOT}/dev/tty$minor" c 4 $minor
+        done
+}
+
 bootstrapCD() {
        local DEVICES=
 
@@ -302,30 +348,8 @@ create_changefs() {
 }
 
 setup_aufs() {
-        # Directory used for rw changes in union mount filesystem
-       UNION=/union
-       MEMORY=/memory
-       # Mountpoint for the changesdev
-       CHANGESMNT=${NEW_ROOT}/mnt/changesdev
-       if [ -z "$UID" ]
-       then
-               CHANGES=${MEMORY}/aufs_changes/default
-       else
-               CHANGES=${MEMORY}/aufs_changes/${UID}
-       fi
-
-       mkdir -p ${MEMORY}
-       mkdir -p ${UNION}
-       mkdir -p ${CHANGESMNT}
-       for i in dev mnt ${CDROOT_PATH} mnt/livecd mnt/key tmp tmp/.initrd 
mnt/gentoo sys
-       do
-               mkdir -p "${NEW_ROOT}/${i}"
-               chmod 755 "${NEW_ROOT}/${i}"
-       done
-       [ ! -e "${NEW_ROOT}/dev/null" ] && mknod "${NEW_ROOT}"/dev/null c 1 3
-       [ ! -e "${NEW_ROOT}/dev/console" ] && mknod "${NEW_ROOT}"/dev/console c 
5 1
-
        bootstrapCD
+
        if [ -n "${AUFS}" ]
        then
                if [ "${AUFS}" = "detect" ]

diff --git a/defaults/linuxrc b/defaults/linuxrc
index da88bf0..0e40d16 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -458,40 +458,17 @@ rundebugshell "before setting up the root filesystem"
 
 if [ "${CDROOT}" = '1' ]
 then
+        # Setup the root filesystem
+        bootstrapFS
+
        if [ "${USE_AUFS_NORMAL}" -eq '1' ]
        then
                 setup_aufs
                CHROOT=${UNION}
        else
                CHROOT=${NEW_ROOT}
-               good_msg "Making tmpfs for ${NEW_ROOT}"
-               mount -n -t tmpfs tmpfs ${NEW_ROOT}
-
-               for i in dev mnt ${CDROOT_PATH} proc run mnt/livecd mnt/key tmp 
tmp/.initrd mnt/gentoo sys
-               do
-                       mkdir -p "${NEW_ROOT}/${i}"
-                       chmod 755 "${NEW_ROOT}/${i}"
-               done
-               [ ! -d "${CDROOT_PATH}" ] && mkdir -p "${CDROOT_PATH}"
-               [ ! -e "${NEW_ROOT}/dev/null" ] && mknod -m 666 
"${NEW_ROOT}"/dev/null c 1 3
-               [ ! -e "${NEW_ROOT}/dev/zero" ] && mknod -m 666 
"${NEW_ROOT}"/dev/zero c 1 5
-               [ ! -e "${NEW_ROOT}/dev/console" ] && mknod -m 600 
"${NEW_ROOT}"/dev/console c 5 1
-               [ ! -e "${NEW_ROOT}/dev/ttyS0" ] && mknod -m 660 
"${NEW_ROOT}"/dev/ttyS0 c 4 64
        fi
 
-       # For SGI LiveCDs ...
-       if [ "${LOOPTYPE}" = "sgimips" ]
-       then
-               [ ! -e "${NEW_ROOT}/dev/sr0" ] && mknod "${NEW_ROOT}/dev/sr0" b 
11 0
-               [ ! -e "${NEW_ROOT}/dev/loop0" ] && mknod 
"${NEW_ROOT}/dev/loop0" b 7 0
-       fi
-
-       # Required for splash to work.  Not an issue with the initrd as this
-       # device isn't created there and is not needed.
-       for minor in 0 1 ; do
-               [ ! -e "${NEW_ROOT}/dev/$minor" ] && mknod -m 600 
"${NEW_ROOT}/dev/tty$minor" c 4 $minor
-       done
-
        if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] 
&& [ "${USE_AUFS_NORMAL}" != '1' ]
        then
                bootstrapCD

Reply via email to