aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFernando Reyes (likewhoa) <design@missionaccomplish.com>2014-05-29 03:55:05 +0200
committerRick Farina (Zero_Chaos) <zerochaos@gentoo.org>2015-04-29 13:31:45 -0400
commit1748c95286f7554cca5facb39ec744b635d46401 (patch)
tree6517b872492ec47dcc15bfe1c91847ae1c3df08f
parentremove pointless changes size warning (diff)
downloadgenkernel-1748c95286f7554cca5facb39ec744b635d46401.tar.gz
genkernel-1748c95286f7554cca5facb39ec744b635d46401.tar.bz2
genkernel-1748c95286f7554cca5facb39ec744b635d46401.zip
Cleaner shutdown process preventing aufs related mounts from
being umounted along with mnt/{livecd,cdrom} and others. Addition of a variable for aufs changes so that required directory can be create upon successful creation of the livecd image file.
-rwxr-xr-xdefaults/initrd.defaults3
-rw-r--r--defaults/initrd.scripts1
-rw-r--r--defaults/linuxrc20
3 files changed, 21 insertions, 3 deletions
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index a017642..aa9f85c 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -65,6 +65,9 @@ CDROOT_PATH='/mnt/cdrom'
# This is the file that the cdroot will be checked for as a
# marker. It must exist RELATIVE to the cdroot.
CDROOT_MARKER='/livecd'
+
+# AUFS variables
+AUFS_CHANGES=false
AUFS_CHANGESFILE=livecd.aufs
LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 263ed18..68c0ef7 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -285,6 +285,7 @@ create_changefs() {
then
good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
mke2fs -F ${CHANGESMNT}/${AUFS_CHANGESFILE} &>/dev/null
+ AUFS_CHANGES=true
break
else
rm -f ${CHANGESMNT}/${AUFS_CHANGESFILE}
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 8620352..6d942a1 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -811,6 +811,15 @@ then
# TODO: remounting all tmpfs as RO seems weird, can we be more specific?
sed -e 's|\(.*\s/\s*tmpfs\s*\)defaults\(.*\)|\1defaults,ro\2|' /${UNION}/etc/fstab > /${UNION}/etc/fstab.new
mv /${UNION}/etc/fstab.new /${UNION}/etc/fstab
+
+ # RC_NO_UMOUNTS variable for a clean shutdown/reboot
+ test ! $(grep 'RC_NO_UMOUNTS="/newroot|/newroot/mnt/aufs|\
+/newroot/mnt/changesdev|/mnt/livecd|/mnt/cdrom|/.unions/\
+memory|/.unions/memory/xino"' "${UNION}"/etc/rc.conf) &&
+ echo "RC_NO_UMOUNTS=\"/newroot|/newroot/mnt/aufs|"\
+"/newroot/mnt/changesdev|/mnt/livecd|/mnt/cdrom|"\
+"/.unions/memory|/.unions/memory/xino\"">> "${UNION}"/etc/rc.conf
+
warn_msg "Adding all modules in $MODULESD/modules/"
if [ -z "${MODULESD}" ]
then
@@ -820,6 +829,10 @@ then
mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
union_insert_modules ${NEW_ROOT}/mnt/modulesd
fi
+
+ mkdir -p "${UNION}"/newroot/mnt/aufs
+ test ${AUFS_CHANGES} && test ! -d "${UNION}"/newroot/mnt/changesdev &&
+ mkdir "${UNION}"/newroot/mnt/changesdev
fi
# Unpacking additional packages from NFS mount
@@ -975,9 +988,10 @@ verbose_kmsg
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
- mkdir -p /${CHROOT}/.unions/memory 2>/dev/null
- mount -o move /memory /${CHROOT}/.unions/memory || echo '*: Failed to move aufs /memory into the system root!'
- for i in mnt/gentoo mnt/livecd
+ mkdir -p /${CHROOT}/.unions/memory
+ mount -o move /memory /${CHROOT}/.unions/memory
+ test_success "Failed to move aufs /memory into the system root"
+ for i in mnt/gentoo mnt/livecd ${CDROOT_PATH}
do
mkdir -p ${CHROOT}/$i
chmod 755 ${CHROOT}/$i