* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-03-17 19:20 Robin H. Johnson
0 siblings, 0 replies; 61+ messages in thread
From: Robin H. Johnson @ 2014-03-17 19:20 UTC (permalink / raw
To: gentoo-commits
commit: a689926028470d0ae6f7a36497383681d3c80f07
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 19:20:40 2014 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Mon Mar 17 19:20:40 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=a6899260
cleanup: these directories were dropped in the aufs patch.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
---
defaults/linuxrc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index c8f06d0..7758389 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -466,7 +466,7 @@ then
good_msg "Making tmpfs for ${NEW_ROOT}"
mount -n -t tmpfs tmpfs ${NEW_ROOT}
- for i in dev mnt ${CDROOT_PATH} mnt/livecd mnt/key tmp tmp/.initrd mnt/gentoo sys
+ for i in dev mnt ${CDROOT_PATH} mnt/livecd mnt/key tmp tmp/.initrd mnt/gentoo proc run sys
do
mkdir -p "${NEW_ROOT}/${i}"
chmod 755 "${NEW_ROOT}/${i}"
@@ -890,7 +890,7 @@ then
done
fi
done
- mkdir initramfs proc tmp sys 2>/dev/null
+ mkdir -p initramfs proc tmp run sys 2>/dev/null
chmod 1777 tmp
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-03-17 19:32 Robin H. Johnson
0 siblings, 0 replies; 61+ messages in thread
From: Robin H. Johnson @ 2014-03-17 19:32 UTC (permalink / raw
To: gentoo-commits
commit: d0f0ed18531a40132a30a801b98a49ba0ee56335
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 19:32:04 2014 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Mon Mar 17 19:32:04 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=d0f0ed18
Refactor tmpfs creation to aufs env.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
---
defaults/linuxrc | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 7758389..71a81dc 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -975,17 +975,21 @@ 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 tmp var/tmp mnt/gentoo mnt/livecd
+ for i in mnt/gentoo mnt/livecd
do
mkdir -p ${CHROOT}/$i
chmod 755 ${CHROOT}/$i
done
# This will prevent from putting junk on the CHANGESDEV
- mkdir -p ${CHROOT}/usr/portage/distfiles
- mount -t tmpfs tmpfs ${CHROOT}/var/tmp
- mount -t tmpfs tmpfs ${CHROOT}/tmp
- mount -t tmpfs tmpfs ${CHROOT}/usr/portage/distfiles
- warn_msg "/tmp /var/tmp /usr/portage/distfiles are mounted in ram"
+ str=""
+ for i in tmp var/tmp usr/portage/distfiles
+ do
+ mkdir -p ${CHROOT}/$i
+ chmod 755 ${CHROOT}/$i
+ mount -t tmpfs tmpfs ${CHROOT}/$i
+ str="${str} ${i}"
+ done
+ warn_msg "${str}are mounted in ram"
warn_msg "consider saving important files elsewhere..."
read -t 3 UNUSEDVAL
mount --bind ${NEW_ROOT}${CDROOT_PATH} ${CHROOT}${CDROOT_PATH}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-03-17 19:38 Robin H. Johnson
0 siblings, 0 replies; 61+ messages in thread
From: Robin H. Johnson @ 2014-03-17 19:38 UTC (permalink / raw
To: gentoo-commits
commit: 14b0a243747cffca04b747941f870230db63682b
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 19:38:09 2014 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Mon Mar 17 19:38:09 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=14b0a243
Document the very large if structure for AUFS.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
---
defaults/linuxrc | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 71a81dc..ae2222f 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -732,7 +732,7 @@ then
test_success 'Mount filesystem'
FS_LOCATION='mnt/livecd'
# Setup the loopback mounts, if unencrypted
- else
+ else # if [ -n "${CRYPT_ROOT}" ]
if [ "${LOOPTYPE}" = 'normal' ]
then
good_msg 'Mounting loop filesystem'
@@ -800,13 +800,14 @@ then
test_success 'mount /dev/loop0 /'
FS_LOCATION='mnt/livecd'
fi
- fi
+ fi # if [ -n "${CRYPT_ROOT}" ]
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
union_insert_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION}
# Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
+ # 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
warn_msg "Adding all modules in $MODULESD/modules/"
@@ -842,7 +843,7 @@ then
setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union
else
- #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
+ #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
then
good_msg "Copying read-write image contents to tmpfs"
@@ -886,22 +887,22 @@ then
# It does not exist, make a link to the livecd
ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
current_parent="${directory}"
- fi
- done
- fi
- done
+ fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
+ done # while read directory
+ fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
+ done # for x in ${ROOT_LINKS}
mkdir -p initramfs proc tmp run sys 2>/dev/null
chmod 1777 tmp
- fi
- #XXX: end extremely confusing hunk
+ fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
+ #XXX: end extremely confusing hunk
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
+ # have handy /mnt/cdrom (CDROOT_PATH) as well
+ _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
+ [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
+ mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
- fi
+ fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
#UML=$(cat /proc/cpuinfo|grep UML|sed -e 's|model name.*: ||')
#if [ "${UML}" = 'UML' ]
@@ -913,7 +914,7 @@ then
# Let Init scripts know that we booted from CD
export CDBOOT
CDBOOT=1
-else
+else # if [ "${CDROOT}" = '1' ]
if [ "${USE_UNIONFS_NORMAL}" = '1' ]
then
mkdir /union_changes
@@ -927,7 +928,7 @@ else
mkdir -p ${UNION}/tmp/.initrd
fi
-fi
+fi # if [ "${CDROOT}" = '1' ]
# Mount the additional things as required by udev & systemd
if [ -f ${NEW_ROOT}/etc/initramfs.mounts ]; then
@@ -958,7 +959,7 @@ for fs in $fslist; do
if ! $cmd; then
bad_msg "Unable to mount $dev for $fs"
fi
-done
+done # for fs in $fslist; do
# Execute script on the cdrom just before boot to update things if necessary
cdupdate
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-05-22 20:28 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-05-22 20:28 UTC (permalink / raw
To: gentoo-commits
commit: 14205a0732037164dc34e7ff0b34209e2c3f0830
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 19:20:40 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu May 22 20:05:34 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=14205a07
cleanup: these directories were dropped in the aufs patch.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
---
defaults/linuxrc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index e2e1b6f..8b474aa 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -891,7 +891,7 @@ then
done
fi
done
- mkdir initramfs proc tmp sys 2>/dev/null
+ mkdir -p initramfs proc tmp run sys 2>/dev/null
chmod 1777 tmp
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-05-22 20:28 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-05-22 20:28 UTC (permalink / raw
To: gentoo-commits
commit: 6df308a1f51e423d7378147610562459538249ec
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Thu May 9 02:24:51 2013 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu May 22 20:03:46 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=6df308a1
Proper AUFS support
This patch is what we have been using for the Pentoo LiveCDs for about 5
years with the changes suggested by lxnay merged in. As much as
possible has been addressed (with the exception of the man page
documentation). Please review this code as the next version will likely
be suggested for inclusion (once I write the documentation for the new
features).
Signed-off-by: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo.org>
---
defaults/initrd.defaults | 1 +
defaults/initrd.scripts | 180 +++++++++++++++++++++++++++++++++++++++++++
defaults/linuxrc | 194 ++++++++++++++++++++++++++++++++++-------------
3 files changed, 321 insertions(+), 54 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index cbf18f3..3d6fe7e 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -65,6 +65,7 @@ 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_CHANGESFILE=livecd.aufs
LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 5ef5d0b..6b31095 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -234,6 +234,186 @@ mount_sysfs() {
[ ${ret} -eq 0 ] || bad_msg "Failed to mount /sys!"
}
+# Insert a directory tree ${2} to an union specified by ${1}
+# Top-level read-write branch is specified by it's index 0
+# ${1} = union absolute path (starting with /)
+# ${2} = path to data directory
+#
+union_insert_dir() {
+ # Always mount it over the precedent (add:1:)
+ mount -n -o remount,add:1:${2}=rr aufs ${1}
+ if [ $? = '0' ]
+ then
+ good_msg "Addition of ${2} to ${1} successful"
+ fi
+}
+
+# Insert all modules found in $1, usually ${CDROOT_PATH}
+# added to allow users to add their own apps.
+union_insert_modules() {
+ for module in $(ls ${NEW_ROOT}/${1}/modules/*.mo 2>/dev/null| sort)
+ do
+ mkdir -p ${MEMORY}/modules/$(basename ${module} .mo)
+ union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .mo)
+ done
+ for module in $(ls ${NEW_ROOT}/${1}/modules/*.lzm 2>/dev/null| sort)
+ do
+ mkdir -p ${MEMORY}/modules/$(basename ${module} .lzm)
+ mount -o loop,ro ${module} ${MEMORY}/modules/$(basename ${module} .lzm)
+ union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .lzm)
+ done
+}
+
+# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
+create_changefs() {
+ local size
+ while [ 1 ]
+ do
+ read -p '<< Size of file (Enter for default 256 Mb): ' size
+ if [ -z "${size}" ]; then
+ let size=256
+ fi
+ let size="${size}"
+ if [ ${size} -lt 16 ]
+ then
+ bad_msg "Please give a size of at least 16 Mb"
+ else
+ dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size}
+ if [ $? = '0' ]
+ then
+ good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
+ mke2fs -F ${CHANGESMNT}/${AUFS_CHANGESFILE}
+ break
+ else
+ rm -f ${CHANGESMNT}/${AUFS_CHANGESFILE}
+ bad_msg "Unable to create ${AUFS_CHANGESFILE} on ${CHANGESDEV} of ${size} Mb"
+ bad_msg "Please give a size of at least 16 Mb"
+ bad_msg "Also check if your disk is full or read-only ?"
+ read -p '<< Type "a" to abort, anything else to continue : ' doabort
+ if [ "${doabort}" = "a" ]; then
+ return 1
+ fi
+ fi
+ fi
+ done
+ return 0
+}
+
+setup_aufs() {
+ if [ "${USE_AUFS_NORMAL}" -eq '1' ]
+ then
+ # 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" ]
+ then
+ CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
+ CHANGESDEV=${REAL_ROOT}
+ else
+ CHANGESDEV=${AUFS}
+ good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
+ mount -t auto ${CHANGESDEV} ${CHANGESMNT}
+ ret=$?
+ if [ "${ret}" -ne 0 ]
+ then
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ unset AUFS
+ fi
+ fi
+ # Check and attempt to create the changesfile
+ if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
+ then
+ create_changefs
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
+ elif [ -n "${AUFS}" ]
+ then
+ local nbpass=0
+ while [ 1 ]
+ do
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
+ ret=$?
+ if [ "${ret}" -ne 0 ]
+ then
+ if [ ${nbpass} -eq 0 ]
+ then
+ bad_msg "mounting of changes file failed, Running e2fsck"
+ e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
+ nbpass=$((${nbpass} + 1))
+ else
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
+ bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
+ mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
+ bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing"
+ break
+ fi
+ else
+ if [ ${nbpass} -eq 1 ]
+ then
+ good_msg "e2fsck ran successfully. Please check your files after bootup"
+ fi
+ break
+ fi
+ done
+ fi
+ # mount tmpfs only in the case when changes= boot parameter was
+ # empty or we were not able to mount the storage device
+ if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
+ then
+ umount ${MEMORY}
+ bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
+ bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
+ bad_msg "falling back to ramdisk based aufs for safety"
+ mount -t tmpfs tmpfs ${MEMORY}
+ XINO=${MEMORY}
+ else
+ XINO=${MEMORY}/xino
+ mkdir -p ${XINO}
+ mount -t tmpfs tmpfs ${XINO}
+ fi
+ else
+ good_msg "Mounting ramdisk to $MEMORY for aufs support..."
+ mount -t tmpfs tmpfs ${MEMORY}
+ XINO=${MEMORY}
+ fi
+
+ mkdir -p ${CHANGES}
+ mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
+ ret=$?
+ if [ "${ret}" -ne 0 ]
+ then
+ bad_msg "Can't setup union ${UNION} in directory!"
+ USE_AUFS_NORMAL=0
+ fi
+ else
+ USE_AUFS_NORMAL=0
+ fi
+}
+
+
findnfsmount() {
if [ "${IP}" != '' ] || busybox udhcpc -n -T 15 -q
then
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 6401614..e2e1b6f 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -253,6 +253,38 @@ do
aufs)
USE_AUFS_NORMAL=1
;;
+ aufs\=*)
+ USE_AUFS_NORMAL=1
+ CMD_AUFS=$(parse_opt "${x}")
+ echo ${CMD_AUFS}|grep , >/dev/null 2>&1
+ if [ "$?" -eq '0' ]
+ then
+ UID=$(echo ${CMD_AUFS#*,})
+ AUFS=$(echo ${CMD_AUFS%,*})
+ else
+ AUFS=${CMD_AUFS}
+ fi
+ ;;
+ aufs.changes\=*)
+ USE_AUFS_NORMAL=1
+ CMD_AUFS=$(parse_opt "${x}")
+ echo ${CMD_AUFS}|grep , >/dev/null 2>&1
+ if [ "$?" -eq '0' ]
+ then
+ UID=$(echo ${CMD_AUFS#*,})
+ AUFS=$(echo ${CMD_AUFS%,*})
+ else
+ AUFS=${CMD_AUFS}
+ fi
+ ;;
+ aufs.persistent)
+ USE_AUFS_NORMAL=1
+ AUFS="detect"
+ ;;
+ # Allow user to specify the modules location
+ aufs.modules\=*)
+ MODULESD=$(parse_opt "${x}")
+ ;;
unionfs)
if [ ! -x /sbin/unionfs ]
then
@@ -425,19 +457,26 @@ rundebugshell "before setting up the root filesystem"
if [ "${CDROOT}" = '1' ]
then
- good_msg "Making tmpfs for ${NEW_ROOT}"
- mount -n -t tmpfs tmpfs "${NEW_ROOT}"
+ setup_aufs
+ if [ "${USE_AUFS_NORMAL}" -eq '1' ]
+ then
+ 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 proc run sys tmp mnt/livecd mnt/key tmp/.initrd mnt/gentoo
- 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 660 "${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 -m 660 "${NEW_ROOT}"/dev/console c 5 1
- [ ! -e "${NEW_ROOT}/dev/ttyS0" ] && mknod -m 600 "${NEW_ROOT}"/dev/ttyS0 c 4 64
+ 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" ]
@@ -452,7 +491,7 @@ then
[ ! -e "${NEW_ROOT}/dev/$minor" ] && mknod -m 600 "${NEW_ROOT}/dev/tty$minor" c 4 $minor
done
- if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ]
+ if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] && [ "${USE_AUFS_NORMAL}" != '1' ]
then
bootstrapCD
fi
@@ -764,7 +803,23 @@ then
fi
fi
+ if [ "${USE_AUFS_NORMAL}" -eq '1' ]
+ then
+ union_insert_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION}
+ # Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
+ 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
+ warn_msg "Adding all modules in $MODULESD/modules/"
+ if [ -z "${MODULESD}" ]
+ then
+ union_insert_modules ${CDROOT_PATH}
+ else
+ mkdir ${NEW_ROOT}/mnt/modulesd
+ mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
+ union_insert_modules ${NEW_ROOT}/mnt/modulesd
+ fi
+ fi
# Unpacking additional packages from NFS mount
# This is useful for adding kernel modules to /lib
@@ -787,56 +842,60 @@ then
then
setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union
- elif [ "${USE_AUFS_NORMAL}" != '1' ]; then
-
- good_msg "Copying read-write image contents to tmpfs"
- # Copy over stuff that should be writable
- (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
- bad_msg "Copying failed, dropping into a shell."
- do_rundebugshell
- }
-
- # Now we do the links.
- for x in ${ROOT_LINKS}
- do
- if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
+ else
+ #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
+ if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
then
- ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
- else
- # List all subdirectories of x
- find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
+ good_msg "Copying read-write image contents to tmpfs"
+ # Copy over stuff that should be writable
+ (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
+ bad_msg "Copying failed, dropping into a shell."
+ do_rundebugshell
+ }
+
+ # Now we do the links.
+ for x in ${ROOT_LINKS}
do
- # Strip the prefix of the FS_LOCATION
- directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
-
- # Skip this directory if we already linked a parent directory
- if [ "${current_parent}" != '' ]; then
- var=$(echo "${directory}" | grep "^${current_parent}")
- if [ "${var}" != '' ]; then
- continue
- fi
- fi
- # Test if the directory exists already
- if [ -e "/${NEW_ROOT}/${directory}" ]
+ if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
then
- # It does exist, link all the individual files
- for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
+ ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
+ else
+ # List all subdirectories of x
+ find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
do
- if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
- ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
+ # Strip the prefix of the FS_LOCATION
+ directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
+
+ # Skip this directory if we already linked a parent directory
+ if [ "${current_parent}" != '' ]; then
+ var=$(echo "${directory}" | grep "^${current_parent}")
+ if [ "${var}" != '' ]; then
+ continue
+ fi
+ fi
+ # Test if the directory exists already
+ if [ -e "/${NEW_ROOT}/${directory}" ]
+ then
+ # It does exist, link all the individual files
+ for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
+ do
+ if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
+ ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
+ fi
+ done
+ else
+ # It does not exist, make a link to the livecd
+ ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
+ current_parent="${directory}"
fi
done
- else
- # It does not exist, make a link to the livecd
- ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
- current_parent="${directory}"
fi
done
- fi
- done
+ mkdir initramfs proc tmp sys 2>/dev/null
+ chmod 1777 tmp
- mkdir initramfs proc tmp sys run 2>/dev/null
- chmod 1777 tmp
+ fi
+ #XXX: end extremely confusing hunk
# have handy /mnt/cdrom (CDROOT_PATH) as well
_new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
@@ -863,6 +922,12 @@ else
setup_unionfs /union_changes ${NEW_ROOT}
mkdir -p ${UNION}/tmp/.initrd
fi
+ if [ "${USE_AUFS_NORMAL}" -eq '1' ]
+ then
+ union_insert_dir ${UNION} ${NEW_ROOT}
+ mkdir -p ${UNION}/tmp/.initrd
+ fi
+
fi
# Mount the additional things as required by udev & systemd
@@ -907,6 +972,27 @@ fi
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 tmp var/tmp mnt/gentoo mnt/livecd
+ do
+ mkdir -p ${CHROOT}/$i
+ chmod 755 ${CHROOT}/$i
+ done
+ # This will prevent from putting junk on the CHANGESDEV
+ mkdir -p ${CHROOT}/usr/portage/distfiles
+ mount -t tmpfs tmpfs ${CHROOT}/var/tmp
+ mount -t tmpfs tmpfs ${CHROOT}/tmp
+ mount -t tmpfs tmpfs ${CHROOT}/usr/portage/distfiles
+ warn_msg "/tmp /var/tmp /usr/portage/distfiles are mounted in ram"
+ warn_msg "consider saving important files elsewhere..."
+ read -t 3 UNUSEDVAL
+ mount --bind ${NEW_ROOT}${CDROOT_PATH} ${CHROOT}${CDROOT_PATH}
+ mount --bind ${NEW_ROOT}/mnt/livecd ${CHROOT}/mnt/livecd
+fi
+
good_msg "Booting (initramfs)"
cd "${CHROOT}"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-05-22 20:28 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-05-22 20:28 UTC (permalink / raw
To: gentoo-commits
commit: 3c53f403be48c44608938a85c0502fd1614eace9
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 19:32:04 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu May 22 20:05:34 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=3c53f403
Refactor tmpfs creation to aufs env.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
---
defaults/linuxrc | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 8b474aa..b4ce21d 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -976,17 +976,21 @@ 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 tmp var/tmp mnt/gentoo mnt/livecd
+ for i in mnt/gentoo mnt/livecd
do
mkdir -p ${CHROOT}/$i
chmod 755 ${CHROOT}/$i
done
# This will prevent from putting junk on the CHANGESDEV
- mkdir -p ${CHROOT}/usr/portage/distfiles
- mount -t tmpfs tmpfs ${CHROOT}/var/tmp
- mount -t tmpfs tmpfs ${CHROOT}/tmp
- mount -t tmpfs tmpfs ${CHROOT}/usr/portage/distfiles
- warn_msg "/tmp /var/tmp /usr/portage/distfiles are mounted in ram"
+ str=""
+ for i in tmp var/tmp usr/portage/distfiles
+ do
+ mkdir -p ${CHROOT}/$i
+ chmod 755 ${CHROOT}/$i
+ mount -t tmpfs tmpfs ${CHROOT}/$i
+ str="${str} ${i}"
+ done
+ warn_msg "${str}are mounted in ram"
warn_msg "consider saving important files elsewhere..."
read -t 3 UNUSEDVAL
mount --bind ${NEW_ROOT}${CDROOT_PATH} ${CHROOT}${CDROOT_PATH}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-05-22 20:28 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-05-22 20:28 UTC (permalink / raw
To: gentoo-commits
commit: c7abfb38a783e2cbfa8ccfe01fc7f257c19bca3c
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 19:38:09 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu May 22 20:05:35 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=c7abfb38
Document the very large if structure for AUFS.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
---
defaults/linuxrc | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index b4ce21d..aaf27ad 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -733,7 +733,7 @@ then
test_success 'Mount filesystem'
FS_LOCATION='mnt/livecd'
# Setup the loopback mounts, if unencrypted
- else
+ else # if [ -n "${CRYPT_ROOT}" ]
if [ "${LOOPTYPE}" = 'normal' ]
then
good_msg 'Mounting loop filesystem'
@@ -801,13 +801,14 @@ then
test_success 'mount /dev/loop0 /'
FS_LOCATION='mnt/livecd'
fi
- fi
+ fi # if [ -n "${CRYPT_ROOT}" ]
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
union_insert_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION}
# Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
+ # 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
warn_msg "Adding all modules in $MODULESD/modules/"
@@ -843,7 +844,7 @@ then
setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union
else
- #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
+ #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
then
good_msg "Copying read-write image contents to tmpfs"
@@ -887,22 +888,22 @@ then
# It does not exist, make a link to the livecd
ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
current_parent="${directory}"
- fi
- done
- fi
- done
+ fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
+ done # while read directory
+ fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
+ done # for x in ${ROOT_LINKS}
mkdir -p initramfs proc tmp run sys 2>/dev/null
chmod 1777 tmp
- fi
- #XXX: end extremely confusing hunk
+ fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
+ #XXX: end extremely confusing hunk
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
+ # have handy /mnt/cdrom (CDROOT_PATH) as well
+ _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
+ [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
+ mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
- fi
+ fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
#UML=$(cat /proc/cpuinfo|grep UML|sed -e 's|model name.*: ||')
#if [ "${UML}" = 'UML' ]
@@ -914,7 +915,7 @@ then
# Let Init scripts know that we booted from CD
export CDBOOT
CDBOOT=1
-else
+else # if [ "${CDROOT}" = '1' ]
if [ "${USE_UNIONFS_NORMAL}" = '1' ]
then
mkdir /union_changes
@@ -928,7 +929,7 @@ else
mkdir -p ${UNION}/tmp/.initrd
fi
-fi
+fi # if [ "${CDROOT}" = '1' ]
# Mount the additional things as required by udev & systemd
if [ -f ${NEW_ROOT}/etc/initramfs.mounts ]; then
@@ -959,7 +960,7 @@ for fs in $fslist; do
if ! $cmd; then
bad_msg "Unable to mount $dev for $fs"
fi
-done
+done # for fs in $fslist; do
# Execute script on the cdrom just before boot to update things if necessary
cdupdate
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-05-24 21:35 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-05-24 21:35 UTC (permalink / raw
To: gentoo-commits
commit: 476ad3514fd5571bafbc233dc23ce8688067447a
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Thu May 22 21:11:10 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu May 22 21:11:10 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=476ad351
remove pointless changes size warning
a check has been added rendering this warning obsolete
---
defaults/initrd.scripts | 1 -
1 file changed, 1 deletion(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 57dc2cb..e81e5f2 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -289,7 +289,6 @@ create_changefs() {
else
rm -f ${CHANGESMNT}/${AUFS_CHANGESFILE}
bad_msg "Unable to create ${AUFS_CHANGESFILE} on ${CHANGESDEV} of ${size} Mb"
- bad_msg "Please give a size of at least 16 Mb"
bad_msg "Ensure your disk is not full or read-only"
read -p '<< Type "a" to abort, anything else to continue : ' doabort
if [ "${doabort}" = "a" ]; then
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-05-24 21:35 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-05-24 21:35 UTC (permalink / raw
To: gentoo-commits
commit: 0c5afac7e01272f864a5e1b53f4796dd624da636
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu May 22 21:10:12 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu May 22 21:10:12 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=0c5afac7
Removing use of 'let' and cleaner output of dd command, plus minor cosmetic
---
defaults/initrd.scripts | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 6b31095..57dc2cb 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -267,14 +267,16 @@ union_insert_modules() {
# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
create_changefs() {
local size
+
while [ 1 ]
do
- read -p '<< Size of file (Enter for default 256 Mb): ' size
+ read -p '<< Size of file (Press Enter for default 256 Mb): ' size
if [ -z "${size}" ]; then
- let size=256
+ size=256
fi
- let size="${size}"
- if [ ${size} -lt 16 ]
+ size="${size}"
+
+ if [ ${size} -lt 16 ]
then
bad_msg "Please give a size of at least 16 Mb"
else
@@ -282,13 +284,13 @@ create_changefs() {
if [ $? = '0' ]
then
good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
- mke2fs -F ${CHANGESMNT}/${AUFS_CHANGESFILE}
+ mke2fs -F ${CHANGESMNT}/${AUFS_CHANGESFILE} &>/dev/null
break
else
rm -f ${CHANGESMNT}/${AUFS_CHANGESFILE}
bad_msg "Unable to create ${AUFS_CHANGESFILE} on ${CHANGESDEV} of ${size} Mb"
bad_msg "Please give a size of at least 16 Mb"
- bad_msg "Also check if your disk is full or read-only ?"
+ bad_msg "Ensure your disk is not full or read-only"
read -p '<< Type "a" to abort, anything else to continue : ' doabort
if [ "${doabort}" = "a" ]; then
return 1
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-05-24 21:35 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-05-24 21:35 UTC (permalink / raw
To: gentoo-commits
commit: 2771684e276559e5c8846262a6d89df74ed0671b
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu May 22 20:52:30 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu May 22 20:57:14 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=2771684e
Fix kernel line argument handling.
Fix kernel line argument handling since it's using old deprecated
function.
---
defaults/linuxrc | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index aaf27ad..8620352 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -255,35 +255,35 @@ do
;;
aufs\=*)
USE_AUFS_NORMAL=1
- CMD_AUFS=$(parse_opt "${x}")
- echo ${CMD_AUFS}|grep , >/dev/null 2>&1
+ echo ${x#*=} | grep , &>/dev/null
+
if [ "$?" -eq '0' ]
then
- UID=$(echo ${CMD_AUFS#*,})
- AUFS=$(echo ${CMD_AUFS%,*})
+ UID=${x#*,}
+ AUFS=${x%,*}
else
- AUFS=${CMD_AUFS}
+ AUFS=${x#*=}
fi
;;
aufs.changes\=*)
- USE_AUFS_NORMAL=1
- CMD_AUFS=$(parse_opt "${x}")
- echo ${CMD_AUFS}|grep , >/dev/null 2>&1
- if [ "$?" -eq '0' ]
- then
- UID=$(echo ${CMD_AUFS#*,})
- AUFS=$(echo ${CMD_AUFS%,*})
- else
- AUFS=${CMD_AUFS}
- fi
- ;;
+ USE_AUFS_NORMAL=1
+ echo ${x#*=} | grep , &>/dev/null
+
+ if [ "$?" -eq '0' ]
+ then
+ UID=${x#*,}
+ AUFS=${x%,*}
+ else
+ AUFS=${x#*=}
+ fi
+ ;;
aufs.persistent)
USE_AUFS_NORMAL=1
AUFS="detect"
;;
# Allow user to specify the modules location
aufs.modules\=*)
- MODULESD=$(parse_opt "${x}")
+ MODULESD=${x#*=}
;;
unionfs)
if [ ! -x /sbin/unionfs ]
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: fc976d19b7e06465d755ac86559ef4bce82b4656
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:31:13 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=fc976d19
Wording changes, cosmetic crap
---
defaults/initrd.scripts | 21 +++++++++++----------
defaults/linuxrc | 7 ++++---
2 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 17777c9..22769bd 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -334,12 +334,12 @@ setup_aufs() {
CHANGESDEV=${REAL_ROOT}
else
CHANGESDEV=${AUFS}
- good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
+ good_msg "Mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
mount -t auto ${CHANGESDEV} ${CHANGESMNT} &>/dev/null
ret=$?
if [ "${ret}" -ne 0 ]
then
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
unset AUFS
fi
fi
@@ -359,15 +359,15 @@ setup_aufs() {
then
if [ ${nbpass} -eq 0 ]
then
- bad_msg "mounting of changes file failed, Running e2fsck"
+ bad_msg "Mounting of changes file failed, Running e2fsck"
e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
nbpass=$((${nbpass} + 1))
else
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
- bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing"
+ bad_msg "Try to fix it yourself with e2fsck"
break
fi
else
@@ -383,19 +383,20 @@ setup_aufs() {
# empty or we were not able to mount the storage device
if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
then
+ XINO=${MEMORY}
umount ${MEMORY} &>/dev/null
- bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
- bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
- bad_msg "falling back to ramdisk based aufs for safety"
+ bad_msg "Failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
+ bad_msg "Create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
+ bad_msg "Falling back to ramdisk based aufs for safety"
+ good_msg "Mounting ramdisk to $MEMORY for aufs support"
mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
else
XINO=${MEMORY}/xino
mkdir -p ${XINO}
mount -t tmpfs tmpfs ${XINO}
fi
else
- good_msg "Mounting ramdisk to $MEMORY for aufs support..."
+ good_msg "Mounting ramdisk to $MEMORY for aufs support"
mount -t tmpfs tmpfs ${MEMORY}
XINO=${MEMORY}
fi
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 894ec45..009b4c4 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -758,9 +758,10 @@ then
do_rundebugshell
}
else
- good_msg 'Mounting squashfs & aufs filesystems'
+ good_msg 'Mounting squashfs filesystem'
+
setup_squashfs_aufs
- test_success 'Mount filesystem'
+ test_success 'Mount aufs filesystem'
fi
FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'gcloop' ]
@@ -1027,7 +1028,7 @@ then
str="${str} ${i}"
done
warn_msg "${str}are mounted in ram"
- warn_msg "consider saving important files elsewhere..."
+ warn_msg "consider saving important files elsewhere"
read -t 3 UNUSEDVAL
for i in ${CDROOT_PATH} ${overlay} ${static}; do
mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 76f73d0380d01c4b2ee3474e0c09bb32c09f2211
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 01:03:37 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Jun 23 23:11:14 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=76f73d03
Cleanup dd output from changes file creation
---
defaults/initrd.scripts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index aded9ad..c5764f3 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -280,7 +280,7 @@ create_changefs() {
then
bad_msg "Please give a size of at least 16 Mb"
else
- dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size}
+ dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size} &>/dev/null
if [ $? = '0' ]
then
good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 9c70e584e246785beabdbcff5407c9f1ac388ff6
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:57:13 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=9c70e584
coding style changes
---
defaults/linuxrc | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 281de8e..42749d6 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -1014,26 +1014,34 @@ verbose_kmsg
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
- mkdir -p /${CHROOT}/.unions/memory
- mount -o move /memory /${CHROOT}/.unions/memory
+ UNION_MEMORY=${CHROOT}/.unions/memory
+
+ mkdir -p "${UNION_MEMORY}"
+ mount --move "${MEMORY}" "${UNION_MEMORY}"
test_success "Failed to move aufs /memory into the system root"
- for i in mnt/gentoo mnt/livecd /mnt/overlay ${CDROOT_PATH}
+
+ for i in /mnt/gentoo /mnt/livecd /mnt/overlay ${CDROOT_PATH}
do
- mkdir -p ${CHROOT}/$i
- chmod 755 ${CHROOT}/$i
+ mkdir -p "${CHROOT}${i}"
+ chmod 755 "${CHROOT}${i}"
done
+
# This will prevent from putting junk on the CHANGESDEV
str=""
- for i in tmp var/tmp usr/portage/distfiles
+ for i in /tmp /var/tmp /usr/portage/distfiles
do
- mkdir -p ${CHROOT}/$i
- chmod 755 ${CHROOT}/$i
- mount -t tmpfs tmpfs ${CHROOT}/$i
- str="${str} ${i}"
+ mkdir -p "${CHROOT}${i}"
+ chmod 755 "${CHROOT}${i}"
+
+ mount -t tmpfs tmpfs "${CHROOT}${i}"
+ str="${i} ${str}"
done
+
warn_msg "${str}are mounted in ram"
warn_msg "consider saving important files elsewhere"
- read -t 3 UNUSEDVAL
+
+ sleep 2
+
for i in ${CDROOT_PATH} ${overlay} ${static}; do
mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
done
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 09dbf42096df79e6c0d9ba61972122f9ea0fbaca
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:02:30 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=09dbf420
Restructure the setup_aufs function, it had redundant code and moved
the call to it further down the pipe.
---
defaults/initrd.scripts | 181 +++++++++++++++++++++++-------------------------
defaults/linuxrc | 2 +-
2 files changed, 89 insertions(+), 94 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index c5764f3..2fdfb4b 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -302,115 +302,110 @@ create_changefs() {
}
setup_aufs() {
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
+ # 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
- # 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
+ 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
+ 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}" ]
+ bootstrapCD
+ if [ -n "${AUFS}" ]
+ then
+ if [ "${AUFS}" = "detect" ]
then
- if [ "${AUFS}" = "detect" ]
+ CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
+ CHANGESDEV=${REAL_ROOT}
+ else
+ CHANGESDEV=${AUFS}
+ good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
+ mount -t auto ${CHANGESDEV} ${CHANGESMNT}
+ ret=$?
+ if [ "${ret}" -ne 0 ]
then
- CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
- CHANGESDEV=${REAL_ROOT}
- else
- CHANGESDEV=${AUFS}
- good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
- mount -t auto ${CHANGESDEV} ${CHANGESMNT}
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ unset AUFS
+ fi
+ fi
+ # Check and attempt to create the changesfile
+ if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
+ then
+ create_changefs
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
+ elif [ -n "${AUFS}" ]
+ then
+ local nbpass=0
+ while [ 1 ]
+ do
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
ret=$?
if [ "${ret}" -ne 0 ]
then
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
- unset AUFS
- fi
- fi
- # Check and attempt to create the changesfile
- if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
- then
- create_changefs
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- elif [ -n "${AUFS}" ]
- then
- local nbpass=0
- while [ 1 ]
- do
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- ret=$?
- if [ "${ret}" -ne 0 ]
+ if [ ${nbpass} -eq 0 ]
then
- if [ ${nbpass} -eq 0 ]
- then
- bad_msg "mounting of changes file failed, Running e2fsck"
- e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
- nbpass=$((${nbpass} + 1))
- else
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
- bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
- bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
- mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
- bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing"
- break
- fi
+ bad_msg "mounting of changes file failed, Running e2fsck"
+ e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
+ nbpass=$((${nbpass} + 1))
else
- if [ ${nbpass} -eq 1 ]
- then
- good_msg "e2fsck ran successfully. Please check your files after bootup"
- fi
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
+ bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
+ mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
+ bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing"
break
fi
- done
- fi
- # mount tmpfs only in the case when changes= boot parameter was
- # empty or we were not able to mount the storage device
- if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
- then
- umount ${MEMORY}
- bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
- bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
- bad_msg "falling back to ramdisk based aufs for safety"
- mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
- else
- XINO=${MEMORY}/xino
- mkdir -p ${XINO}
- mount -t tmpfs tmpfs ${XINO}
- fi
- else
- good_msg "Mounting ramdisk to $MEMORY for aufs support..."
- mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
+ else
+ if [ ${nbpass} -eq 1 ]
+ then
+ good_msg "e2fsck ran successfully. Please check your files after bootup"
+ fi
+ break
+ fi
+ done
fi
-
- mkdir -p ${CHANGES}
- mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
- ret=$?
- if [ "${ret}" -ne 0 ]
+ # mount tmpfs only in the case when changes= boot parameter was
+ # empty or we were not able to mount the storage device
+ if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
then
- bad_msg "Can't setup union ${UNION} in directory!"
- USE_AUFS_NORMAL=0
+ umount ${MEMORY}
+ bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
+ bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
+ bad_msg "falling back to ramdisk based aufs for safety"
+ mount -t tmpfs tmpfs ${MEMORY}
+ XINO=${MEMORY}
+ else
+ XINO=${MEMORY}/xino
+ mkdir -p ${XINO}
+ mount -t tmpfs tmpfs ${XINO}
fi
else
+ good_msg "Mounting ramdisk to $MEMORY for aufs support..."
+ mount -t tmpfs tmpfs ${MEMORY}
+ XINO=${MEMORY}
+ fi
+
+ mkdir -p ${CHANGES}
+ mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
+ ret=$?
+ if [ "${ret}" -ne 0 ]
+ then
+ bad_msg "Can't setup union ${UNION} in directory!"
USE_AUFS_NORMAL=0
fi
}
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 5d4d2a1..894ec45 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -457,9 +457,9 @@ rundebugshell "before setting up the root filesystem"
if [ "${CDROOT}" = '1' ]
then
- setup_aufs
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
+ setup_aufs
CHROOT=${UNION}
else
CHROOT=${NEW_ROOT}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 28b5ded8443847cf7f6fb877f54ecc887299e8fa
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 00:51:08 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Jun 23 23:11:14 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=28b5ded8
Enhanced the shutdown process and changed from using ${UNION} to ${CHROOT} to
better understand the logic behind things as CHROOT is set to ${UNION} anyways.
RC_NO_UMOUNTS is more dynamic now and should scale up.
---
defaults/initrd.defaults | 1 +
defaults/linuxrc | 45 +++++++++++++++++++++++++++++++--------------
2 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 5245959..1f28883 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -58,6 +58,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
+RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 0a91c58..5d4d2a1 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -805,24 +805,38 @@ then
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
- union_insert_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION}
+ union_insert_dir ${CHROOT} ${NEW_ROOT}/${FS_LOCATION}
# Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
# 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
+ #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
+ RC_MOUNTS=$(grep 'RC_NO_UMOUNTS' "${CHROOT}"/etc/rc.conf)
+ RESULTS=false
+
+ # Iterate through ${RC_MOUNTS} to find our duplicate(s) and or remove obsolete lines when ever
+ # our RC_NO_UMOUNTS variable changes.
+ printf '%s\n' ${RC_MOUNTS} | while read -r mount; do
+ if [[ "${mount}" = "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"" ]]; then
+ RESULTS=true
+ else
+ # Escape characters in ${mounts} for use in sed
+ mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
+
+ # Remove non matching pattern
+ sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
+ fi
+ done
+
+ if ! ${RESULTS}; then
+ echo 'RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"'>> "${CHROOT}"/etc/rc.conf
+ fi
# Fstab change for aufs
- test ! $(grep aufs "${UNION}"/etc/fstab) &&
- echo "aufs / aufs defaults 0 0" > "${UNION}"/etc/fstab
+ test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
+ echo "aufs / aufs defaults 0 0" > "${CHROOT}"/etc/fstab
warn_msg "Adding all modules in $MODULESD/modules/"
if [ -z "${MODULESD}" ]
@@ -834,9 +848,12 @@ memory|/.unions/memory/xino"' "${UNION}"/etc/rc.conf) &&
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
+ # Create the directories for our new union mounts
+ test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
+
+ if ${AUFS_CHANGES} && [ ! -d "${CHROOT}${NEW_ROOT}/mnt/changesdev" ]; then
+ mkdir -p "${CHROOT}${NEW_ROOT}/mnt/changesdev"
+ fi
fi
# Unpacking additional packages from NFS mount
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: fb87499d4a6ac506c9bb5af2f51461c860a05111
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:06:42 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=fb87499d
Output cleaning
---
defaults/initrd.scripts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 2fdfb4b..17777c9 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -335,7 +335,7 @@ setup_aufs() {
else
CHANGESDEV=${AUFS}
good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
- mount -t auto ${CHANGESDEV} ${CHANGESMNT}
+ mount -t auto ${CHANGESDEV} ${CHANGESMNT} &>/dev/null
ret=$?
if [ "${ret}" -ne 0 ]
then
@@ -383,7 +383,7 @@ setup_aufs() {
# empty or we were not able to mount the storage device
if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
then
- umount ${MEMORY}
+ umount ${MEMORY} &>/dev/null
bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
bad_msg "falling back to ramdisk based aufs for safety"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 9385ede320e2b9cb6f6c86fa934516a03cf2ac37
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu May 29 02:40:18 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Jun 23 23:11:14 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=9385ede3
This fixes /etc/fstab from not working while in setup_aufs function and instead
includes it in the union path.
---
defaults/initrd.scripts | 1 -
defaults/linuxrc | 4 ++++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index dd3af37..bf4124f 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -1380,7 +1380,6 @@ setup_squashfs_aufs() {
[ ! -d "${NEW_ROOT}${overlay}" ] && mkdir -p "${NEW_ROOT}${overlay}"
[ ! -d "${NEW_ROOT}${static}" ] && mkdir -p "${NEW_ROOT}${static}"
- echo "aufs / aufs defaults 0 0" > "${NEW_ROOT}"/etc/fstab
for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done
# have handy /mnt/cdrom (CDROOT_PATH) as well
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 6d942a1..d5b424c 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -820,6 +820,10 @@ memory|/.unions/memory/xino"' "${UNION}"/etc/rc.conf) &&
"/newroot/mnt/changesdev|/mnt/livecd|/mnt/cdrom|"\
"/.unions/memory|/.unions/memory/xino\"">> "${UNION}"/etc/rc.conf
+ # Fstab change for aufs
+ test ! $(grep aufs "${UNION}"/etc/fstab) &&
+ echo "aufs / aufs defaults 0 0" > "${UNION}"/etc/fstab
+
warn_msg "Adding all modules in $MODULESD/modules/"
if [ -z "${MODULESD}" ]
then
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 854a835ede60717a9b4ac847b5e3e56877c35338
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu May 29 08:15:13 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Jun 23 23:11:14 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=854a835e
Removing --bind on some directories to prevent ${NEW_ROOT} path
from existing in favor of --move.
Got rid of the no longer required subshell call for aufs ${NEW_ROOT}
overlay.
---
defaults/initrd.scripts | 11 ++---------
defaults/linuxrc | 7 ++++---
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index bf4124f..aded9ad 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -1363,10 +1363,9 @@ getdvhoff() {
}
setup_squashfs_aufs() {
- (
# Setup aufs directories and vars
- local overlay=/mnt/overlay
- local static=/mnt/livecd
+ overlay=/mnt/overlay
+ static=/mnt/livecd
for i in "${overlay}" "${static}"; do
[ ! -d "${i}" ] && mkdir -p "${i}"
@@ -1381,12 +1380,6 @@ setup_squashfs_aufs() {
[ ! -d "${NEW_ROOT}${overlay}" ] && mkdir -p "${NEW_ROOT}${overlay}"
[ ! -d "${NEW_ROOT}${static}" ] && mkdir -p "${NEW_ROOT}${static}"
for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done
-
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- local new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${new_cdroot}" ] && mkdir -p "${new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${new_cdroot}"
- )
}
setup_unionfs() {
diff --git a/defaults/linuxrc b/defaults/linuxrc
index d5b424c..0a91c58 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -995,7 +995,7 @@ then
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}
+ for i in mnt/gentoo mnt/livecd /mnt/overlay ${CDROOT_PATH}
do
mkdir -p ${CHROOT}/$i
chmod 755 ${CHROOT}/$i
@@ -1012,8 +1012,9 @@ then
warn_msg "${str}are mounted in ram"
warn_msg "consider saving important files elsewhere..."
read -t 3 UNUSEDVAL
- mount --bind ${NEW_ROOT}${CDROOT_PATH} ${CHROOT}${CDROOT_PATH}
- mount --bind ${NEW_ROOT}/mnt/livecd ${CHROOT}/mnt/livecd
+ for i in ${CDROOT_PATH} ${overlay} ${static}; do
+ mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
+ done
fi
good_msg "Booting (initramfs)"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 4de1a998da8b1d67a28c878085d6a7441566b95c
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:46:09 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=4de1a998
Better handle on if aufs.modules kernel parameter is used
---
defaults/initrd.defaults | 1 +
defaults/linuxrc | 22 +++++++++++++---------
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 1f28883..1e1a539 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -68,6 +68,7 @@ CDROOT_PATH='/mnt/cdrom'
CDROOT_MARKER='/livecd'
# AUFS variables
+AUFS_MODULES=false
AUFS_CHANGES=false
AUFS_CHANGESFILE=livecd.aufs
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 009b4c4..281de8e 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -284,6 +284,7 @@ do
# Allow user to specify the modules location
aufs.modules\=*)
MODULESD=${x#*=}
+ AUFS_MODULES=true
;;
unionfs)
if [ ! -x /sbin/unionfs ]
@@ -839,15 +840,18 @@ then
test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
echo "aufs / aufs defaults 0 0" > "${CHROOT}"/etc/fstab
- warn_msg "Adding all modules in $MODULESD/modules/"
- if [ -z "${MODULESD}" ]
- then
- union_insert_modules ${CDROOT_PATH}
- else
- mkdir ${NEW_ROOT}/mnt/modulesd
- mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
- union_insert_modules ${NEW_ROOT}/mnt/modulesd
- fi
+ if ${AUFS_MODULES}; then
+ warn_msg "Adding all modules in $MODULESD/modules/"
+
+ if [ -z "${MODULESD}" ]
+ then
+ union_insert_modules ${CDROOT_PATH}
+ else
+ mkdir ${NEW_ROOT}/mnt/modulesd
+ mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
+ union_insert_modules ${NEW_ROOT}/mnt/modulesd
+ fi
+ fi
# Create the directories for our new union mounts
test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 1ebd03691dd96f3fe952ada0ecf301e9f731cfa5
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu May 29 01:55:05 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Jun 23 23:11:14 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=1ebd0369
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.
---
defaults/initrd.defaults | 3 +++
defaults/initrd.scripts | 1 +
defaults/linuxrc | 20 +++++++++++++++++---
3 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 3d6fe7e..5245959 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 e81e5f2..dd3af37 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
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 6351547bada320d82a8e5c09450d8a4783e948df
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Jun 2 15:19:23 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=6351547b
This improves the way we handle RC_NO_UMOUNT variable in openrc so that
future changes can scale and fixes previous bugs which didn't actually
remove duplicates.
---
defaults/linuxrc | 43 +++++++++++++++++++++++++++++--------------
1 file changed, 29 insertions(+), 14 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 42749d6..86b1954 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -816,24 +816,39 @@ then
# RC_NO_UMOUNTS variable for a clean shutdown/reboot
RC_MOUNTS=$(grep 'RC_NO_UMOUNTS' "${CHROOT}"/etc/rc.conf)
- RESULTS=false
# Iterate through ${RC_MOUNTS} to find our duplicate(s) and or remove obsolete lines when ever
# our RC_NO_UMOUNTS variable changes.
- printf '%s\n' ${RC_MOUNTS} | while read -r mount; do
- if [[ "${mount}" = "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"" ]]; then
- RESULTS=true
- else
- # Escape characters in ${mounts} for use in sed
- mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
-
- # Remove non matching pattern
- sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
- fi
- done
+ if [ -n "${RC_MOUNTS}" ]; then
+ printf '%s\n' ${RC_MOUNTS} |
+ {
+ while read -r mount; do
+ # Remove double quotes from ${mount}
+ new_mount=$(echo ${mount} | sed 's/"//g')
+
+ if [[ "${new_mount}" = "RC_NO_UMOUNTS="${RC_NO_UMOUNTS}"" ]]; then
+ RESULTS=false
+ else
+ # Escape characters in ${mounts} for use in sed
+ mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
+
+ # Remove non matching pattern
+ sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
+
+ RESULTS=true
+ fi
+ done
+
+ # no RC_NO_UMOUNTS match found
+ if ${RESULTS}; then return 1;fi
+ }
+ else
+ echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
+ fi
- if ! ${RESULTS}; then
- echo 'RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"'>> "${CHROOT}"/etc/rc.conf
+ # An RC_NO_UMOUNTS was not found that matches our current one
+ if [ $? -eq 1 ]; then
+ echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
fi
# Fstab change for aufs
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 993de46b0cc64c9dfca9fd2c56544b5c0b7b8325
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Tue Jun 3 00:46:43 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=993de46b
dokeymap implementation for AUFS's union
---
defaults/linuxrc | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 86b1954..da88bf0 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -868,6 +868,12 @@ then
fi
fi
+ # Copy user keymap file
+ if [ -e /etc/sysconfig/keyboard ]; then
+ [ ! -d ${CHROOT}/etc/sysconfig ] && mkdir -p ${CHROOT}/etc/sysconfig
+ cp /etc/sysconfig/keyboard ${CHROOT}/etc/sysconfig/
+ fi
+
# Create the directories for our new union mounts
test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: f2e48df4ad02697915037dfbe5fe81411c1750fe
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Tue Jun 3 17:48:14 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=f2e48df4
Better implementation which was originally done in 946918e & 7a38d63.
---
defaults/initrd.scripts | 36 ++++++++++++++++++++++++++++++++++++
defaults/linuxrc | 38 ++------------------------------------
2 files changed, 38 insertions(+), 36 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 07890ec..52b18b3 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -310,6 +310,42 @@ union_insert_modules() {
done
}
+# Implements RC_NO_UMOUNTS variable into ${CHROOT}/etc/rc.conf for a cleaner shutdown process
+# This should really go into /etc/init.d/localmounts but until then we manually set this here
+conf_rc_no_umounts() {
+ local conf nomount fnd
+ conf="${CHROOT}/etc/rc.conf"
+ fnd=0
+
+ if nomount=$(grep -n '^[[:blank:]]*RC_NO_UMOUNTS=' $conf); then
+ local i n data cmd IFS
+ IFS='
+'
+ set -- $nomount
+ unset IFS
+
+ for i; do
+ n=${i%%:*}; i=${i#"$n"}
+ data=${i#*=}
+
+ case $data in
+ "\"$RC_NO_UMOUNTS\""|"'$RC_NO_UMOUNTS'") fnd=1;;
+ *) cmd="$cmd$n d;"
+ esac
+ done
+
+ if [ -n "$cmd" ]; then
+ sed -i "${cmd%;}" $conf
+ test_success "Unable to edit rc.conf"
+ fi
+ fi
+
+ if [ 0 -eq "$fnd" ]; then
+ printf 'RC_NO_UMOUNTS="%s"\n' "$RC_NO_UMOUNTS" >> $conf
+ test_success "Unable to write to rc.conf"
+ fi
+}
+
# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
create_changefs() {
local size
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 0e40d16..a6c4806 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -791,42 +791,8 @@ then
#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
- RC_MOUNTS=$(grep 'RC_NO_UMOUNTS' "${CHROOT}"/etc/rc.conf)
-
- # Iterate through ${RC_MOUNTS} to find our duplicate(s) and or remove obsolete lines when ever
- # our RC_NO_UMOUNTS variable changes.
- if [ -n "${RC_MOUNTS}" ]; then
- printf '%s\n' ${RC_MOUNTS} |
- {
- while read -r mount; do
- # Remove double quotes from ${mount}
- new_mount=$(echo ${mount} | sed 's/"//g')
-
- if [[ "${new_mount}" = "RC_NO_UMOUNTS="${RC_NO_UMOUNTS}"" ]]; then
- RESULTS=false
- else
- # Escape characters in ${mounts} for use in sed
- mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
-
- # Remove non matching pattern
- sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
-
- RESULTS=true
- fi
- done
-
- # no RC_NO_UMOUNTS match found
- if ${RESULTS}; then return 1;fi
- }
- else
- echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
- fi
-
- # An RC_NO_UMOUNTS was not found that matches our current one
- if [ $? -eq 1 ]; then
- echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
- fi
+ # Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
+ conf_rc_no_umounts
# Fstab change for aufs
test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: ed0deb0399d5bfe92decb7742da098b71724e0a8
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Tue Jun 24 22:36:40 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Tue Jun 24 22:36:40 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=ed0deb03
Reverting back old mknod permission settings for netboot compatibility
---
defaults/initrd.scripts | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 26ed173..d87bb4e 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -205,10 +205,10 @@ bootstrapFS() {
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
+ [ ! -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
# For SGI LiveCDs
if [ "${LOOPTYPE}" = "sgimips" ]; then
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 5d4766cd1b811a525f5b624fc1e8daf1207acac0
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Jun 23 17:58:33 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=5d4766cd
Coding style changes throughout all the AUFS related code.
---
defaults/initrd.defaults | 4 +-
defaults/initrd.scripts | 179 ++++++++++++++++++-------------------
defaults/linuxrc | 227 +++++++++++++++++++++--------------------------
3 files changed, 188 insertions(+), 222 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index d0efa28..67b0d28 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -58,7 +58,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
-RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
+RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/rw_branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
@@ -71,7 +71,7 @@ CDROOT_MARKER='/livecd'
USE_AUFS_NORMAL=0
AUFS_MODULES=false
AUFS_CHANGES=false
-AUFS_CHANGESFILE=livecd.aufs
+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 52b18b3..5ca1203 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -314,8 +314,7 @@ union_insert_modules() {
# This should really go into /etc/init.d/localmounts but until then we manually set this here
conf_rc_no_umounts() {
local conf nomount fnd
- conf="${CHROOT}/etc/rc.conf"
- fnd=0
+ conf=$CHROOT/etc/rc.conf fnd=0
if nomount=$(grep -n '^[[:blank:]]*RC_NO_UMOUNTS=' $conf); then
local i n data cmd IFS
@@ -350,33 +349,28 @@ conf_rc_no_umounts() {
create_changefs() {
local size
- while [ 1 ]
- do
+ while :; do
read -p '<< Size of file (Press Enter for default 256 Mb): ' size
- if [ -z "${size}" ]; then
- size=256
- fi
- size="${size}"
- if [ ${size} -lt 16 ]
- then
- bad_msg "Please give a size of at least 16 Mb"
+ [ -n "$size" ] || size=256
+
+ size=$size
+
+ if [ 15 -ge "$size" ]; then
+ bad_msg "Please give a size of at least 16 Megabytes"
else
- dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size} &>/dev/null
- if [ $? = '0' ]
- then
- good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
- mke2fs -F ${CHANGESMNT}/${AUFS_CHANGESFILE} &>/dev/null
+ if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" bs=1M count="$size" &>/dev/null; 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}
- bad_msg "Unable to create ${AUFS_CHANGESFILE} on ${CHANGESDEV} of ${size} Mb"
+ rm -f "$CHANGESMNT$AUFS_CHANGESFILE"
+ bad_msg "Unable to create ${AUFS_CHANGESFILE#*/} on $CHANGESDEV of ${size}Mb"
bad_msg "Ensure your disk is not full or read-only"
+
read -p '<< Type "a" to abort, anything else to continue : ' doabort
- if [ "${doabort}" = "a" ]; then
- return 1
- fi
+ if [ a = "$doabort" ]; then return 1; fi
fi
fi
done
@@ -386,87 +380,80 @@ create_changefs() {
setup_aufs() {
bootstrapCD
- if [ -n "${AUFS}" ]
- then
- if [ "${AUFS}" = "detect" ]
- then
- CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
- CHANGESDEV=${REAL_ROOT}
+ if [ -n "$AUFS" ]; then
+ if [ detect = "$AUFS" ]; then
+ CHANGESMNT=$NEW_ROOT$CDROOT_PATH
+ CHANGESDEV=$REAL_ROOT
else
- CHANGESDEV=${AUFS}
- good_msg "Mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
- mount -t auto ${CHANGESDEV} ${CHANGESMNT} &>/dev/null
- ret=$?
- if [ "${ret}" -ne 0 ]
- then
- bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ CHANGESDEV=$AUFS
+ good_msg "Mounting $CHANGESDEV to $MEMORY for aufs support"
+
+ if ! mount -t auto "$CHANGESDEV" "$CHANGESMNT" &>/dev/null; then
+ bad_msg "Mount of $CHANGESDEV failed, falling back to ramdisk based aufs"
unset AUFS
fi
fi
+
# Check and attempt to create the changesfile
- if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
- then
+ if [ ! -e $CHANGESMNT$AUFS_CHANGESFILE ] && [ -n "$AUFS" ]; then
create_changefs
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- elif [ -n "${AUFS}" ]
- then
- local nbpass=0
- while [ 1 ]
- do
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- ret=$?
- if [ "${ret}" -ne 0 ]
- then
- if [ ${nbpass} -eq 0 ]
- then
- bad_msg "Mounting of changes file failed, Running e2fsck"
- e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
- nbpass=$((${nbpass} + 1))
- else
- bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
- bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
- bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
- mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
- bad_msg "Try to fix it yourself with e2fsck"
+ mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY"
+ elif [ -n "$AUFS" ]; then
+ while :; do
+ if mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY" &>/dev/null; then
+ break
+ else
+ bad_msg "Mounting of changes file failed, Running e2fsck"
+
+ if ! hash e2fsck &>/dev/null; then
+ bad_msg "/sbin/e2fsck not found! aborting filesystem check"
+ bad_msg "Moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+
+ mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
+ break
+
+ fi
+
+ if e2fsck "$CHANGESMNT$AUFS_CHANGESFILE" &>/dev/null; then
+ good_msg "e2fsck ran successfully. Please verify data after bootup"
+ else
+ bad_msg "Your ${AUFS_CHANGESFILE#*/} image might be corrupted"
+ bad_msg "moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+
+ mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
break
fi
- else
- if [ ${nbpass} -eq 1 ]
- then
- good_msg "e2fsck ran successfully. Please check your files after bootup"
- fi
- break
fi
done
fi
# mount tmpfs only in the case when changes= boot parameter was
# empty or we were not able to mount the storage device
- if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
- then
- XINO=${MEMORY}
- umount ${MEMORY} &>/dev/null
- bad_msg "Failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
- bad_msg "Create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
- bad_msg "Falling back to ramdisk based aufs for safety"
+ if [ 1 = "$CDROOT" ] && [ ! -f "$CHANGESMNT$AUFS_CHANGESFILE" ]; then
+ XINO=$MEMORY
+ umount "$MEMORY" &>/dev/null
+
+ bad_msg "Create an extfs ${AUFS_CHANGESFILE#*/} file on this device"
+ bad_msg "if you wish to have aufs data persistency on reboots"
+ bad_msg "Falling back to ramdisk based aufs"
good_msg "Mounting ramdisk to $MEMORY for aufs support"
- mount -t tmpfs tmpfs ${MEMORY}
+
+ mount -t tmpfs tmpfs "$MEMORY"
else
- XINO=${MEMORY}/xino
- mkdir -p ${XINO}
- mount -t tmpfs tmpfs ${XINO}
+ XINO=$MEMORY/xino
+
+ mkdir -p "$XINO"
+ mount -t tmpfs aufs-xino "$XINO"
fi
else
- good_msg "Mounting ramdisk to $MEMORY for aufs support"
- mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
+ XINO=$MEMORY
+
+ good_msg "Mounting ramdisk to $MEMORY for aufs support"
+ mount -t tmpfs tmpfs "$MEMORY"
fi
- mkdir -p ${CHANGES}
- mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
- ret=$?
- if [ "${ret}" -ne 0 ]
- then
- bad_msg "Can't setup union ${UNION} in directory!"
+ mkdir -p "$CHANGES"
+ if ! mount -t aufs -n -o "nowarn_perm,udba=none,xino=$XINO/.aufs.xino,br:$CHANGES=rw" aufs "$UNION"; then
+ bad_msg "Can't setup union $UNION in directory!"
USE_AUFS_NORMAL=0
fi
}
@@ -1420,22 +1407,24 @@ getdvhoff() {
setup_squashfs_aufs() {
# Setup aufs directories and vars
- overlay=/mnt/overlay
- static=/mnt/livecd
+ rw_branch=/mnt/rw_branch ro_branch=/mnt/livecd
- for i in "${overlay}" "${static}"; do
- [ ! -d "${i}" ] && mkdir -p "${i}"
+ for dir in $rw_branch $ro_branch; do
+ [ ! -d $dir ] && mkdir -p "$dir"
done
- good_msg "Loading aufs"
- modprobe aufs > /dev/null 2>&1
- mount -t squashfs -o loop,ro "${CDROOT_PATH}/${LOOPEXT}${LOOP}" "${static}"
- mount -t tmpfs none "${overlay}"
- mount -t aufs -o br:${overlay}:${static} aufs "${NEW_ROOT}"
+ good_msg "Loading aufs module ..."
+ modprobe aufs &>/dev/null
- [ ! -d "${NEW_ROOT}${overlay}" ] && mkdir -p "${NEW_ROOT}${overlay}"
- [ ! -d "${NEW_ROOT}${static}" ] && mkdir -p "${NEW_ROOT}${static}"
- for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done
+ mount -t squashfs -o loop,ro "$CDROOT_PATH/$LOOPEXT$LOOP" "$ro_branch"
+ mount -t tmpfs none "$rw_branch"
+ mount -t aufs -o "br:$rw_branch:$ro_branch" aufs "$NEW_ROOT"
+
+ [ ! -d $NEW_ROOT$rw_branch ] && mkdir -p "$NEW_ROOT$rw_branch"
+ [ ! -d $NEW_ROOT$ro_branch ] && mkdir -p "$NEW_ROOT$ro_branch"
+ for mount in $rw_branch $ro_branch; do
+ mount --move "$mount" "$NEW_ROOT$mount"
+ done
}
setup_unionfs() {
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 8b3ff87..5a341af 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -255,31 +255,17 @@ do
;;
aufs\=*)
USE_AUFS_NORMAL=1
- echo ${x#*=} | grep , &>/dev/null
- if [ "$?" -eq '0' ]
- then
+ if echo "${x#*=}" | grep , &>/dev/null; then
UID=${x#*,}
AUFS=${x%,*}
else
AUFS=${x#*=}
fi
;;
- aufs.changes\=*)
- USE_AUFS_NORMAL=1
- echo ${x#*=} | grep , &>/dev/null
-
- if [ "$?" -eq '0' ]
- then
- UID=${x#*,}
- AUFS=${x%,*}
- else
- AUFS=${x#*=}
- fi
- ;;
aufs.persistent)
USE_AUFS_NORMAL=1
- AUFS="detect"
+ AUFS=detect
;;
# Allow user to specify the modules location
aufs.modules\=*)
@@ -461,16 +447,14 @@ then
# Setup the root filesystem
bootstrapFS
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
- then
+ if [ 1 = "$USE_AUFS_NORMAL" ]; then
setup_aufs
- CHROOT=${UNION}
+ CHROOT=$UNION
else
CHROOT=${NEW_ROOT}
fi
- if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] && [ "${USE_AUFS_NORMAL}" != '1' ]
- then
+ if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$USE_AUFS_NORMAL" ]; then
bootstrapCD
fi
@@ -502,7 +486,7 @@ then
fi
# Determine root device
-good_msg 'Determining root device...'
+good_msg 'Determining root device ...'
while true
do
while [ "${got_good_root}" != '1' ]
@@ -720,7 +704,7 @@ then
FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'squashfs' ]
then
- if [ "${USE_AUFS_NORMAL}" != '1' ]; then
+ if [ 1 != "$USE_AUFS_NORMAL" ]; then
good_msg 'Mounting squashfs filesystem'
_CACHED_SQUASHFS_PATH="${NEW_ROOT}/mnt/${LOOP}"
_squashfs_path="${CDROOT_PATH}/${LOOPEXT}${LOOP}" # Default to uncached
@@ -782,25 +766,23 @@ then
fi
fi # if [ -n "${CRYPT_ROOT}" ]
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- union_insert_dir ${CHROOT} ${NEW_ROOT}/${FS_LOCATION}
-
- # Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
- # 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
+ if [ 1 = "$USE_AUFS_NORMAL" ]; then
+ union_insert_dir "$CHROOT" "$NEW_ROOT/$FS_LOCATION"
# Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
conf_rc_no_umounts
# Fstab changes for aufs
- if ! grep -q '^aufs' "${CHROOT}"/etc/fstab 2>/dev/null; then
- for i in /var/tmp /tmp /usr/portage/distfiles; do
- [ ! -d "${CHROOT}${i}" ] && mkdir -p "${CHROOT}${i}"
+ if ! grep -q '^aufs' "$CHROOT/etc/fstab" 2>/dev/null; then
+ for dir in /var/tmp /tmp /usr/portage/distfiles; do
+ [ ! -d $CHROOT$dir ] && mkdir -p "$CHROOT$dir"
done
- cat > "${CHROOT}"/etc/fstab << FSTAB
+ cat > "$CHROOT/etc/fstab" << FSTAB
+####################################################
+## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
+## PLEASE EDIT THE FSTAB at /mnt/gentoo/etc/fstab ##
+####################################################
aufs / aufs defaults 0 0
vartmp /var/tmp tmpfs defaults 0 0
tmp /tmp tmpfs defaults 0 0
@@ -808,30 +790,29 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
- if ${AUFS_MODULES}; then
+ if $AUFS_MODULES; then
warn_msg "Adding all modules in $MODULESD/modules/"
- if [ -z "${MODULESD}" ]
- then
- union_insert_modules ${CDROOT_PATH}
+ if [ -z "$MODULESD" ]; then
+ union_insert_modules "$CDROOT_PATH"
else
- mkdir ${NEW_ROOT}/mnt/modulesd
- mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
- union_insert_modules ${NEW_ROOT}/mnt/modulesd
+ mkdir "$NEW_ROOT/mnt/modulesd"
+ mount "$MODULESD" "$NEW_ROOT/mnt/modulesd"
+ union_insert_modules "$NEW_ROOT/mnt/modulesd"
fi
fi
# Copy user keymap file
if [ -e /etc/sysconfig/keyboard ]; then
- [ ! -d ${CHROOT}/etc/sysconfig ] && mkdir -p ${CHROOT}/etc/sysconfig
- cp /etc/sysconfig/keyboard ${CHROOT}/etc/sysconfig/
+ [ ! -d $CHROOT/etc/sysconfig ] && mkdir -p "$CHROOT/etc/sysconfig"
+ cp /etc/sysconfig/keyboard "$CHROOT/etc/sysconfig/"
fi
# Create the directories for our new union mounts
- test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
+ [ ! -d $CHROOT$NEW_ROOT ] && mkdir -p "$CHROOT$NEW_ROOT"
- if ${AUFS_CHANGES} && [ ! -d "${CHROOT}${NEW_ROOT}/mnt/changesdev" ]; then
- mkdir -p "${CHROOT}${NEW_ROOT}/mnt/changesdev"
+ if $AUFS_CHANGES && [ ! -d $CHROOT$NEW_ROOT/mnt/changesdev ]; then
+ mkdir -p "$CHROOT$NEW_ROOT/mnt/changesdev"
fi
fi
@@ -856,67 +837,67 @@ FSTAB
then
setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union
- else
- #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
- if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- good_msg "Copying read-write image contents to tmpfs"
- # Copy over stuff that should be writable
- (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
- bad_msg "Copying failed, dropping into a shell."
- do_rundebugshell
- }
-
- # Now we do the links.
- for x in ${ROOT_LINKS}
- do
- if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
- then
- ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
- else
- # List all subdirectories of x
- find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
- do
- # Strip the prefix of the FS_LOCATION
- directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
-
- # Skip this directory if we already linked a parent directory
- if [ "${current_parent}" != '' ]; then
- var=$(echo "${directory}" | grep "^${current_parent}")
- if [ "${var}" != '' ]; then
- continue
- fi
- fi
- # Test if the directory exists already
- if [ -e "/${NEW_ROOT}/${directory}" ]
- then
- # It does exist, link all the individual files
- for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
- do
- if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
- ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
- fi
- done
- else
- # It does not exist, make a link to the livecd
- ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
- current_parent="${directory}"
- fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
- done # while read directory
- fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
- done # for x in ${ROOT_LINKS}
- mkdir -p initramfs proc tmp run sys 2>/dev/null
- chmod 1777 tmp
-
- fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- #XXX: end extremely confusing hunk
-
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
-
- fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
+ else
+ #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
+ if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
+ then
+ good_msg "Copying read-write image contents to tmpfs"
+ # Copy over stuff that should be writable
+ (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
+ bad_msg "Copying failed, dropping into a shell."
+ do_rundebugshell
+ }
+
+ # Now we do the links.
+ for x in ${ROOT_LINKS}
+ do
+ if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
+ then
+ ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
+ else
+ # List all subdirectories of x
+ find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
+ do
+ # Strip the prefix of the FS_LOCATION
+ directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
+
+ # Skip this directory if we already linked a parent directory
+ if [ "${current_parent}" != '' ]; then
+ var=$(echo "${directory}" | grep "^${current_parent}")
+ if [ "${var}" != '' ]; then
+ continue
+ fi
+ fi
+ # Test if the directory exists already
+ if [ -e "/${NEW_ROOT}/${directory}" ]
+ then
+ # It does exist, link all the individual files
+ for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
+ do
+ if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
+ ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
+ fi
+ done
+ else
+ # It does not exist, make a link to the livecd
+ ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
+ current_parent="${directory}"
+ fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
+ done # while read directory
+ fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
+ done # for x in ${ROOT_LINKS}
+ mkdir -p initramfs proc tmp run sys 2>/dev/null
+ chmod 1777 tmp
+
+ fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
+ #XXX: end extremely confusing hunk
+
+ # have handy /mnt/cdrom (CDROOT_PATH) as well
+ _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
+ [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
+ mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
+
+ fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
#UML=$(cat /proc/cpuinfo|grep UML|sed -e 's|model name.*: ||')
#if [ "${UML}" = 'UML' ]
@@ -928,18 +909,16 @@ FSTAB
# Let Init scripts know that we booted from CD
export CDBOOT
CDBOOT=1
-else # if [ "${CDROOT}" = '1' ]
+else
if [ "${USE_UNIONFS_NORMAL}" = '1' ]
then
mkdir /union_changes
mount -t tmpfs tmpfs /union_changes
setup_unionfs /union_changes ${NEW_ROOT}
mkdir -p ${UNION}/tmp/.initrd
- fi
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- union_insert_dir ${UNION} ${NEW_ROOT}
- mkdir -p ${UNION}/tmp/.initrd
+ elif [ 1 = "$USE_AUFS_NORMAL" ]; then
+ union_insert_dir "$UNION" "$NEW_ROOT"
+ mkdir -p "$UNION/tmp/.initrd"
fi
fi # if [ "${CDROOT}" = '1' ]
@@ -986,22 +965,20 @@ fi
verbose_kmsg
-if [ "${USE_AUFS_NORMAL}" -eq '1' ]
-then
- UNION_MEMORY=${CHROOT}/.unions/memory
+if [ 1 = "$USE_AUFS_NORMAL" ]; then
+ UNION_MEMORY=$CHROOT/.unions/memory
- mkdir -p "${UNION_MEMORY}"
- mount --move "${MEMORY}" "${UNION_MEMORY}"
+ mkdir -p "$UNION_MEMORY"
+ mount --move "$MEMORY" "$UNION_MEMORY"
test_success "Failed to move aufs /memory into the system root"
- for i in /mnt/gentoo /mnt/livecd /mnt/overlay ${CDROOT_PATH}
- do
- mkdir -p "${CHROOT}${i}"
- chmod 755 "${CHROOT}${i}"
+ for dir in /mnt/gentoo $rw_branch $ro_branch $CDROOT_PATH; do
+ mkdir -p "$CHROOT$dir"
+ chmod 755 "$CHROOT$dir"
done
- for i in ${CDROOT_PATH} ${overlay} ${static}; do
- mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
+ for dir in $CDROOT_PATH $rw_branch $ro_branch; do
+ mount --move "$NEW_ROOT$dir" "$CHROOT$dir"
done
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 0e4c288f2435fca36705a6ea95f48edccefc6e26
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Jun 23 20:03:36 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=0e4c288f
Introduced a new funtion to test for numeric values that that our changes_fs doesn't fail
when non-numeric values are given, also the styling of changes_fs was changed to
reflect new logic.
---
defaults/initrd.scripts | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 5ca1203..26ed173 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -345,6 +345,18 @@ conf_rc_no_umounts() {
fi
}
+# is_int "$A" ["$B"..]
+# NOTE we consider a leading 0 false as it would be interpreted as octal
+is_int(){
+ local i
+ for i; do
+ case $i in
+ ''|*[!0-9]*|0?*) return 1 ;;
+ *) :
+ esac
+ done
+}
+
# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
create_changefs() {
local size
@@ -352,11 +364,12 @@ create_changefs() {
while :; do
read -p '<< Size of file (Press Enter for default 256 Mb): ' size
- [ -n "$size" ] || size=256
-
- size=$size
+ size=${size:-256}
- if [ 15 -ge "$size" ]; then
+ if ! is_int $size; then
+ bad_msg "Non numeric value given for size, try again"
+ continue
+ elif [ 15 -ge "$size" ]; then
bad_msg "Please give a size of at least 16 Megabytes"
else
if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" bs=1M count="$size" &>/dev/null; then
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: c7ae28126edd1fcf2144e93a6c73f7b07bd79c48
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Wed Jun 25 16:12:11 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu Jun 26 14:03:37 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=c7ae2812
More coding style changes to two of the union_* functions. LC_COLLATE=C
is introduced to allow globbing since we never want to parse ls.
Introduced a helper function for union_insert_modules as well.
---
defaults/initrd.defaults | 2 ++
defaults/initrd.scripts | 44 +++++++++++++++++++++++++++++---------------
2 files changed, 31 insertions(+), 15 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 67b0d28..93a40dd 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -12,6 +12,8 @@ BAD="\033[31;1m"
BOLD="\033[1m"
GOOD="\033[32;1m"
+# Sets the default collation order
+LC_COLLATE=C
# From KNOPPIX LINUXRC
# Reset fb color mode
RESET="^[]R"
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index d87bb4e..3411c18 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -287,27 +287,41 @@ mount_sysfs() {
#
union_insert_dir() {
# Always mount it over the precedent (add:1:)
- mount -n -o remount,add:1:${2}=rr aufs ${1}
- if [ $? = '0' ]
- then
- good_msg "Addition of ${2} to ${1} successful"
+ if mount -n -o "remount,add:1:$2=rr" aufs "$1"; then
+ good_msg "Addition of $2 to $1 successful"
fi
}
# Insert all modules found in $1, usually ${CDROOT_PATH}
# added to allow users to add their own apps.
union_insert_modules() {
- for module in $(ls ${NEW_ROOT}/${1}/modules/*.mo 2>/dev/null| sort)
- do
- mkdir -p ${MEMORY}/modules/$(basename ${module} .mo)
- union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .mo)
- done
- for module in $(ls ${NEW_ROOT}/${1}/modules/*.lzm 2>/dev/null| sort)
- do
- mkdir -p ${MEMORY}/modules/$(basename ${module} .lzm)
- mount -o loop,ro ${module} ${MEMORY}/modules/$(basename ${module} .lzm)
- union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .lzm)
- done
+ local module
+
+ for module in "$NEW_ROOT/$1/modules/"*.mo; do
+ union_mod "$module" || bad_msg "Unable to load module: '$module'"
+ done
+
+ for module in "$NEW_ROOT/$1/modules/"*.lzm; do
+ union_mod "$module" lzm || bad_msg "Unable to load module: '$module'"
+ done
+}
+
+# Helper function for union_insert_modules()
+union_mod() {
+ [ -e "$1" ] || return 0
+
+ local mod
+
+ mod=${1##*/}
+ mod=${mod%.*}
+
+ mkdir -p "$MEMORY/modules/$mod" || return
+
+ if [ lzm = "$2" ]; then
+ mount -o loop,ro "$1" "$MEMORY/modules/$mod"
+ fi
+
+ union_insert_dir "$UNION" "$MEMORY/modules/$mod"
}
# Implements RC_NO_UMOUNTS variable into ${CHROOT}/etc/rc.conf for a cleaner shutdown process
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 2ee2cc3de904200d4e80fa61ef657a5717ab06f5
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Wed Jun 25 16:12:11 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Sun Jun 29 21:07:22 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=2ee2cc3d
This is commit contains several changes summarized below.
1. Changed renaming of RC_NO_UMOUNTS directories
2. Upper to lowercase variables because this is the year 2014
3. Renamed aufs related variables for better readability
4. Fixed a typo in mke2fs command which was missing an "&"
5. Cleaned up setup_squashfs_aufs() function
6. Fixed an issue with legacy squashfs implementation which caused
/mnt/cdrom to be shown twice in 'mount' and removed the --bind and
replaced this with --move
7. Restructured the union_* functions so that we don't parse 'ls'
and enabled globbing
8. Coding style changes
- rid of the unnecessary braces
- fix a missing & for mke2fs on livecd.aufs
- renamed variables for more readabilit
9. Better error handling for changesfs()
10. Removed aufs.persistent since 'aufs' already mounts a tmpfs which
uses half the available ram, and since this feature is not true
persistent we remove it in favor of aufs=<DEV>
---
defaults/initrd.defaults | 10 +--
defaults/initrd.scripts | 208 ++++++++++++++++++++++++-----------------------
defaults/linuxrc | 151 +++++++++++++++++-----------------
3 files changed, 185 insertions(+), 184 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 67b0d28..94b45cc 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -12,6 +12,8 @@ BAD="\033[31;1m"
BOLD="\033[1m"
GOOD="\033[32;1m"
+# Sets the default collation order
+LC_COLLATE=C
# From KNOPPIX LINUXRC
# Reset fb color mode
RESET="^[]R"
@@ -58,7 +60,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
-RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/rw_branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
+RC_NO_UMOUNTS='/newroot|/mnt/aufs-dev|/mnt/aufs-rw-branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino'
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
@@ -68,10 +70,8 @@ CDROOT_PATH='/mnt/cdrom'
CDROOT_MARKER='/livecd'
# AUFS variables
-USE_AUFS_NORMAL=0
-AUFS_MODULES=false
-AUFS_CHANGES=false
-AUFS_CHANGESFILE=/livecd.aufs
+aufs=0
+aufs_union_file=/livecd.aufs
LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index d87bb4e..8a3d93e 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -178,20 +178,20 @@ devicelist(){
}
bootstrapFS() {
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]; then
- # Directories used for rw changes in union mount filesystem
- UNION=/union MEMORY=/memory
+ if [ 1 = "$aufs" ]; then
+ # Directories used for rw aufs mount filesystem
+ aufs_union=/union aufs_memory=/memory
- # Mountpoint for the changesdev
- CHANGESMNT=${NEW_ROOT}/mnt/changesdev
+ # Mountpoint for the aufs dev
+ aufs_dev_mnt=/mnt/aufs-dev
- if [ -z "$UID" ]; then
- CHANGES=${MEMORY}/aufs_changes/default
+ if [ -z "$aufs_dev_uid" ]; then
+ aufs_branch=$aufs_memory/aufs-branch/default
else
- CHANGES=${MEMORY}/aufs_changes/${UID}
+ aufs_branch=$aufs_memory/aufs-branch/$aufs_dev_uid
fi
- mkdir -p ${MEMORY} ${UNION} ${CHANGESMNT}
+ mkdir -p $aufs_memory $aufs_union $aufs_dev_mnt
else
# Legacy SquashFS implementation
good_msg "Making tmpfs for ${NEW_ROOT}"
@@ -280,37 +280,51 @@ mount_sysfs() {
[ ${ret} -eq 0 ] || bad_msg "Failed to mount /sys!"
}
-# Insert a directory tree ${2} to an union specified by ${1}
+# Insert a directory tree $2 to an union specified by $1
# Top-level read-write branch is specified by it's index 0
-# ${1} = union absolute path (starting with /)
-# ${2} = path to data directory
+# $1 = union absolute path (starting with /)
+# $2 = path to data directory
#
union_insert_dir() {
# Always mount it over the precedent (add:1:)
- mount -n -o remount,add:1:${2}=rr aufs ${1}
- if [ $? = '0' ]
- then
- good_msg "Addition of ${2} to ${1} successful"
+ if mount -n -o "remount,add:1:$2=rr" aufs "$1"; then
+ good_msg "Addition of $2 to $1 successful"
fi
}
-# Insert all modules found in $1, usually ${CDROOT_PATH}
+# Insert all modules found in $1, usually $CDROOT_PATH
# added to allow users to add their own apps.
union_insert_modules() {
- for module in $(ls ${NEW_ROOT}/${1}/modules/*.mo 2>/dev/null| sort)
- do
- mkdir -p ${MEMORY}/modules/$(basename ${module} .mo)
- union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .mo)
- done
- for module in $(ls ${NEW_ROOT}/${1}/modules/*.lzm 2>/dev/null| sort)
- do
- mkdir -p ${MEMORY}/modules/$(basename ${module} .lzm)
- mount -o loop,ro ${module} ${MEMORY}/modules/$(basename ${module} .lzm)
- union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .lzm)
- done
+ local module
+
+ for module in "$NEW_ROOT/$1/modules/"*.mo; do
+ union_mod "$module" || bad_msg "Unable to load module: '$module'"
+ done
+
+ for module in "$NEW_ROOT/$1/modules/"*.lzm; do
+ union_mod "$module" lzm || bad_msg "Unable to load module: '$module'"
+ done
}
-# Implements RC_NO_UMOUNTS variable into ${CHROOT}/etc/rc.conf for a cleaner shutdown process
+# Helper function for union_insert_modules()
+union_mod() {
+ [ -e "$1" ] || return 0
+
+ local mod
+
+ mod=${1##*/}
+ mod=${mod%.*}
+
+ mkdir -p "$aufs_memory/modules/$mod" || return
+
+ if [ lzm = "$2" ]; then
+ mount -o loop,ro "$1" "$aufs_memory/modules/$mod"
+ fi
+
+ union_insert_dir "$aufs_union" "$aufs_memory/modules/$mod"
+}
+
+# Implements RC_NO_UMOUNTS variable into $CHROOT/etc/rc.conf for a cleaner shutdown process
# This should really go into /etc/init.d/localmounts but until then we manually set this here
conf_rc_no_umounts() {
local conf nomount fnd
@@ -357,7 +371,7 @@ is_int(){
done
}
-# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
+# Function to create an ext2 fs on $aufs_dev, $aufs_dev_mnt mountpoint
create_changefs() {
local size
@@ -372,102 +386,98 @@ create_changefs() {
elif [ 15 -ge "$size" ]; then
bad_msg "Please give a size of at least 16 Megabytes"
else
- if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" bs=1M count="$size" &>/dev/null; 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
+ if dd if=/dev/zero "of=$aufs_dev_mnt$aufs_union_file" bs=1M count="$size" &>/dev/null; then
+ good_msg "Creation of $aufs_union_file, ${size}Mb on $aufs_dev successful, formatting it ext2"
+ mke2fs -F "$aufs_dev_mnt$aufs_union_file" &>/dev/null
break
else
- rm -f "$CHANGESMNT$AUFS_CHANGESFILE"
- bad_msg "Unable to create ${AUFS_CHANGESFILE#*/} on $CHANGESDEV of ${size}Mb"
+ rm "$aufs_dev_mnt$aufs_union_file"
+ bad_msg "Unable to create ${aufs_union_file#*/} on $aufs_dev of ${size}Mb"
bad_msg "Ensure your disk is not full or read-only"
read -p '<< Type "a" to abort, anything else to continue : ' doabort
- if [ a = "$doabort" ]; then return 1; fi
+ if [ a = "$doabort" ]; then
+ bad_msg "Aborting creation of $aufs_union_file!"
+ umount "$aufs_dev" && rmdir "$aufs_dev_mnt"
+ return 1
+ fi
fi
fi
done
- return 0
+ return $?
}
setup_aufs() {
bootstrapCD
- if [ -n "$AUFS" ]; then
- if [ detect = "$AUFS" ]; then
- CHANGESMNT=$NEW_ROOT$CDROOT_PATH
- CHANGESDEV=$REAL_ROOT
- else
- CHANGESDEV=$AUFS
- good_msg "Mounting $CHANGESDEV to $MEMORY for aufs support"
+ if [ -n "$aufs_dev" ]; then
+ good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
- if ! mount -t auto "$CHANGESDEV" "$CHANGESMNT" &>/dev/null; then
- bad_msg "Mount of $CHANGESDEV failed, falling back to ramdisk based aufs"
- unset AUFS
- fi
+ if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
+ bad_msg "Mount of $aufs_dev failed, falling back to ramdisk based aufs"
+ unset aufs_dev
fi
- # Check and attempt to create the changesfile
- if [ ! -e $CHANGESMNT$AUFS_CHANGESFILE ] && [ -n "$AUFS" ]; then
- create_changefs
- mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY"
- elif [ -n "$AUFS" ]; then
- while :; do
- if mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY" &>/dev/null; then
+ # Check and attempt to create the AUFS union file
+ if [ ! -e $aufs_dev_mnt$aufs_union_file ] && [ -n "$aufs_dev" ]; then
+ create_changefs && mount -t auto "$aufs_dev_mnt$aufs_union_file" "$aufs_memory"
+ elif [ -n "$aufs_dev" ]; then
+ while :; do
+ if mount -t auto "$aufs_dev_mnt$aufs_union_file" "$aufs_memory" &>/dev/null; then
break
else
bad_msg "Mounting of changes file failed, Running e2fsck"
if ! hash e2fsck &>/dev/null; then
bad_msg "/sbin/e2fsck not found! aborting filesystem check"
- bad_msg "Moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+ bad_msg "Moving ${aufs_union_file#*/} to ${aufs_union_file#*/}.bad"
- mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
+ mv "$aufs_dev_mnt$aufs_union_file" "$aufs_dev_mnt$aufs_union_file.bad"
break
-
fi
- if e2fsck "$CHANGESMNT$AUFS_CHANGESFILE" &>/dev/null; then
+ if e2fsck "$aufs_dev_mnt$aufs_union_file" &>/dev/null; then
good_msg "e2fsck ran successfully. Please verify data after bootup"
else
- bad_msg "Your ${AUFS_CHANGESFILE#*/} image might be corrupted"
- bad_msg "moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+ bad_msg "Your ${aufs_union_file#*/} image might be corrupted"
+ bad_msg "moving ${aufs_union_file#*/} to ${aufs_union_file#*/}.bad"
- mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
- break
- fi
- fi
- done
- fi
- # mount tmpfs only in the case when changes= boot parameter was
- # empty or we were not able to mount the storage device
- if [ 1 = "$CDROOT" ] && [ ! -f "$CHANGESMNT$AUFS_CHANGESFILE" ]; then
- XINO=$MEMORY
- umount "$MEMORY" &>/dev/null
+ mv "$aufs_dev_mnt$aufs_union_file" "$aufs_dev_mnt$aufs_union_file.bad"
+ break
+ fi
+ fi
+ done
+ fi
+
+ # Mount tmpfs only in the case when aufs= boot parameter was
+ # empty or we were not able to mount the storage device
+ if [ 1 = "$CDROOT" ] && [ ! -f "$aufs_dev_mnt$aufs_union_file" ]; then
+ aufs_xino=$aufs_memory
+ umount "$aufs_memory" &>/dev/null
- bad_msg "Create an extfs ${AUFS_CHANGESFILE#*/} file on this device"
+ bad_msg "Create an extfs ${aufs_union_file#*/} file on this device"
bad_msg "if you wish to have aufs data persistency on reboots"
- bad_msg "Falling back to ramdisk based aufs"
- good_msg "Mounting ramdisk to $MEMORY for aufs support"
+ bad_msg "Falling back to ramdisk based aufs"
+ good_msg "Mounting ramdisk to $aufs_memory for aufs support"
- mount -t tmpfs tmpfs "$MEMORY"
- else
- XINO=$MEMORY/xino
+ mount -t tmpfs tmpfs "$aufs_memory"
+ else
+ aufs_xino=$aufs_memory/xino
- mkdir -p "$XINO"
- mount -t tmpfs aufs-xino "$XINO"
- fi
- else
- XINO=$MEMORY
+ mkdir -p "$aufs_xino"
+ mount -t tmpfs aufs-xino "$aufs_xino"
+ fi
+ else
+ aufs_xino=$aufs_memory
- good_msg "Mounting ramdisk to $MEMORY for aufs support"
- mount -t tmpfs tmpfs "$MEMORY"
- fi
+ good_msg "Mounting ramdisk to $aufs_memory for aufs support"
+ mount -t tmpfs tmpfs "$aufs_memory"
+ fi
- mkdir -p "$CHANGES"
- if ! mount -t aufs -n -o "nowarn_perm,udba=none,xino=$XINO/.aufs.xino,br:$CHANGES=rw" aufs "$UNION"; then
- bad_msg "Can't setup union $UNION in directory!"
- USE_AUFS_NORMAL=0
+ mkdir -p "$aufs_branch"
+ if ! mount -t aufs -n -o "nowarn_perm,udba=none,xino=$aufs_xino/.aufs.xino,br:$aufs_branch=rw" aufs "$aufs_union"; then
+ bad_msg "Can't setup union $aufs_union in directory!"
+ aufs=0
fi
}
@@ -1420,24 +1430,18 @@ getdvhoff() {
setup_squashfs_aufs() {
# Setup aufs directories and vars
- rw_branch=/mnt/rw_branch ro_branch=/mnt/livecd
+ aufs_rw_branch=/mnt/aufs-rw-branch aufs_ro_branch=/mnt/livecd
- for dir in $rw_branch $ro_branch; do
+ for dir in $aufs_rw_branch $aufs_ro_branch; do
[ ! -d $dir ] && mkdir -p "$dir"
done
good_msg "Loading aufs module ..."
modprobe aufs &>/dev/null
- mount -t squashfs -o loop,ro "$CDROOT_PATH/$LOOPEXT$LOOP" "$ro_branch"
- mount -t tmpfs none "$rw_branch"
- mount -t aufs -o "br:$rw_branch:$ro_branch" aufs "$NEW_ROOT"
-
- [ ! -d $NEW_ROOT$rw_branch ] && mkdir -p "$NEW_ROOT$rw_branch"
- [ ! -d $NEW_ROOT$ro_branch ] && mkdir -p "$NEW_ROOT$ro_branch"
- for mount in $rw_branch $ro_branch; do
- mount --move "$mount" "$NEW_ROOT$mount"
- done
+ mount -t squashfs -o loop,ro "$CDROOT_PATH/$LOOPEXT$LOOP" "$aufs_ro_branch"
+ mount -t tmpfs none "$aufs_rw_branch"
+ mount -t aufs -o "br:$aufs_rw_branch:$aufs_ro_branch" aufs "$NEW_ROOT"
}
setup_unionfs() {
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 5a341af..276f150 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -251,26 +251,22 @@ do
keymap=${x#*=}
;;
aufs)
- USE_AUFS_NORMAL=1
+ aufs=1
;;
aufs\=*)
- USE_AUFS_NORMAL=1
+ aufs=1
if echo "${x#*=}" | grep , &>/dev/null; then
- UID=${x#*,}
- AUFS=${x%,*}
+ aufs_dev_uid=${x#*,}
+ aufs_dev=${x%,*}
else
- AUFS=${x#*=}
+ aufs_dev=${x#*=}
fi
;;
- aufs.persistent)
- USE_AUFS_NORMAL=1
- AUFS=detect
- ;;
# Allow user to specify the modules location
aufs.modules\=*)
- MODULESD=${x#*=}
- AUFS_MODULES=true
+ aufs_modules_dev=${x#*=}
+ aufs_modules=1
;;
unionfs)
if [ ! -x /sbin/unionfs ]
@@ -447,14 +443,14 @@ then
# Setup the root filesystem
bootstrapFS
- if [ 1 = "$USE_AUFS_NORMAL" ]; then
+ if [ 1 = "$aufs" ]; then
setup_aufs
- CHROOT=$UNION
+ CHROOT=$aufs_union
else
CHROOT=${NEW_ROOT}
fi
- if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$USE_AUFS_NORMAL" ]; then
+ if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$aufs" ]; then
bootstrapCD
fi
@@ -704,7 +700,7 @@ then
FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'squashfs' ]
then
- if [ 1 != "$USE_AUFS_NORMAL" ]; then
+ if [ 1 != "$aufs" ]; then
good_msg 'Mounting squashfs filesystem'
_CACHED_SQUASHFS_PATH="${NEW_ROOT}/mnt/${LOOP}"
_squashfs_path="${CDROOT_PATH}/${LOOPEXT}${LOOP}" # Default to uncached
@@ -766,10 +762,10 @@ then
fi
fi # if [ -n "${CRYPT_ROOT}" ]
- if [ 1 = "$USE_AUFS_NORMAL" ]; then
- union_insert_dir "$CHROOT" "$NEW_ROOT/$FS_LOCATION"
+ if [ 1 = "$aufs" ]; then
+ union_insert_dir "$CHROOT" "$aufs_ro_branch"
- # Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
+ # Function to handle the RC_NO_UMOUNTS variable in $CHROOT/etc/rc.conf
conf_rc_no_umounts
# Fstab changes for aufs
@@ -780,7 +776,7 @@ then
cat > "$CHROOT/etc/fstab" << FSTAB
####################################################
-## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
+## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
## PLEASE EDIT THE FSTAB at /mnt/gentoo/etc/fstab ##
####################################################
aufs / aufs defaults 0 0
@@ -790,14 +786,14 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
- if $AUFS_MODULES; then
- warn_msg "Adding all modules in $MODULESD/modules/"
+ if [ 1 = "$aufs_modules" ]; then
+ warn_msg "Adding all modules in $aufs_modules_dev/modules/"
- if [ -z "$MODULESD" ]; then
+ if [ -z "$aufs_modules_dev" ]; then
union_insert_modules "$CDROOT_PATH"
else
mkdir "$NEW_ROOT/mnt/modulesd"
- mount "$MODULESD" "$NEW_ROOT/mnt/modulesd"
+ mount "$aufs_modules_dev" "$NEW_ROOT/mnt/modulesd"
union_insert_modules "$NEW_ROOT/mnt/modulesd"
fi
fi
@@ -808,11 +804,13 @@ FSTAB
cp /etc/sysconfig/keyboard "$CHROOT/etc/sysconfig/"
fi
- # Create the directories for our new union mounts
+ # Create the diuectories for our new union mounts
[ ! -d $CHROOT$NEW_ROOT ] && mkdir -p "$CHROOT$NEW_ROOT"
- if $AUFS_CHANGES && [ ! -d $CHROOT$NEW_ROOT/mnt/changesdev ]; then
- mkdir -p "$CHROOT$NEW_ROOT/mnt/changesdev"
+ # Check to see if we successfully mounted $aufs_dev
+ if [ -n "$aufs_dev" ] && grep $aufs_dev /etc/mtab 1>/dev/null; then
+ [ ! -d $CHROOT$aufs_dev_mnt ] && mkdir -p "$CHROOT$aufs_dev_mnt"
+ mount --move "$aufs_dev_mnt" "$CHROOT$aufs_dev_mnt"
fi
fi
@@ -833,31 +831,30 @@ FSTAB
fi
- if [ "${USE_UNIONFS_NORMAL}" = '1' ]
- then
+ if [ "${USE_UNIONFS_NORMAL}" = '1' ]; then
setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union
- else
- #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
- if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- good_msg "Copying read-write image contents to tmpfs"
- # Copy over stuff that should be writable
- (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
- bad_msg "Copying failed, dropping into a shell."
- do_rundebugshell
- }
-
- # Now we do the links.
- for x in ${ROOT_LINKS}
- do
- if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
- then
- ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
- else
- # List all subdirectories of x
- find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
- do
+ elif [ 1 != "$aufs" ]; then
+ good_msg "Copying read-write image contents to tmpfs"
+
+ # Copy over stuff that should be writable
+ (
+ cd "${NEW_ROOT}/${FS_LOCATION}"
+ cp -a ${ROOT_TREES} "${NEW_ROOT}"
+ ) ||
+ {
+ bad_msg "Copying failed, dropping into a shell."
+ do_rundebugshell
+ }
+
+ # Now we do the links.
+ for x in ${ROOT_LINKS}; do
+ if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]; then
+ ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
+ else
+ # List all subdirectories of x
+ find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null |
+ while read directory; do
# Strip the prefix of the FS_LOCATION
directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
@@ -869,11 +866,9 @@ FSTAB
fi
fi
# Test if the directory exists already
- if [ -e "/${NEW_ROOT}/${directory}" ]
- then
+ if [ -e "/${NEW_ROOT}/${directory}" ]; then
# It does exist, link all the individual files
- for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
- do
+ for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory}); do
if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
fi
@@ -882,22 +877,24 @@ FSTAB
# It does not exist, make a link to the livecd
ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
current_parent="${directory}"
- fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
- done # while read directory
- fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
- done # for x in ${ROOT_LINKS}
- mkdir -p initramfs proc tmp run sys 2>/dev/null
- chmod 1777 tmp
+ fi
+ done
+ fi
+ done
- fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- #XXX: end extremely confusing hunk
+ mkdir -p initramfs proc tmp run sys 2>/dev/null
+ chmod 1777 tmp
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
+ fi
- fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
+ # Have handy /mnt/cdrom (CDROOT_PATH) as well
+ if [ 1 = "$aufs" ]; then
+ [ ! -d "$CHROOT$CDROOT_PATH" ] && mkdir "$CHROOT$CDROOT_PATH"
+ mount --move "$CDROOT_PATH" "$CHROOT$CDROOT_PATH"
+ else
+ [ ! -d "$NEW_ROOT$CDROOT_PATH" ] && mkdir -p "$NEW_ROOT$CDROOT_PATH"
+ mount --move "$CDROOT_PATH" "$NEW_ROOT$CDROOT_PATH"
+ fi
#UML=$(cat /proc/cpuinfo|grep UML|sed -e 's|model name.*: ||')
#if [ "${UML}" = 'UML' ]
@@ -916,9 +913,9 @@ else
mount -t tmpfs tmpfs /union_changes
setup_unionfs /union_changes ${NEW_ROOT}
mkdir -p ${UNION}/tmp/.initrd
- elif [ 1 = "$USE_AUFS_NORMAL" ]; then
- union_insert_dir "$UNION" "$NEW_ROOT"
- mkdir -p "$UNION/tmp/.initrd"
+ elif [ 1 = "$aufs" ]; then
+ union_insert_dir "$aufs_union" "$NEW_ROOT"
+ mkdir -p "$aufs_union/tmp/.initrd"
fi
fi # if [ "${CDROOT}" = '1' ]
@@ -965,20 +962,20 @@ fi
verbose_kmsg
-if [ 1 = "$USE_AUFS_NORMAL" ]; then
- UNION_MEMORY=$CHROOT/.unions/memory
+if [ 1 = "$aufs" ]; then
+ aufs_union_memory=$CHROOT/.unions/memory
- mkdir -p "$UNION_MEMORY"
- mount --move "$MEMORY" "$UNION_MEMORY"
- test_success "Failed to move aufs /memory into the system root"
+ mkdir -p "$aufs_union_memory"
+ mount --move "$aufs_memory" "$aufs_union_memory"
+ test_success "Failed to move aufs $aufs_memory into the system root"
- for dir in /mnt/gentoo $rw_branch $ro_branch $CDROOT_PATH; do
+ for dir in /mnt/gentoo $aufs_rw_branch $aufs_ro_branch; do
mkdir -p "$CHROOT$dir"
chmod 755 "$CHROOT$dir"
done
- for dir in $CDROOT_PATH $rw_branch $ro_branch; do
- mount --move "$NEW_ROOT$dir" "$CHROOT$dir"
+ for mount in $aufs_rw_branch $aufs_ro_branch; do
+ mount --move "$mount" "$CHROOT$mount"
done
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 3ea3c267cd3b05c68b508f28b00efa5116850c09
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu Jul 10 01:53:07 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Thu Jul 31 19:19:33 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=3ea3c267
Changed to the dd command which creates the livecd.aufs image for
the aufs writable branch to make the process faster we create a
sparse file. Added a check for a block device so that we don't try
mounting the aufs device & some small comestic changes.
---
defaults/initrd.scripts | 33 ++++++++++++++++++++++-----------
defaults/linuxrc | 3 ++-
2 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 8a3d93e..5a01986 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -376,7 +376,7 @@ create_changefs() {
local size
while :; do
- read -p '<< Size of file (Press Enter for default 256 Mb): ' size
+ read -p '<< Size of file (Press Enter for default 256 MB): ' size
size=${size:-256}
@@ -386,13 +386,13 @@ create_changefs() {
elif [ 15 -ge "$size" ]; then
bad_msg "Please give a size of at least 16 Megabytes"
else
- if dd if=/dev/zero "of=$aufs_dev_mnt$aufs_union_file" bs=1M count="$size" &>/dev/null; then
- good_msg "Creation of $aufs_union_file, ${size}Mb on $aufs_dev successful, formatting it ext2"
+ if dd if=/dev/zero "of=$aufs_dev_mnt$aufs_union_file" bs=1 seek="$size"M count=0 &>/dev/null; then
+ good_msg "Creation of $aufs_union_file, ${size}MB on $aufs_dev successful, formatting it ext2"
mke2fs -F "$aufs_dev_mnt$aufs_union_file" &>/dev/null
break
else
rm "$aufs_dev_mnt$aufs_union_file"
- bad_msg "Unable to create ${aufs_union_file#*/} on $aufs_dev of ${size}Mb"
+ bad_msg "Unable to create ${aufs_union_file#*/} on $aufs_dev of ${size}MB"
bad_msg "Ensure your disk is not full or read-only"
read -p '<< Type "a" to abort, anything else to continue : ' doabort
@@ -410,13 +410,19 @@ create_changefs() {
setup_aufs() {
bootstrapCD
- if [ -n "$aufs_dev" ]; then
- good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
+ if [ -n "$aufs_dev" ]; then
+ if [ ! -b $aufs_dev ]; then
+ bad_msg "$aufs_dev is not a valid block device"
+ local invalidblk=1
+ unset aufs_dev
+ else
+ good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
- if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
- bad_msg "Mount of $aufs_dev failed, falling back to ramdisk based aufs"
- unset aufs_dev
- fi
+ if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
+ bad_msg "Mount of $aufs_dev failed, falling back to ramdisk based aufs"
+ unset aufs_dev
+ fi
+ fi
# Check and attempt to create the AUFS union file
if [ ! -e $aufs_dev_mnt$aufs_union_file ] && [ -n "$aufs_dev" ]; then
@@ -455,7 +461,12 @@ setup_aufs() {
aufs_xino=$aufs_memory
umount "$aufs_memory" &>/dev/null
- bad_msg "Create an extfs ${aufs_union_file#*/} file on this device"
+ if [ 1 = "$invalidblk" ]; then
+ bad_msg "Verify that you've entered a valid device path"
+ else
+ bad_msg "Create an extfs ${aufs_union_file#*/} file on this device"
+ fi
+
bad_msg "if you wish to have aufs data persistency on reboots"
bad_msg "Falling back to ramdisk based aufs"
good_msg "Mounting ramdisk to $aufs_memory for aufs support"
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 276f150..3098866 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -786,6 +786,7 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
+ # When aufs.modules= is used
if [ 1 = "$aufs_modules" ]; then
warn_msg "Adding all modules in $aufs_modules_dev/modules/"
@@ -804,7 +805,7 @@ FSTAB
cp /etc/sysconfig/keyboard "$CHROOT/etc/sysconfig/"
fi
- # Create the diuectories for our new union mounts
+ # Create the directories for our new union mounts
[ ! -d $CHROOT$NEW_ROOT ] && mkdir -p "$CHROOT$NEW_ROOT"
# Check to see if we successfully mounted $aufs_dev
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
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
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: d30bfb2e0028d37031b0a0c129cce7ced20d2cef
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Aug 4 01:23:02 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Aug 6 22:21:03 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=d30bfb2e
Fixed a bug which prevented aufs.modules from functioning properly
and changed the variables names to reflect the actual logic.
---
defaults/initrd.defaults | 1 +
defaults/initrd.scripts | 17 ++++++++---------
defaults/linuxrc | 22 +++++++++++++---------
3 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 94b45cc..818e3b1 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -72,6 +72,7 @@ CDROOT_MARKER='/livecd'
# AUFS variables
aufs=0
aufs_union_file=/livecd.aufs
+aufs_modules_dir=mnt/cdrom
LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 5a01986..7d9497d 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -297,12 +297,12 @@ union_insert_dir() {
union_insert_modules() {
local module
- for module in "$NEW_ROOT/$1/modules/"*.mo; do
- union_mod "$module" || bad_msg "Unable to load module: '$module'"
+ for module in "$1/modules/"*.mo; do
+ union_mod "$module" || bad_msg "Unable to insert module: '$module'"
done
- for module in "$NEW_ROOT/$1/modules/"*.lzm; do
- union_mod "$module" lzm || bad_msg "Unable to load module: '$module'"
+ for module in "$1/modules/"*.lzm; do
+ union_mod "$module" || bad_msg "Unable to insert module: '$module'"
done
}
@@ -315,13 +315,12 @@ union_mod() {
mod=${1##*/}
mod=${mod%.*}
- mkdir -p "$aufs_memory/modules/$mod" || return
-
- if [ lzm = "$2" ]; then
- mount -o loop,ro "$1" "$aufs_memory/modules/$mod"
+ if [ ! -d "$aufs_union"/mnt/"$mod" ]; then
+ mkdir -p "$aufs_union"/mnt/modules/"$mod" || return
fi
- union_insert_dir "$aufs_union" "$aufs_memory/modules/$mod"
+ mount -o loop,ro "$1" "$aufs_union"/mnt/modules/"$mod"
+ union_insert_dir "$aufs_union" "$aufs_union"/mnt/modules/"$mod"
}
# Implements RC_NO_UMOUNTS variable into $CHROOT/etc/rc.conf for a cleaner shutdown process
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 3098866..951f5e1 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -265,7 +265,7 @@ do
;;
# Allow user to specify the modules location
aufs.modules\=*)
- aufs_modules_dev=${x#*=}
+ aufs_modules_dir=${x#*=}
aufs_modules=1
;;
unionfs)
@@ -786,16 +786,20 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
- # When aufs.modules= is used
- if [ 1 = "$aufs_modules" ]; then
- warn_msg "Adding all modules in $aufs_modules_dev/modules/"
+ # When aufs.modules= is used or $CDROOT_PATH/modules
+ # directory is available
+ if [[ 1 = "$aufs_modules" || -d $CDROOT_PATH/modules ]]; then
+ warn_msg "Adding all modules in $aufs_modules_dir/modules/"
- if [ -z "$aufs_modules_dev" ]; then
+ if [ mnt/cdrom = "$aufs_modules_dir" ]; then
union_insert_modules "$CDROOT_PATH"
- else
- mkdir "$NEW_ROOT/mnt/modulesd"
- mount "$aufs_modules_dev" "$NEW_ROOT/mnt/modulesd"
- union_insert_modules "$NEW_ROOT/mnt/modulesd"
+ elif [ ! -b "$aufs_modules_dir" ]; then
+ bad_msg "$aufs_modules_dir is not a valid block device"
+ bad_msg "aborting modules insert into $aufs_union"
+ else
+ mkdir /mnt/modules
+ mount "$aufs_modules_dir" /mnt/modules
+ union_insert_modules /mnt/modules
fi
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: c33f10738a4880cd6d9cf2048df4809eaf04b19a
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Sun Aug 17 00:18:36 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Sun Aug 17 00:18:36 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=c33f1073
restructure no_umounts from being set in /etc/rc.conf to /etc/conf.d/localmount
---
defaults/initrd.defaults | 2 +-
defaults/initrd.scripts | 15 +++++++--------
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 818e3b1..7e4803a 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -60,7 +60,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
-RC_NO_UMOUNTS='/newroot|/mnt/aufs-dev|/mnt/aufs-rw-branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino'
+no_umounts='/newroot|/mnt/aufs-dev|/mnt/aufs-rw-branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino'
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 7d9497d..7b8e52f 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -323,13 +323,12 @@ union_mod() {
union_insert_dir "$aufs_union" "$aufs_union"/mnt/modules/"$mod"
}
-# Implements RC_NO_UMOUNTS variable into $CHROOT/etc/rc.conf for a cleaner shutdown process
-# This should really go into /etc/init.d/localmounts but until then we manually set this here
+# Implements no_umounts variable into $CHROOT/etc/conf.d/localmount for a cleaner shutdown process
conf_rc_no_umounts() {
local conf nomount fnd
- conf=$CHROOT/etc/rc.conf fnd=0
+ conf=$CHROOT/etc/conf.d/localmount fnd=0
- if nomount=$(grep -n '^[[:blank:]]*RC_NO_UMOUNTS=' $conf); then
+ if nomount=$(grep -n '^[[:blank:]]*no_umounts=' $conf); then
local i n data cmd IFS
IFS='
'
@@ -341,20 +340,20 @@ conf_rc_no_umounts() {
data=${i#*=}
case $data in
- "\"$RC_NO_UMOUNTS\""|"'$RC_NO_UMOUNTS'") fnd=1;;
+ "\"$no_umounts\""|"'$no_umounts'") fnd=1;;
*) cmd="$cmd$n d;"
esac
done
if [ -n "$cmd" ]; then
sed -i "${cmd%;}" $conf
- test_success "Unable to edit rc.conf"
+ test_success "Unable to edit /etc/conf.d/localmount"
fi
fi
if [ 0 -eq "$fnd" ]; then
- printf 'RC_NO_UMOUNTS="%s"\n' "$RC_NO_UMOUNTS" >> $conf
- test_success "Unable to write to rc.conf"
+ printf 'no_umounts="%s"\n' "$no_umounts" >> $conf
+ test_success "Unable to write to /etc/conf.d/localmount"
fi
}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: bada211da4c359c28056ac8cd57cd52ee25b470a
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu Jun 5 01:29:32 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=bada211d
Fixes a bug introduced by 8405e23 that broke none AUFS boots
---
defaults/initrd.defaults | 1 +
1 file changed, 1 insertion(+)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 1e1a539..d0efa28 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -68,6 +68,7 @@ CDROOT_PATH='/mnt/cdrom'
CDROOT_MARKER='/livecd'
# AUFS variables
+USE_AUFS_NORMAL=0
AUFS_MODULES=false
AUFS_CHANGES=false
AUFS_CHANGESFILE=livecd.aufs
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:09 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:09 UTC (permalink / raw
To: gentoo-commits
commit: 1409c54c01d3044be5d79697b2de14037cc0496a
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Wed Jun 4 23:04:30 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=1409c54c
This introduces changes to former commits d8e2d4d & 720a60f in
which there are fstab changes and tmpfs mounts which are combined
into one /etc/fstab instead.
---
defaults/linuxrc | 32 +++++++++++++-------------------
1 file changed, 13 insertions(+), 19 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index a6c4806..8b3ff87 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -794,9 +794,19 @@ then
# Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
conf_rc_no_umounts
- # Fstab change for aufs
- test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
- echo "aufs / aufs defaults 0 0" > "${CHROOT}"/etc/fstab
+ # Fstab changes for aufs
+ if ! grep -q '^aufs' "${CHROOT}"/etc/fstab 2>/dev/null; then
+ for i in /var/tmp /tmp /usr/portage/distfiles; do
+ [ ! -d "${CHROOT}${i}" ] && mkdir -p "${CHROOT}${i}"
+ done
+
+ cat > "${CHROOT}"/etc/fstab << FSTAB
+aufs / aufs defaults 0 0
+vartmp /var/tmp tmpfs defaults 0 0
+tmp /tmp tmpfs defaults 0 0
+distfiles /usr/portage/distfiles tmpfs defaults 0 0
+FSTAB
+ fi
if ${AUFS_MODULES}; then
warn_msg "Adding all modules in $MODULESD/modules/"
@@ -990,22 +1000,6 @@ then
chmod 755 "${CHROOT}${i}"
done
- # This will prevent from putting junk on the CHANGESDEV
- str=""
- for i in /tmp /var/tmp /usr/portage/distfiles
- do
- mkdir -p "${CHROOT}${i}"
- chmod 755 "${CHROOT}${i}"
-
- mount -t tmpfs tmpfs "${CHROOT}${i}"
- str="${i} ${str}"
- done
-
- warn_msg "${str}are mounted in ram"
- warn_msg "consider saving important files elsewhere"
-
- sleep 2
-
for i in ${CDROOT_PATH} ${overlay} ${static}; do
mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
done
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-05 16:11 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-05 16:11 UTC (permalink / raw
To: gentoo-commits
commit: 4f5ea0f2e9767728001f5f84eb5afbcb814d0818
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 5 16:11:48 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Fri Sep 5 16:11:48 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=4f5ea0f2
change default aufs branch naming
likewhoa didn't like my default naming, and I don't like his, so we
compromised on aufs-rw-branch so no one is happy :-)
---
defaults/initrd.scripts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 7b8e52f..a834ed2 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -186,9 +186,9 @@ bootstrapFS() {
aufs_dev_mnt=/mnt/aufs-dev
if [ -z "$aufs_dev_uid" ]; then
- aufs_branch=$aufs_memory/aufs-branch/default
+ aufs_branch=$aufs_memory/aufs-rw-branch/default
else
- aufs_branch=$aufs_memory/aufs-branch/$aufs_dev_uid
+ aufs_branch=$aufs_memory/aufs-rw-branch/$aufs_dev_uid
fi
mkdir -p $aufs_memory $aufs_union $aufs_dev_mnt
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-23 0:21 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-23 0:21 UTC (permalink / raw
To: gentoo-commits
commit: 5e7ea7fce1b18ceadcf3cf3e7bc008d6fd537a0a
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 23 00:07:28 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Tue Sep 23 00:07:28 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=5e7ea7fc
aufs changes saving automation
The aufs code has the ability to save changes in a file, however, it
requires the user to manually tell us where the file is. This code will
automatically check for the file on $CDROOT, as well as automatically
pick up the casper-rw file created by unetbooting for persistence.
Additionally we add the option for aufs=search which will search all
drives for livecd.aufs. Possible later enhancements include searching
other partitions on the CDROOT_DEV for livecd.aufs automatically instead
of needing aufs=search. Then again, possible later enhancements also
include just always searching, it's shockingly fast to do the search...
---
defaults/initrd.scripts | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index a834ed2..1cc9ff9 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -123,7 +123,7 @@ findmediamount() {
fi
good_msg "Attempting to mount media: ${x}" ${CRYPT_SILENT}
- mount -r -t ${CDROOT_TYPE} ${x} ${mntcddir} >/dev/null 2>&1
+ mount -t ${CDROOT_TYPE} ${x} ${mntcddir} >/dev/null 2>&1
if [ "$?" = '0' ]
then
if [ -n "${ISOBOOT}" ]; then
@@ -408,12 +408,29 @@ create_changefs() {
setup_aufs() {
bootstrapCD
+ if [ "$aufs_dev" = "search" ]; then
+ findmediamount "aufs-dev" "$aufs_union_file" \
+ "aufs_dev" "$aufs_dev_mnt" $(devicelist)
+ aufs_mounted="1"
+ elif [ -z $aufs_dev ] && [ -w "$CDROOT_PATH/$aufs_union_file" ]; then
+ aufs_dev="$REAL_ROOT"
+ aufs_dev_mnt="$CDROOT_PATH"
+ aufs_mounted="1"
+ fi
+ if [ -z $aufs_dev ] && [ -w "$CDROOT_PATH/casper-rw" ]; then
+ aufs_dev="$REAL_ROOT"
+ aufs_dev_mnt="$CDROOT_PATH"
+ aufs_union_file="/casper-rw"
+ aufs_mounted="1"
+ fi
+
if [ -n "$aufs_dev" ]; then
if [ ! -b $aufs_dev ]; then
bad_msg "$aufs_dev is not a valid block device"
local invalidblk=1
unset aufs_dev
- else
+ #skip this block when aufs_dev_mnt is already mounted
+ elif [ "$aufs_mounted" != "1" ]; then
good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
@@ -428,6 +445,9 @@ setup_aufs() {
elif [ -n "$aufs_dev" ]; then
while :; do
if mount -t auto "$aufs_dev_mnt$aufs_union_file" "$aufs_memory" &>/dev/null; then
+ if [ "$aufs_union_file" = "/casper-rw" ];then
+ bad_msg "Use of livecd.aufs preferred to casper-rw for changes saving, please rename the file."
+ fi
break
else
bad_msg "Mounting of changes file failed, Running e2fsck"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2014-09-23 0:21 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2014-09-23 0:21 UTC (permalink / raw
To: gentoo-commits
commit: f2c5c3b08c5a1930390840408b1526410d9442a4
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 23 00:19:43 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Tue Sep 23 00:19:43 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=f2c5c3b0
/usr/portage/distfiles shouldn't be tmpfs
It really doesn't make sense for /usr/portage/distfiles to be tmpfs,
plus, if a user is using aufs and trying to save changes we don't want
to lose these files. Only /tmp and /var/tmp should be tmpfs.
---
defaults/linuxrc | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 951f5e1..19b9878 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -770,7 +770,7 @@ then
# Fstab changes for aufs
if ! grep -q '^aufs' "$CHROOT/etc/fstab" 2>/dev/null; then
- for dir in /var/tmp /tmp /usr/portage/distfiles; do
+ for dir in /var/tmp /tmp; do
[ ! -d $CHROOT$dir ] && mkdir -p "$CHROOT$dir"
done
@@ -782,7 +782,6 @@ then
aufs / aufs defaults 0 0
vartmp /var/tmp tmpfs defaults 0 0
tmp /tmp tmpfs defaults 0 0
-distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: d8f76f80288f19c0d2d90e9c4999879ad0c61d1e
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:02:30 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=d8f76f80
Restructure the setup_aufs function, it had redundant code and moved
the call to it further down the pipe.
defaults/initrd.scripts | 181 +++++++++++++++++++++++-------------------------
defaults/linuxrc | 2 +-
2 files changed, 89 insertions(+), 94 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index a9ec5ab..14800e4 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -302,115 +302,110 @@ create_changefs() {
}
setup_aufs() {
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
+ # 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
- # 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
+ 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
+ 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}" ]
+ bootstrapCD
+ if [ -n "${AUFS}" ]
+ then
+ if [ "${AUFS}" = "detect" ]
then
- if [ "${AUFS}" = "detect" ]
+ CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
+ CHANGESDEV=${REAL_ROOT}
+ else
+ CHANGESDEV=${AUFS}
+ good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
+ mount -t auto ${CHANGESDEV} ${CHANGESMNT}
+ ret=$?
+ if [ "${ret}" -ne 0 ]
then
- CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
- CHANGESDEV=${REAL_ROOT}
- else
- CHANGESDEV=${AUFS}
- good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
- mount -t auto ${CHANGESDEV} ${CHANGESMNT}
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ unset AUFS
+ fi
+ fi
+ # Check and attempt to create the changesfile
+ if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
+ then
+ create_changefs
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
+ elif [ -n "${AUFS}" ]
+ then
+ local nbpass=0
+ while [ 1 ]
+ do
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
ret=$?
if [ "${ret}" -ne 0 ]
then
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
- unset AUFS
- fi
- fi
- # Check and attempt to create the changesfile
- if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
- then
- create_changefs
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- elif [ -n "${AUFS}" ]
- then
- local nbpass=0
- while [ 1 ]
- do
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- ret=$?
- if [ "${ret}" -ne 0 ]
+ if [ ${nbpass} -eq 0 ]
then
- if [ ${nbpass} -eq 0 ]
- then
- bad_msg "mounting of changes file failed, Running e2fsck"
- e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
- nbpass=$((${nbpass} + 1))
- else
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
- bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
- bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
- mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
- bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing"
- break
- fi
+ bad_msg "mounting of changes file failed, Running e2fsck"
+ e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
+ nbpass=$((${nbpass} + 1))
else
- if [ ${nbpass} -eq 1 ]
- then
- good_msg "e2fsck ran successfully. Please check your files after bootup"
- fi
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
+ bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
+ mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
+ bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing"
break
fi
- done
- fi
- # mount tmpfs only in the case when changes= boot parameter was
- # empty or we were not able to mount the storage device
- if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
- then
- umount ${MEMORY}
- bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
- bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
- bad_msg "falling back to ramdisk based aufs for safety"
- mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
- else
- XINO=${MEMORY}/xino
- mkdir -p ${XINO}
- mount -t tmpfs tmpfs ${XINO}
- fi
- else
- good_msg "Mounting ramdisk to $MEMORY for aufs support..."
- mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
+ else
+ if [ ${nbpass} -eq 1 ]
+ then
+ good_msg "e2fsck ran successfully. Please check your files after bootup"
+ fi
+ break
+ fi
+ done
fi
-
- mkdir -p ${CHANGES}
- mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
- ret=$?
- if [ "${ret}" -ne 0 ]
+ # mount tmpfs only in the case when changes= boot parameter was
+ # empty or we were not able to mount the storage device
+ if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
then
- bad_msg "Can't setup union ${UNION} in directory!"
- USE_AUFS_NORMAL=0
+ umount ${MEMORY}
+ bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
+ bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
+ bad_msg "falling back to ramdisk based aufs for safety"
+ mount -t tmpfs tmpfs ${MEMORY}
+ XINO=${MEMORY}
+ else
+ XINO=${MEMORY}/xino
+ mkdir -p ${XINO}
+ mount -t tmpfs tmpfs ${XINO}
fi
else
+ good_msg "Mounting ramdisk to $MEMORY for aufs support..."
+ mount -t tmpfs tmpfs ${MEMORY}
+ XINO=${MEMORY}
+ fi
+
+ mkdir -p ${CHANGES}
+ mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
+ ret=$?
+ if [ "${ret}" -ne 0 ]
+ then
+ bad_msg "Can't setup union ${UNION} in directory!"
USE_AUFS_NORMAL=0
fi
}
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 5d4d2a1..894ec45 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -457,9 +457,9 @@ rundebugshell "before setting up the root filesystem"
if [ "${CDROOT}" = '1' ]
then
- setup_aufs
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
+ setup_aufs
CHROOT=${UNION}
else
CHROOT=${NEW_ROOT}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: f29d304e5d71f65778ea7bff7e9628851bb17ed5
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu May 29 08:15:13 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=f29d304e
Removing --bind on some directories to prevent ${NEW_ROOT} path
from existing in favor of --move.
Got rid of the no longer required subshell call for aufs ${NEW_ROOT}
overlay.
defaults/initrd.scripts | 11 ++---------
defaults/linuxrc | 7 ++++---
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index c76abb5..2fe540b 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -1363,10 +1363,9 @@ getdvhoff() {
}
setup_squashfs_aufs() {
- (
# Setup aufs directories and vars
- local overlay=/mnt/overlay
- local static=/mnt/livecd
+ overlay=/mnt/overlay
+ static=/mnt/livecd
for i in "${overlay}" "${static}"; do
[ ! -d "${i}" ] && mkdir -p "${i}"
@@ -1381,12 +1380,6 @@ setup_squashfs_aufs() {
[ ! -d "${NEW_ROOT}${overlay}" ] && mkdir -p "${NEW_ROOT}${overlay}"
[ ! -d "${NEW_ROOT}${static}" ] && mkdir -p "${NEW_ROOT}${static}"
for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done
-
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- local new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${new_cdroot}" ] && mkdir -p "${new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${new_cdroot}"
- )
}
setup_unionfs() {
diff --git a/defaults/linuxrc b/defaults/linuxrc
index d5b424c..0a91c58 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -995,7 +995,7 @@ then
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}
+ for i in mnt/gentoo mnt/livecd /mnt/overlay ${CDROOT_PATH}
do
mkdir -p ${CHROOT}/$i
chmod 755 ${CHROOT}/$i
@@ -1012,8 +1012,9 @@ then
warn_msg "${str}are mounted in ram"
warn_msg "consider saving important files elsewhere..."
read -t 3 UNUSEDVAL
- mount --bind ${NEW_ROOT}${CDROOT_PATH} ${CHROOT}${CDROOT_PATH}
- mount --bind ${NEW_ROOT}/mnt/livecd ${CHROOT}/mnt/livecd
+ for i in ${CDROOT_PATH} ${overlay} ${static}; do
+ mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
+ done
fi
good_msg "Booting (initramfs)"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 5a62af115cf85e15fbac4f35d98af2a5bf34d004
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 00:51:08 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=5a62af11
Enhanced the shutdown process and changed from using ${UNION} to ${CHROOT} to
better understand the logic behind things as CHROOT is set to ${UNION} anyways.
RC_NO_UMOUNTS is more dynamic now and should scale up.
defaults/initrd.defaults | 1 +
defaults/linuxrc | 45 +++++++++++++++++++++++++++++++--------------
2 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index aa9f85c..9937e00 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -58,6 +58,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
+RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 0a91c58..5d4d2a1 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -805,24 +805,38 @@ then
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
- union_insert_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION}
+ union_insert_dir ${CHROOT} ${NEW_ROOT}/${FS_LOCATION}
# Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
# 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
+ #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
+ RC_MOUNTS=$(grep 'RC_NO_UMOUNTS' "${CHROOT}"/etc/rc.conf)
+ RESULTS=false
+
+ # Iterate through ${RC_MOUNTS} to find our duplicate(s) and or remove obsolete lines when ever
+ # our RC_NO_UMOUNTS variable changes.
+ printf '%s\n' ${RC_MOUNTS} | while read -r mount; do
+ if [[ "${mount}" = "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"" ]]; then
+ RESULTS=true
+ else
+ # Escape characters in ${mounts} for use in sed
+ mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
+
+ # Remove non matching pattern
+ sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
+ fi
+ done
+
+ if ! ${RESULTS}; then
+ echo 'RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"'>> "${CHROOT}"/etc/rc.conf
+ fi
# Fstab change for aufs
- test ! $(grep aufs "${UNION}"/etc/fstab) &&
- echo "aufs / aufs defaults 0 0" > "${UNION}"/etc/fstab
+ test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
+ echo "aufs / aufs defaults 0 0" > "${CHROOT}"/etc/fstab
warn_msg "Adding all modules in $MODULESD/modules/"
if [ -z "${MODULESD}" ]
@@ -834,9 +848,12 @@ memory|/.unions/memory/xino"' "${UNION}"/etc/rc.conf) &&
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
+ # Create the directories for our new union mounts
+ test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
+
+ if ${AUFS_CHANGES} && [ ! -d "${CHROOT}${NEW_ROOT}/mnt/changesdev" ]; then
+ mkdir -p "${CHROOT}${NEW_ROOT}/mnt/changesdev"
+ fi
fi
# Unpacking additional packages from NFS mount
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: de648288f5cc03636396e93b7128969b95101a53
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:31:13 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=de648288
Wording changes, cosmetic crap
defaults/initrd.scripts | 21 +++++++++++----------
defaults/linuxrc | 7 ++++---
2 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 0e44e61..fe563fe 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -334,12 +334,12 @@ setup_aufs() {
CHANGESDEV=${REAL_ROOT}
else
CHANGESDEV=${AUFS}
- good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
+ good_msg "Mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
mount -t auto ${CHANGESDEV} ${CHANGESMNT} &>/dev/null
ret=$?
if [ "${ret}" -ne 0 ]
then
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
unset AUFS
fi
fi
@@ -359,15 +359,15 @@ setup_aufs() {
then
if [ ${nbpass} -eq 0 ]
then
- bad_msg "mounting of changes file failed, Running e2fsck"
+ bad_msg "Mounting of changes file failed, Running e2fsck"
e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
nbpass=$((${nbpass} + 1))
else
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
- bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing"
+ bad_msg "Try to fix it yourself with e2fsck"
break
fi
else
@@ -383,19 +383,20 @@ setup_aufs() {
# empty or we were not able to mount the storage device
if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
then
+ XINO=${MEMORY}
umount ${MEMORY} &>/dev/null
- bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
- bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
- bad_msg "falling back to ramdisk based aufs for safety"
+ bad_msg "Failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
+ bad_msg "Create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
+ bad_msg "Falling back to ramdisk based aufs for safety"
+ good_msg "Mounting ramdisk to $MEMORY for aufs support"
mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
else
XINO=${MEMORY}/xino
mkdir -p ${XINO}
mount -t tmpfs tmpfs ${XINO}
fi
else
- good_msg "Mounting ramdisk to $MEMORY for aufs support..."
+ good_msg "Mounting ramdisk to $MEMORY for aufs support"
mount -t tmpfs tmpfs ${MEMORY}
XINO=${MEMORY}
fi
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 894ec45..009b4c4 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -758,9 +758,10 @@ then
do_rundebugshell
}
else
- good_msg 'Mounting squashfs & aufs filesystems'
+ good_msg 'Mounting squashfs filesystem'
+
setup_squashfs_aufs
- test_success 'Mount filesystem'
+ test_success 'Mount aufs filesystem'
fi
FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'gcloop' ]
@@ -1027,7 +1028,7 @@ then
str="${str} ${i}"
done
warn_msg "${str}are mounted in ram"
- warn_msg "consider saving important files elsewhere..."
+ warn_msg "consider saving important files elsewhere"
read -t 3 UNUSEDVAL
for i in ${CDROOT_PATH} ${overlay} ${static}; do
mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: dbf39867145b304b63ade4f52c21f28d4ea8aa89
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:46:09 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=dbf39867
Better handle on if aufs.modules kernel parameter is used
defaults/initrd.defaults | 1 +
defaults/linuxrc | 22 +++++++++++++---------
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 9937e00..b08ff50 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -68,6 +68,7 @@ CDROOT_PATH='/mnt/cdrom'
CDROOT_MARKER='/livecd'
# AUFS variables
+AUFS_MODULES=false
AUFS_CHANGES=false
AUFS_CHANGESFILE=livecd.aufs
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 009b4c4..281de8e 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -284,6 +284,7 @@ do
# Allow user to specify the modules location
aufs.modules\=*)
MODULESD=${x#*=}
+ AUFS_MODULES=true
;;
unionfs)
if [ ! -x /sbin/unionfs ]
@@ -839,15 +840,18 @@ then
test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
echo "aufs / aufs defaults 0 0" > "${CHROOT}"/etc/fstab
- warn_msg "Adding all modules in $MODULESD/modules/"
- if [ -z "${MODULESD}" ]
- then
- union_insert_modules ${CDROOT_PATH}
- else
- mkdir ${NEW_ROOT}/mnt/modulesd
- mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
- union_insert_modules ${NEW_ROOT}/mnt/modulesd
- fi
+ if ${AUFS_MODULES}; then
+ warn_msg "Adding all modules in $MODULESD/modules/"
+
+ if [ -z "${MODULESD}" ]
+ then
+ union_insert_modules ${CDROOT_PATH}
+ else
+ mkdir ${NEW_ROOT}/mnt/modulesd
+ mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
+ union_insert_modules ${NEW_ROOT}/mnt/modulesd
+ fi
+ fi
# Create the directories for our new union mounts
test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 6e5daaadb38e1bae6a30c57f9997ff01528dc6aa
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 01:03:37 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=6e5daaad
Cleanup dd output from changes file creation
defaults/initrd.scripts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 2fe540b..a9ec5ab 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -280,7 +280,7 @@ create_changefs() {
then
bad_msg "Please give a size of at least 16 Mb"
else
- dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size}
+ dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size} &>/dev/null
if [ $? = '0' ]
then
good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: eeb82b88ce756f4c6569820129b6fb3e27829edb
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:06:42 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=eeb82b88
Output cleaning
defaults/initrd.scripts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 14800e4..0e44e61 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -335,7 +335,7 @@ setup_aufs() {
else
CHANGESDEV=${AUFS}
good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
- mount -t auto ${CHANGESDEV} ${CHANGESMNT}
+ mount -t auto ${CHANGESDEV} ${CHANGESMNT} &>/dev/null
ret=$?
if [ "${ret}" -ne 0 ]
then
@@ -383,7 +383,7 @@ setup_aufs() {
# empty or we were not able to mount the storage device
if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
then
- umount ${MEMORY}
+ umount ${MEMORY} &>/dev/null
bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
bad_msg "falling back to ramdisk based aufs for safety"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 2222b9de2417a6587f2d206841e15ad53c8a4672
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu Jul 10 01:53:07 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:33:04 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=2222b9de
Changed to the dd command which creates the livecd.aufs image for
the aufs writable branch to make the process faster we create a
sparse file. Added a check for a block device so that we don't try
mounting the aufs device & some small comestic changes.
defaults/initrd.scripts | 33 ++++++++++++++++++++++-----------
defaults/linuxrc | 3 ++-
2 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 2e48504..5c7703b 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -376,7 +376,7 @@ create_changefs() {
local size
while :; do
- read -p '<< Size of file (Press Enter for default 256 Mb): ' size
+ read -p '<< Size of file (Press Enter for default 256 MB): ' size
size=${size:-256}
@@ -386,13 +386,13 @@ create_changefs() {
elif [ 15 -ge "$size" ]; then
bad_msg "Please give a size of at least 16 Megabytes"
else
- if dd if=/dev/zero "of=$aufs_dev_mnt$aufs_union_file" bs=1M count="$size" &>/dev/null; then
- good_msg "Creation of $aufs_union_file, ${size}Mb on $aufs_dev successful, formatting it ext2"
+ if dd if=/dev/zero "of=$aufs_dev_mnt$aufs_union_file" bs=1 seek="$size"M count=0 &>/dev/null; then
+ good_msg "Creation of $aufs_union_file, ${size}MB on $aufs_dev successful, formatting it ext2"
mke2fs -F "$aufs_dev_mnt$aufs_union_file" &>/dev/null
break
else
rm "$aufs_dev_mnt$aufs_union_file"
- bad_msg "Unable to create ${aufs_union_file#*/} on $aufs_dev of ${size}Mb"
+ bad_msg "Unable to create ${aufs_union_file#*/} on $aufs_dev of ${size}MB"
bad_msg "Ensure your disk is not full or read-only"
read -p '<< Type "a" to abort, anything else to continue : ' doabort
@@ -410,13 +410,19 @@ create_changefs() {
setup_aufs() {
bootstrapCD
- if [ -n "$aufs_dev" ]; then
- good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
+ if [ -n "$aufs_dev" ]; then
+ if [ ! -b $aufs_dev ]; then
+ bad_msg "$aufs_dev is not a valid block device"
+ local invalidblk=1
+ unset aufs_dev
+ else
+ good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
- if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
- bad_msg "Mount of $aufs_dev failed, falling back to ramdisk based aufs"
- unset aufs_dev
- fi
+ if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
+ bad_msg "Mount of $aufs_dev failed, falling back to ramdisk based aufs"
+ unset aufs_dev
+ fi
+ fi
# Check and attempt to create the AUFS union file
if [ ! -e $aufs_dev_mnt$aufs_union_file ] && [ -n "$aufs_dev" ]; then
@@ -455,7 +461,12 @@ setup_aufs() {
aufs_xino=$aufs_memory
umount "$aufs_memory" &>/dev/null
- bad_msg "Create an extfs ${aufs_union_file#*/} file on this device"
+ if [ 1 = "$invalidblk" ]; then
+ bad_msg "Verify that you've entered a valid device path"
+ else
+ bad_msg "Create an extfs ${aufs_union_file#*/} file on this device"
+ fi
+
bad_msg "if you wish to have aufs data persistency on reboots"
bad_msg "Falling back to ramdisk based aufs"
good_msg "Mounting ramdisk to $aufs_memory for aufs support"
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 276f150..3098866 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -786,6 +786,7 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
+ # When aufs.modules= is used
if [ 1 = "$aufs_modules" ]; then
warn_msg "Adding all modules in $aufs_modules_dev/modules/"
@@ -804,7 +805,7 @@ FSTAB
cp /etc/sysconfig/keyboard "$CHROOT/etc/sysconfig/"
fi
- # Create the diuectories for our new union mounts
+ # Create the directories for our new union mounts
[ ! -d $CHROOT$NEW_ROOT ] && mkdir -p "$CHROOT$NEW_ROOT"
# Check to see if we successfully mounted $aufs_dev
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 935febab43502bfd27a0b18d2d4e0cc99a8a4b11
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Jun 23 17:58:33 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=935febab
Coding style changes throughout all the AUFS related code.
defaults/initrd.defaults | 4 +-
defaults/initrd.scripts | 179 ++++++++++++++++++-------------------
defaults/linuxrc | 227 +++++++++++++++++++++--------------------------
3 files changed, 188 insertions(+), 222 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 2d79fc3..17847fe 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -58,7 +58,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
-RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
+RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/rw_branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
@@ -71,7 +71,7 @@ CDROOT_MARKER='/livecd'
USE_AUFS_NORMAL=0
AUFS_MODULES=false
AUFS_CHANGES=false
-AUFS_CHANGESFILE=livecd.aufs
+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 91056b1..c258c00 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -314,8 +314,7 @@ union_insert_modules() {
# This should really go into /etc/init.d/localmounts but until then we manually set this here
conf_rc_no_umounts() {
local conf nomount fnd
- conf="${CHROOT}/etc/rc.conf"
- fnd=0
+ conf=$CHROOT/etc/rc.conf fnd=0
if nomount=$(grep -n '^[[:blank:]]*RC_NO_UMOUNTS=' $conf); then
local i n data cmd IFS
@@ -350,33 +349,28 @@ conf_rc_no_umounts() {
create_changefs() {
local size
- while [ 1 ]
- do
+ while :; do
read -p '<< Size of file (Press Enter for default 256 Mb): ' size
- if [ -z "${size}" ]; then
- size=256
- fi
- size="${size}"
- if [ ${size} -lt 16 ]
- then
- bad_msg "Please give a size of at least 16 Mb"
+ [ -n "$size" ] || size=256
+
+ size=$size
+
+ if [ 15 -ge "$size" ]; then
+ bad_msg "Please give a size of at least 16 Megabytes"
else
- dd if=/dev/zero of=${CHANGESMNT}/${AUFS_CHANGESFILE} bs=1M count=${size} &>/dev/null
- if [ $? = '0' ]
- then
- good_msg "Creation of ${AUFS_CHANGESFILE}, ${size} Mb on ${CHANGESDEV} successful, formatting it ext2"
- mke2fs -F ${CHANGESMNT}/${AUFS_CHANGESFILE} &>/dev/null
+ if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" bs=1M count="$size" &>/dev/null; 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}
- bad_msg "Unable to create ${AUFS_CHANGESFILE} on ${CHANGESDEV} of ${size} Mb"
+ rm -f "$CHANGESMNT$AUFS_CHANGESFILE"
+ bad_msg "Unable to create ${AUFS_CHANGESFILE#*/} on $CHANGESDEV of ${size}Mb"
bad_msg "Ensure your disk is not full or read-only"
+
read -p '<< Type "a" to abort, anything else to continue : ' doabort
- if [ "${doabort}" = "a" ]; then
- return 1
- fi
+ if [ a = "$doabort" ]; then return 1; fi
fi
fi
done
@@ -386,87 +380,80 @@ create_changefs() {
setup_aufs() {
bootstrapCD
- if [ -n "${AUFS}" ]
- then
- if [ "${AUFS}" = "detect" ]
- then
- CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}"
- CHANGESDEV=${REAL_ROOT}
+ if [ -n "$AUFS" ]; then
+ if [ detect = "$AUFS" ]; then
+ CHANGESMNT=$NEW_ROOT$CDROOT_PATH
+ CHANGESDEV=$REAL_ROOT
else
- CHANGESDEV=${AUFS}
- good_msg "Mounting ${CHANGESDEV} to ${MEMORY} for aufs support"
- mount -t auto ${CHANGESDEV} ${CHANGESMNT} &>/dev/null
- ret=$?
- if [ "${ret}" -ne 0 ]
- then
- bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
+ CHANGESDEV=$AUFS
+ good_msg "Mounting $CHANGESDEV to $MEMORY for aufs support"
+
+ if ! mount -t auto "$CHANGESDEV" "$CHANGESMNT" &>/dev/null; then
+ bad_msg "Mount of $CHANGESDEV failed, falling back to ramdisk based aufs"
unset AUFS
fi
fi
+
# Check and attempt to create the changesfile
- if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ]
- then
+ if [ ! -e $CHANGESMNT$AUFS_CHANGESFILE ] && [ -n "$AUFS" ]; then
create_changefs
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- elif [ -n "${AUFS}" ]
- then
- local nbpass=0
- while [ 1 ]
- do
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY}
- ret=$?
- if [ "${ret}" -ne 0 ]
- then
- if [ ${nbpass} -eq 0 ]
- then
- bad_msg "Mounting of changes file failed, Running e2fsck"
- e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE}
- nbpass=$((${nbpass} + 1))
- else
- bad_msg "Mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs"
- bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it"
- bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad"
- mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad
- bad_msg "Try to fix it yourself with e2fsck"
+ mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY"
+ elif [ -n "$AUFS" ]; then
+ while :; do
+ if mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY" &>/dev/null; then
+ break
+ else
+ bad_msg "Mounting of changes file failed, Running e2fsck"
+
+ if ! hash e2fsck &>/dev/null; then
+ bad_msg "/sbin/e2fsck not found! aborting filesystem check"
+ bad_msg "Moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+
+ mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
+ break
+
+ fi
+
+ if e2fsck "$CHANGESMNT$AUFS_CHANGESFILE" &>/dev/null; then
+ good_msg "e2fsck ran successfully. Please verify data after bootup"
+ else
+ bad_msg "Your ${AUFS_CHANGESFILE#*/} image might be corrupted"
+ bad_msg "moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+
+ mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
break
fi
- else
- if [ ${nbpass} -eq 1 ]
- then
- good_msg "e2fsck ran successfully. Please check your files after bootup"
- fi
- break
fi
done
fi
# mount tmpfs only in the case when changes= boot parameter was
# empty or we were not able to mount the storage device
- if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ]
- then
- XINO=${MEMORY}
- umount ${MEMORY} &>/dev/null
- bad_msg "Failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}"
- bad_msg "Create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs"
- bad_msg "Falling back to ramdisk based aufs for safety"
+ if [ 1 = "$CDROOT" ] && [ ! -f "$CHANGESMNT$AUFS_CHANGESFILE" ]; then
+ XINO=$MEMORY
+ umount "$MEMORY" &>/dev/null
+
+ bad_msg "Create an extfs ${AUFS_CHANGESFILE#*/} file on this device"
+ bad_msg "if you wish to have aufs data persistency on reboots"
+ bad_msg "Falling back to ramdisk based aufs"
good_msg "Mounting ramdisk to $MEMORY for aufs support"
- mount -t tmpfs tmpfs ${MEMORY}
+
+ mount -t tmpfs tmpfs "$MEMORY"
else
- XINO=${MEMORY}/xino
- mkdir -p ${XINO}
- mount -t tmpfs tmpfs ${XINO}
+ XINO=$MEMORY/xino
+
+ mkdir -p "$XINO"
+ mount -t tmpfs aufs-xino "$XINO"
fi
else
- good_msg "Mounting ramdisk to $MEMORY for aufs support"
- mount -t tmpfs tmpfs ${MEMORY}
- XINO=${MEMORY}
+ XINO=$MEMORY
+
+ good_msg "Mounting ramdisk to $MEMORY for aufs support"
+ mount -t tmpfs tmpfs "$MEMORY"
fi
- mkdir -p ${CHANGES}
- mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION}
- ret=$?
- if [ "${ret}" -ne 0 ]
- then
- bad_msg "Can't setup union ${UNION} in directory!"
+ mkdir -p "$CHANGES"
+ if ! mount -t aufs -n -o "nowarn_perm,udba=none,xino=$XINO/.aufs.xino,br:$CHANGES=rw" aufs "$UNION"; then
+ bad_msg "Can't setup union $UNION in directory!"
USE_AUFS_NORMAL=0
fi
}
@@ -1420,22 +1407,24 @@ getdvhoff() {
setup_squashfs_aufs() {
# Setup aufs directories and vars
- overlay=/mnt/overlay
- static=/mnt/livecd
+ rw_branch=/mnt/rw_branch ro_branch=/mnt/livecd
- for i in "${overlay}" "${static}"; do
- [ ! -d "${i}" ] && mkdir -p "${i}"
+ for dir in $rw_branch $ro_branch; do
+ [ ! -d $dir ] && mkdir -p "$dir"
done
- good_msg "Loading aufs"
- modprobe aufs > /dev/null 2>&1
- mount -t squashfs -o loop,ro "${CDROOT_PATH}/${LOOPEXT}${LOOP}" "${static}"
- mount -t tmpfs none "${overlay}"
- mount -t aufs -o br:${overlay}:${static} aufs "${NEW_ROOT}"
+ good_msg "Loading aufs module ..."
+ modprobe aufs &>/dev/null
- [ ! -d "${NEW_ROOT}${overlay}" ] && mkdir -p "${NEW_ROOT}${overlay}"
- [ ! -d "${NEW_ROOT}${static}" ] && mkdir -p "${NEW_ROOT}${static}"
- for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done
+ mount -t squashfs -o loop,ro "$CDROOT_PATH/$LOOPEXT$LOOP" "$ro_branch"
+ mount -t tmpfs none "$rw_branch"
+ mount -t aufs -o "br:$rw_branch:$ro_branch" aufs "$NEW_ROOT"
+
+ [ ! -d $NEW_ROOT$rw_branch ] && mkdir -p "$NEW_ROOT$rw_branch"
+ [ ! -d $NEW_ROOT$ro_branch ] && mkdir -p "$NEW_ROOT$ro_branch"
+ for mount in $rw_branch $ro_branch; do
+ mount --move "$mount" "$NEW_ROOT$mount"
+ done
}
setup_unionfs() {
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 8b3ff87..5a341af 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -255,31 +255,17 @@ do
;;
aufs\=*)
USE_AUFS_NORMAL=1
- echo ${x#*=} | grep , &>/dev/null
- if [ "$?" -eq '0' ]
- then
+ if echo "${x#*=}" | grep , &>/dev/null; then
UID=${x#*,}
AUFS=${x%,*}
else
AUFS=${x#*=}
fi
;;
- aufs.changes\=*)
- USE_AUFS_NORMAL=1
- echo ${x#*=} | grep , &>/dev/null
-
- if [ "$?" -eq '0' ]
- then
- UID=${x#*,}
- AUFS=${x%,*}
- else
- AUFS=${x#*=}
- fi
- ;;
aufs.persistent)
USE_AUFS_NORMAL=1
- AUFS="detect"
+ AUFS=detect
;;
# Allow user to specify the modules location
aufs.modules\=*)
@@ -461,16 +447,14 @@ then
# Setup the root filesystem
bootstrapFS
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
- then
+ if [ 1 = "$USE_AUFS_NORMAL" ]; then
setup_aufs
- CHROOT=${UNION}
+ CHROOT=$UNION
else
CHROOT=${NEW_ROOT}
fi
- if [ "${REAL_ROOT}" != "/dev/nfs" ] && [ "${LOOPTYPE}" != "sgimips" ] && [ "${USE_AUFS_NORMAL}" != '1' ]
- then
+ if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$USE_AUFS_NORMAL" ]; then
bootstrapCD
fi
@@ -502,7 +486,7 @@ then
fi
# Determine root device
-good_msg 'Determining root device...'
+good_msg 'Determining root device ...'
while true
do
while [ "${got_good_root}" != '1' ]
@@ -720,7 +704,7 @@ then
FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'squashfs' ]
then
- if [ "${USE_AUFS_NORMAL}" != '1' ]; then
+ if [ 1 != "$USE_AUFS_NORMAL" ]; then
good_msg 'Mounting squashfs filesystem'
_CACHED_SQUASHFS_PATH="${NEW_ROOT}/mnt/${LOOP}"
_squashfs_path="${CDROOT_PATH}/${LOOPEXT}${LOOP}" # Default to uncached
@@ -782,25 +766,23 @@ then
fi
fi # if [ -n "${CRYPT_ROOT}" ]
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- union_insert_dir ${CHROOT} ${NEW_ROOT}/${FS_LOCATION}
-
- # Make sure fstab notes livecd is mounted ro. Makes system skip remount which fails on aufs dirs.
- # 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
+ if [ 1 = "$USE_AUFS_NORMAL" ]; then
+ union_insert_dir "$CHROOT" "$NEW_ROOT/$FS_LOCATION"
# Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
conf_rc_no_umounts
# Fstab changes for aufs
- if ! grep -q '^aufs' "${CHROOT}"/etc/fstab 2>/dev/null; then
- for i in /var/tmp /tmp /usr/portage/distfiles; do
- [ ! -d "${CHROOT}${i}" ] && mkdir -p "${CHROOT}${i}"
+ if ! grep -q '^aufs' "$CHROOT/etc/fstab" 2>/dev/null; then
+ for dir in /var/tmp /tmp /usr/portage/distfiles; do
+ [ ! -d $CHROOT$dir ] && mkdir -p "$CHROOT$dir"
done
- cat > "${CHROOT}"/etc/fstab << FSTAB
+ cat > "$CHROOT/etc/fstab" << FSTAB
+####################################################
+## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
+## PLEASE EDIT THE FSTAB at /mnt/gentoo/etc/fstab ##
+####################################################
aufs / aufs defaults 0 0
vartmp /var/tmp tmpfs defaults 0 0
tmp /tmp tmpfs defaults 0 0
@@ -808,30 +790,29 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
- if ${AUFS_MODULES}; then
+ if $AUFS_MODULES; then
warn_msg "Adding all modules in $MODULESD/modules/"
- if [ -z "${MODULESD}" ]
- then
- union_insert_modules ${CDROOT_PATH}
+ if [ -z "$MODULESD" ]; then
+ union_insert_modules "$CDROOT_PATH"
else
- mkdir ${NEW_ROOT}/mnt/modulesd
- mount "${MODULESD}" ${NEW_ROOT}/mnt/modulesd
- union_insert_modules ${NEW_ROOT}/mnt/modulesd
+ mkdir "$NEW_ROOT/mnt/modulesd"
+ mount "$MODULESD" "$NEW_ROOT/mnt/modulesd"
+ union_insert_modules "$NEW_ROOT/mnt/modulesd"
fi
fi
# Copy user keymap file
if [ -e /etc/sysconfig/keyboard ]; then
- [ ! -d ${CHROOT}/etc/sysconfig ] && mkdir -p ${CHROOT}/etc/sysconfig
- cp /etc/sysconfig/keyboard ${CHROOT}/etc/sysconfig/
+ [ ! -d $CHROOT/etc/sysconfig ] && mkdir -p "$CHROOT/etc/sysconfig"
+ cp /etc/sysconfig/keyboard "$CHROOT/etc/sysconfig/"
fi
# Create the directories for our new union mounts
- test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
+ [ ! -d $CHROOT$NEW_ROOT ] && mkdir -p "$CHROOT$NEW_ROOT"
- if ${AUFS_CHANGES} && [ ! -d "${CHROOT}${NEW_ROOT}/mnt/changesdev" ]; then
- mkdir -p "${CHROOT}${NEW_ROOT}/mnt/changesdev"
+ if $AUFS_CHANGES && [ ! -d $CHROOT$NEW_ROOT/mnt/changesdev ]; then
+ mkdir -p "$CHROOT$NEW_ROOT/mnt/changesdev"
fi
fi
@@ -856,67 +837,67 @@ FSTAB
then
setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union
- else
- #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
- if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- good_msg "Copying read-write image contents to tmpfs"
- # Copy over stuff that should be writable
- (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
- bad_msg "Copying failed, dropping into a shell."
- do_rundebugshell
- }
-
- # Now we do the links.
- for x in ${ROOT_LINKS}
- do
- if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
- then
- ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
- else
- # List all subdirectories of x
- find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
- do
- # Strip the prefix of the FS_LOCATION
- directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
-
- # Skip this directory if we already linked a parent directory
- if [ "${current_parent}" != '' ]; then
- var=$(echo "${directory}" | grep "^${current_parent}")
- if [ "${var}" != '' ]; then
- continue
- fi
- fi
- # Test if the directory exists already
- if [ -e "/${NEW_ROOT}/${directory}" ]
- then
- # It does exist, link all the individual files
- for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
- do
- if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
- ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
- fi
- done
- else
- # It does not exist, make a link to the livecd
- ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
- current_parent="${directory}"
- fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
- done # while read directory
- fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
- done # for x in ${ROOT_LINKS}
- mkdir -p initramfs proc tmp run sys 2>/dev/null
- chmod 1777 tmp
-
- fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- #XXX: end extremely confusing hunk
-
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
-
- fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
+ else
+ #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
+ if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
+ then
+ good_msg "Copying read-write image contents to tmpfs"
+ # Copy over stuff that should be writable
+ (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
+ bad_msg "Copying failed, dropping into a shell."
+ do_rundebugshell
+ }
+
+ # Now we do the links.
+ for x in ${ROOT_LINKS}
+ do
+ if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
+ then
+ ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
+ else
+ # List all subdirectories of x
+ find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
+ do
+ # Strip the prefix of the FS_LOCATION
+ directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
+
+ # Skip this directory if we already linked a parent directory
+ if [ "${current_parent}" != '' ]; then
+ var=$(echo "${directory}" | grep "^${current_parent}")
+ if [ "${var}" != '' ]; then
+ continue
+ fi
+ fi
+ # Test if the directory exists already
+ if [ -e "/${NEW_ROOT}/${directory}" ]
+ then
+ # It does exist, link all the individual files
+ for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
+ do
+ if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
+ ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
+ fi
+ done
+ else
+ # It does not exist, make a link to the livecd
+ ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
+ current_parent="${directory}"
+ fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
+ done # while read directory
+ fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
+ done # for x in ${ROOT_LINKS}
+ mkdir -p initramfs proc tmp run sys 2>/dev/null
+ chmod 1777 tmp
+
+ fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
+ #XXX: end extremely confusing hunk
+
+ # have handy /mnt/cdrom (CDROOT_PATH) as well
+ _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
+ [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
+ mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
+
+ fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
#UML=$(cat /proc/cpuinfo|grep UML|sed -e 's|model name.*: ||')
#if [ "${UML}" = 'UML' ]
@@ -928,18 +909,16 @@ FSTAB
# Let Init scripts know that we booted from CD
export CDBOOT
CDBOOT=1
-else # if [ "${CDROOT}" = '1' ]
+else
if [ "${USE_UNIONFS_NORMAL}" = '1' ]
then
mkdir /union_changes
mount -t tmpfs tmpfs /union_changes
setup_unionfs /union_changes ${NEW_ROOT}
mkdir -p ${UNION}/tmp/.initrd
- fi
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- union_insert_dir ${UNION} ${NEW_ROOT}
- mkdir -p ${UNION}/tmp/.initrd
+ elif [ 1 = "$USE_AUFS_NORMAL" ]; then
+ union_insert_dir "$UNION" "$NEW_ROOT"
+ mkdir -p "$UNION/tmp/.initrd"
fi
fi # if [ "${CDROOT}" = '1' ]
@@ -986,22 +965,20 @@ fi
verbose_kmsg
-if [ "${USE_AUFS_NORMAL}" -eq '1' ]
-then
- UNION_MEMORY=${CHROOT}/.unions/memory
+if [ 1 = "$USE_AUFS_NORMAL" ]; then
+ UNION_MEMORY=$CHROOT/.unions/memory
- mkdir -p "${UNION_MEMORY}"
- mount --move "${MEMORY}" "${UNION_MEMORY}"
+ mkdir -p "$UNION_MEMORY"
+ mount --move "$MEMORY" "$UNION_MEMORY"
test_success "Failed to move aufs /memory into the system root"
- for i in /mnt/gentoo /mnt/livecd /mnt/overlay ${CDROOT_PATH}
- do
- mkdir -p "${CHROOT}${i}"
- chmod 755 "${CHROOT}${i}"
+ for dir in /mnt/gentoo $rw_branch $ro_branch $CDROOT_PATH; do
+ mkdir -p "$CHROOT$dir"
+ chmod 755 "$CHROOT$dir"
done
- for i in ${CDROOT_PATH} ${overlay} ${static}; do
- mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
+ for dir in $CDROOT_PATH $rw_branch $ro_branch; do
+ mount --move "$NEW_ROOT$dir" "$CHROOT$dir"
done
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: adce982154f2139c47bf3514fd4d11424a00392d
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Tue Jun 3 00:46:43 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=adce9821
dokeymap implementation for AUFS's union
defaults/linuxrc | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 86b1954..da88bf0 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -868,6 +868,12 @@ then
fi
fi
+ # Copy user keymap file
+ if [ -e /etc/sysconfig/keyboard ]; then
+ [ ! -d ${CHROOT}/etc/sysconfig ] && mkdir -p ${CHROOT}/etc/sysconfig
+ cp /etc/sysconfig/keyboard ${CHROOT}/etc/sysconfig/
+ fi
+
# Create the directories for our new union mounts
test ! -d "${CHROOT}${NEW_ROOT}" && mkdir -p "${CHROOT}${NEW_ROOT}"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 482a092a86bd4889482cffc9004230a68bece1db
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Thu Jun 5 01:29:32 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=482a092a
Fixes a bug introduced by 8405e23 that broke none AUFS boots
defaults/initrd.defaults | 1 +
1 file changed, 1 insertion(+)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index b08ff50..2d79fc3 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -68,6 +68,7 @@ CDROOT_PATH='/mnt/cdrom'
CDROOT_MARKER='/livecd'
# AUFS variables
+USE_AUFS_NORMAL=0
AUFS_MODULES=false
AUFS_CHANGES=false
AUFS_CHANGESFILE=livecd.aufs
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 98da3645c1cd72895af0c9131db6024388f63af2
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Wed Jun 4 23:04:30 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=98da3645
This introduces changes to former commits d8e2d4d & 720a60f in
which there are fstab changes and tmpfs mounts which are combined
into one /etc/fstab instead.
defaults/linuxrc | 32 +++++++++++++-------------------
1 file changed, 13 insertions(+), 19 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index a6c4806..8b3ff87 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -794,9 +794,19 @@ then
# Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
conf_rc_no_umounts
- # Fstab change for aufs
- test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
- echo "aufs / aufs defaults 0 0" > "${CHROOT}"/etc/fstab
+ # Fstab changes for aufs
+ if ! grep -q '^aufs' "${CHROOT}"/etc/fstab 2>/dev/null; then
+ for i in /var/tmp /tmp /usr/portage/distfiles; do
+ [ ! -d "${CHROOT}${i}" ] && mkdir -p "${CHROOT}${i}"
+ done
+
+ cat > "${CHROOT}"/etc/fstab << FSTAB
+aufs / aufs defaults 0 0
+vartmp /var/tmp tmpfs defaults 0 0
+tmp /tmp tmpfs defaults 0 0
+distfiles /usr/portage/distfiles tmpfs defaults 0 0
+FSTAB
+ fi
if ${AUFS_MODULES}; then
warn_msg "Adding all modules in $MODULESD/modules/"
@@ -990,22 +1000,6 @@ then
chmod 755 "${CHROOT}${i}"
done
- # This will prevent from putting junk on the CHANGESDEV
- str=""
- for i in /tmp /var/tmp /usr/portage/distfiles
- do
- mkdir -p "${CHROOT}${i}"
- chmod 755 "${CHROOT}${i}"
-
- mount -t tmpfs tmpfs "${CHROOT}${i}"
- str="${i} ${str}"
- done
-
- warn_msg "${str}are mounted in ram"
- warn_msg "consider saving important files elsewhere"
-
- sleep 2
-
for i in ${CDROOT_PATH} ${overlay} ${static}; do
mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
done
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: a5f4045080278ac43d13ff79bfbad388055867c5
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Aug 4 01:23:02 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:33:04 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=a5f40450
Fixed a bug which prevented aufs.modules from functioning properly
and changed the variables names to reflect the actual logic.
defaults/initrd.defaults | 1 +
defaults/initrd.scripts | 17 ++++++++---------
defaults/linuxrc | 22 +++++++++++++---------
3 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 782fd14..f2cb42a 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -72,6 +72,7 @@ CDROOT_MARKER='/livecd'
# AUFS variables
aufs=0
aufs_union_file=/livecd.aufs
+aufs_modules_dir=mnt/cdrom
LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 5c7703b..d168b94 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -297,12 +297,12 @@ union_insert_dir() {
union_insert_modules() {
local module
- for module in "$NEW_ROOT/$1/modules/"*.mo; do
- union_mod "$module" || bad_msg "Unable to load module: '$module'"
+ for module in "$1/modules/"*.mo; do
+ union_mod "$module" || bad_msg "Unable to insert module: '$module'"
done
- for module in "$NEW_ROOT/$1/modules/"*.lzm; do
- union_mod "$module" lzm || bad_msg "Unable to load module: '$module'"
+ for module in "$1/modules/"*.lzm; do
+ union_mod "$module" || bad_msg "Unable to insert module: '$module'"
done
}
@@ -315,13 +315,12 @@ union_mod() {
mod=${1##*/}
mod=${mod%.*}
- mkdir -p "$aufs_memory/modules/$mod" || return
-
- if [ lzm = "$2" ]; then
- mount -o loop,ro "$1" "$aufs_memory/modules/$mod"
+ if [ ! -d "$aufs_union"/mnt/"$mod" ]; then
+ mkdir -p "$aufs_union"/mnt/modules/"$mod" || return
fi
- union_insert_dir "$aufs_union" "$aufs_memory/modules/$mod"
+ mount -o loop,ro "$1" "$aufs_union"/mnt/modules/"$mod"
+ union_insert_dir "$aufs_union" "$aufs_union"/mnt/modules/"$mod"
}
# Implements RC_NO_UMOUNTS variable into $CHROOT/etc/rc.conf for a cleaner shutdown process
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 3098866..951f5e1 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -265,7 +265,7 @@ do
;;
# Allow user to specify the modules location
aufs.modules\=*)
- aufs_modules_dev=${x#*=}
+ aufs_modules_dir=${x#*=}
aufs_modules=1
;;
unionfs)
@@ -786,16 +786,20 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
- # When aufs.modules= is used
- if [ 1 = "$aufs_modules" ]; then
- warn_msg "Adding all modules in $aufs_modules_dev/modules/"
+ # When aufs.modules= is used or $CDROOT_PATH/modules
+ # directory is available
+ if [[ 1 = "$aufs_modules" || -d $CDROOT_PATH/modules ]]; then
+ warn_msg "Adding all modules in $aufs_modules_dir/modules/"
- if [ -z "$aufs_modules_dev" ]; then
+ if [ mnt/cdrom = "$aufs_modules_dir" ]; then
union_insert_modules "$CDROOT_PATH"
- else
- mkdir "$NEW_ROOT/mnt/modulesd"
- mount "$aufs_modules_dev" "$NEW_ROOT/mnt/modulesd"
- union_insert_modules "$NEW_ROOT/mnt/modulesd"
+ elif [ ! -b "$aufs_modules_dir" ]; then
+ bad_msg "$aufs_modules_dir is not a valid block device"
+ bad_msg "aborting modules insert into $aufs_union"
+ else
+ mkdir /mnt/modules
+ mount "$aufs_modules_dir" /mnt/modules
+ union_insert_modules /mnt/modules
fi
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 075da3bc84ffec2a39d70f9bb155f1ecbe03a963
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Tue Jun 24 22:36:40 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=075da3bc
Reverting back old mknod permission settings for netboot compatibility
defaults/initrd.scripts | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 02842bf..9b88d6a 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -205,10 +205,10 @@ bootstrapFS() {
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
+ [ ! -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
# For SGI LiveCDs
if [ "${LOOPTYPE}" = "sgimips" ]; then
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: b4d40c20a5cb327540ea2f7d84f818b39b8657dc
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Wed Jun 25 16:12:11 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=b4d40c20
This is commit contains several changes summarized below.
1. Changed renaming of RC_NO_UMOUNTS directories
2. Upper to lowercase variables because this is the year 2014
3. Renamed aufs related variables for better readability
4. Fixed a typo in mke2fs command which was missing an "&"
5. Cleaned up setup_squashfs_aufs() function
6. Fixed an issue with legacy squashfs implementation which caused
/mnt/cdrom to be shown twice in 'mount' and removed the --bind and
replaced this with --move
7. Restructured the union_* functions so that we don't parse 'ls'
and enabled globbing
8. Coding style changes
- rid of the unnecessary braces
- fix a missing & for mke2fs on livecd.aufs
- renamed variables for more readabilit
9. Better error handling for changesfs()
10. Removed aufs.persistent since 'aufs' already mounts a tmpfs which
uses half the available ram, and since this feature is not true
persistent we remove it in favor of aufs=<DEV>
defaults/initrd.defaults | 10 +--
defaults/initrd.scripts | 208 ++++++++++++++++++++++++-----------------------
defaults/linuxrc | 151 +++++++++++++++++-----------------
3 files changed, 185 insertions(+), 184 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index 17847fe..782fd14 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -12,6 +12,8 @@ BAD="\033[31;1m"
BOLD="\033[1m"
GOOD="\033[32;1m"
+# Sets the default collation order
+LC_COLLATE=C
# From KNOPPIX LINUXRC
# Reset fb color mode
RESET="^[]R"
@@ -58,7 +60,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
-RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/rw_branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"
+RC_NO_UMOUNTS='/newroot|/mnt/aufs-dev|/mnt/aufs-rw-branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino'
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
@@ -68,10 +70,8 @@ CDROOT_PATH='/mnt/cdrom'
CDROOT_MARKER='/livecd'
# AUFS variables
-USE_AUFS_NORMAL=0
-AUFS_MODULES=false
-AUFS_CHANGES=false
-AUFS_CHANGESFILE=/livecd.aufs
+aufs=0
+aufs_union_file=/livecd.aufs
LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 9b88d6a..2e48504 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -178,20 +178,20 @@ devicelist(){
}
bootstrapFS() {
- if [ "${USE_AUFS_NORMAL}" -eq '1' ]; then
- # Directories used for rw changes in union mount filesystem
- UNION=/union MEMORY=/memory
+ if [ 1 = "$aufs" ]; then
+ # Directories used for rw aufs mount filesystem
+ aufs_union=/union aufs_memory=/memory
- # Mountpoint for the changesdev
- CHANGESMNT=${NEW_ROOT}/mnt/changesdev
+ # Mountpoint for the aufs dev
+ aufs_dev_mnt=/mnt/aufs-dev
- if [ -z "$UID" ]; then
- CHANGES=${MEMORY}/aufs_changes/default
+ if [ -z "$aufs_dev_uid" ]; then
+ aufs_branch=$aufs_memory/aufs-branch/default
else
- CHANGES=${MEMORY}/aufs_changes/${UID}
+ aufs_branch=$aufs_memory/aufs-branch/$aufs_dev_uid
fi
- mkdir -p ${MEMORY} ${UNION} ${CHANGESMNT}
+ mkdir -p $aufs_memory $aufs_union $aufs_dev_mnt
else
# Legacy SquashFS implementation
good_msg "Making tmpfs for ${NEW_ROOT}"
@@ -280,37 +280,51 @@ mount_sysfs() {
[ ${ret} -eq 0 ] || bad_msg "Failed to mount /sys!"
}
-# Insert a directory tree ${2} to an union specified by ${1}
+# Insert a directory tree $2 to an union specified by $1
# Top-level read-write branch is specified by it's index 0
-# ${1} = union absolute path (starting with /)
-# ${2} = path to data directory
+# $1 = union absolute path (starting with /)
+# $2 = path to data directory
#
union_insert_dir() {
# Always mount it over the precedent (add:1:)
- mount -n -o remount,add:1:${2}=rr aufs ${1}
- if [ $? = '0' ]
- then
- good_msg "Addition of ${2} to ${1} successful"
+ if mount -n -o "remount,add:1:$2=rr" aufs "$1"; then
+ good_msg "Addition of $2 to $1 successful"
fi
}
-# Insert all modules found in $1, usually ${CDROOT_PATH}
+# Insert all modules found in $1, usually $CDROOT_PATH
# added to allow users to add their own apps.
union_insert_modules() {
- for module in $(ls ${NEW_ROOT}/${1}/modules/*.mo 2>/dev/null| sort)
- do
- mkdir -p ${MEMORY}/modules/$(basename ${module} .mo)
- union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .mo)
- done
- for module in $(ls ${NEW_ROOT}/${1}/modules/*.lzm 2>/dev/null| sort)
- do
- mkdir -p ${MEMORY}/modules/$(basename ${module} .lzm)
- mount -o loop,ro ${module} ${MEMORY}/modules/$(basename ${module} .lzm)
- union_insert_dir $UNION ${MEMORY}/modules/$(basename ${module} .lzm)
- done
+ local module
+
+ for module in "$NEW_ROOT/$1/modules/"*.mo; do
+ union_mod "$module" || bad_msg "Unable to load module: '$module'"
+ done
+
+ for module in "$NEW_ROOT/$1/modules/"*.lzm; do
+ union_mod "$module" lzm || bad_msg "Unable to load module: '$module'"
+ done
}
-# Implements RC_NO_UMOUNTS variable into ${CHROOT}/etc/rc.conf for a cleaner shutdown process
+# Helper function for union_insert_modules()
+union_mod() {
+ [ -e "$1" ] || return 0
+
+ local mod
+
+ mod=${1##*/}
+ mod=${mod%.*}
+
+ mkdir -p "$aufs_memory/modules/$mod" || return
+
+ if [ lzm = "$2" ]; then
+ mount -o loop,ro "$1" "$aufs_memory/modules/$mod"
+ fi
+
+ union_insert_dir "$aufs_union" "$aufs_memory/modules/$mod"
+}
+
+# Implements RC_NO_UMOUNTS variable into $CHROOT/etc/rc.conf for a cleaner shutdown process
# This should really go into /etc/init.d/localmounts but until then we manually set this here
conf_rc_no_umounts() {
local conf nomount fnd
@@ -357,7 +371,7 @@ is_int(){
done
}
-# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
+# Function to create an ext2 fs on $aufs_dev, $aufs_dev_mnt mountpoint
create_changefs() {
local size
@@ -372,102 +386,98 @@ create_changefs() {
elif [ 15 -ge "$size" ]; then
bad_msg "Please give a size of at least 16 Megabytes"
else
- if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" bs=1M count="$size" &>/dev/null; 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
+ if dd if=/dev/zero "of=$aufs_dev_mnt$aufs_union_file" bs=1M count="$size" &>/dev/null; then
+ good_msg "Creation of $aufs_union_file, ${size}Mb on $aufs_dev successful, formatting it ext2"
+ mke2fs -F "$aufs_dev_mnt$aufs_union_file" &>/dev/null
break
else
- rm -f "$CHANGESMNT$AUFS_CHANGESFILE"
- bad_msg "Unable to create ${AUFS_CHANGESFILE#*/} on $CHANGESDEV of ${size}Mb"
+ rm "$aufs_dev_mnt$aufs_union_file"
+ bad_msg "Unable to create ${aufs_union_file#*/} on $aufs_dev of ${size}Mb"
bad_msg "Ensure your disk is not full or read-only"
read -p '<< Type "a" to abort, anything else to continue : ' doabort
- if [ a = "$doabort" ]; then return 1; fi
+ if [ a = "$doabort" ]; then
+ bad_msg "Aborting creation of $aufs_union_file!"
+ umount "$aufs_dev" && rmdir "$aufs_dev_mnt"
+ return 1
+ fi
fi
fi
done
- return 0
+ return $?
}
setup_aufs() {
bootstrapCD
- if [ -n "$AUFS" ]; then
- if [ detect = "$AUFS" ]; then
- CHANGESMNT=$NEW_ROOT$CDROOT_PATH
- CHANGESDEV=$REAL_ROOT
- else
- CHANGESDEV=$AUFS
- good_msg "Mounting $CHANGESDEV to $MEMORY for aufs support"
+ if [ -n "$aufs_dev" ]; then
+ good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
- if ! mount -t auto "$CHANGESDEV" "$CHANGESMNT" &>/dev/null; then
- bad_msg "Mount of $CHANGESDEV failed, falling back to ramdisk based aufs"
- unset AUFS
- fi
+ if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
+ bad_msg "Mount of $aufs_dev failed, falling back to ramdisk based aufs"
+ unset aufs_dev
fi
- # Check and attempt to create the changesfile
- if [ ! -e $CHANGESMNT$AUFS_CHANGESFILE ] && [ -n "$AUFS" ]; then
- create_changefs
- mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY"
- elif [ -n "$AUFS" ]; then
- while :; do
- if mount -t auto "$CHANGESMNT$AUFS_CHANGESFILE" "$MEMORY" &>/dev/null; then
+ # Check and attempt to create the AUFS union file
+ if [ ! -e $aufs_dev_mnt$aufs_union_file ] && [ -n "$aufs_dev" ]; then
+ create_changefs && mount -t auto "$aufs_dev_mnt$aufs_union_file" "$aufs_memory"
+ elif [ -n "$aufs_dev" ]; then
+ while :; do
+ if mount -t auto "$aufs_dev_mnt$aufs_union_file" "$aufs_memory" &>/dev/null; then
break
else
bad_msg "Mounting of changes file failed, Running e2fsck"
if ! hash e2fsck &>/dev/null; then
bad_msg "/sbin/e2fsck not found! aborting filesystem check"
- bad_msg "Moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+ bad_msg "Moving ${aufs_union_file#*/} to ${aufs_union_file#*/}.bad"
- mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
+ mv "$aufs_dev_mnt$aufs_union_file" "$aufs_dev_mnt$aufs_union_file.bad"
break
-
fi
- if e2fsck "$CHANGESMNT$AUFS_CHANGESFILE" &>/dev/null; then
+ if e2fsck "$aufs_dev_mnt$aufs_union_file" &>/dev/null; then
good_msg "e2fsck ran successfully. Please verify data after bootup"
else
- bad_msg "Your ${AUFS_CHANGESFILE#*/} image might be corrupted"
- bad_msg "moving ${AUFS_CHANGESFILE#*/} to ${AUFS_CHANGESFILE#*/}.bad"
+ bad_msg "Your ${aufs_union_file#*/} image might be corrupted"
+ bad_msg "moving ${aufs_union_file#*/} to ${aufs_union_file#*/}.bad"
- mv "$CHANGESMNT$AUFS_CHANGESFILE" "$CHANGESMNT$AUFS_CHANGESFILE.bad"
- break
- fi
- fi
- done
- fi
- # mount tmpfs only in the case when changes= boot parameter was
- # empty or we were not able to mount the storage device
- if [ 1 = "$CDROOT" ] && [ ! -f "$CHANGESMNT$AUFS_CHANGESFILE" ]; then
- XINO=$MEMORY
- umount "$MEMORY" &>/dev/null
+ mv "$aufs_dev_mnt$aufs_union_file" "$aufs_dev_mnt$aufs_union_file.bad"
+ break
+ fi
+ fi
+ done
+ fi
+
+ # Mount tmpfs only in the case when aufs= boot parameter was
+ # empty or we were not able to mount the storage device
+ if [ 1 = "$CDROOT" ] && [ ! -f "$aufs_dev_mnt$aufs_union_file" ]; then
+ aufs_xino=$aufs_memory
+ umount "$aufs_memory" &>/dev/null
- bad_msg "Create an extfs ${AUFS_CHANGESFILE#*/} file on this device"
+ bad_msg "Create an extfs ${aufs_union_file#*/} file on this device"
bad_msg "if you wish to have aufs data persistency on reboots"
- bad_msg "Falling back to ramdisk based aufs"
- good_msg "Mounting ramdisk to $MEMORY for aufs support"
+ bad_msg "Falling back to ramdisk based aufs"
+ good_msg "Mounting ramdisk to $aufs_memory for aufs support"
- mount -t tmpfs tmpfs "$MEMORY"
- else
- XINO=$MEMORY/xino
+ mount -t tmpfs tmpfs "$aufs_memory"
+ else
+ aufs_xino=$aufs_memory/xino
- mkdir -p "$XINO"
- mount -t tmpfs aufs-xino "$XINO"
- fi
- else
- XINO=$MEMORY
+ mkdir -p "$aufs_xino"
+ mount -t tmpfs aufs-xino "$aufs_xino"
+ fi
+ else
+ aufs_xino=$aufs_memory
- good_msg "Mounting ramdisk to $MEMORY for aufs support"
- mount -t tmpfs tmpfs "$MEMORY"
- fi
+ good_msg "Mounting ramdisk to $aufs_memory for aufs support"
+ mount -t tmpfs tmpfs "$aufs_memory"
+ fi
- mkdir -p "$CHANGES"
- if ! mount -t aufs -n -o "nowarn_perm,udba=none,xino=$XINO/.aufs.xino,br:$CHANGES=rw" aufs "$UNION"; then
- bad_msg "Can't setup union $UNION in directory!"
- USE_AUFS_NORMAL=0
+ mkdir -p "$aufs_branch"
+ if ! mount -t aufs -n -o "nowarn_perm,udba=none,xino=$aufs_xino/.aufs.xino,br:$aufs_branch=rw" aufs "$aufs_union"; then
+ bad_msg "Can't setup union $aufs_union in directory!"
+ aufs=0
fi
}
@@ -1420,24 +1430,18 @@ getdvhoff() {
setup_squashfs_aufs() {
# Setup aufs directories and vars
- rw_branch=/mnt/rw_branch ro_branch=/mnt/livecd
+ aufs_rw_branch=/mnt/aufs-rw-branch aufs_ro_branch=/mnt/livecd
- for dir in $rw_branch $ro_branch; do
+ for dir in $aufs_rw_branch $aufs_ro_branch; do
[ ! -d $dir ] && mkdir -p "$dir"
done
good_msg "Loading aufs module ..."
modprobe aufs &>/dev/null
- mount -t squashfs -o loop,ro "$CDROOT_PATH/$LOOPEXT$LOOP" "$ro_branch"
- mount -t tmpfs none "$rw_branch"
- mount -t aufs -o "br:$rw_branch:$ro_branch" aufs "$NEW_ROOT"
-
- [ ! -d $NEW_ROOT$rw_branch ] && mkdir -p "$NEW_ROOT$rw_branch"
- [ ! -d $NEW_ROOT$ro_branch ] && mkdir -p "$NEW_ROOT$ro_branch"
- for mount in $rw_branch $ro_branch; do
- mount --move "$mount" "$NEW_ROOT$mount"
- done
+ mount -t squashfs -o loop,ro "$CDROOT_PATH/$LOOPEXT$LOOP" "$aufs_ro_branch"
+ mount -t tmpfs none "$aufs_rw_branch"
+ mount -t aufs -o "br:$aufs_rw_branch:$aufs_ro_branch" aufs "$NEW_ROOT"
}
setup_unionfs() {
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 5a341af..276f150 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -251,26 +251,22 @@ do
keymap=${x#*=}
;;
aufs)
- USE_AUFS_NORMAL=1
+ aufs=1
;;
aufs\=*)
- USE_AUFS_NORMAL=1
+ aufs=1
if echo "${x#*=}" | grep , &>/dev/null; then
- UID=${x#*,}
- AUFS=${x%,*}
+ aufs_dev_uid=${x#*,}
+ aufs_dev=${x%,*}
else
- AUFS=${x#*=}
+ aufs_dev=${x#*=}
fi
;;
- aufs.persistent)
- USE_AUFS_NORMAL=1
- AUFS=detect
- ;;
# Allow user to specify the modules location
aufs.modules\=*)
- MODULESD=${x#*=}
- AUFS_MODULES=true
+ aufs_modules_dev=${x#*=}
+ aufs_modules=1
;;
unionfs)
if [ ! -x /sbin/unionfs ]
@@ -447,14 +443,14 @@ then
# Setup the root filesystem
bootstrapFS
- if [ 1 = "$USE_AUFS_NORMAL" ]; then
+ if [ 1 = "$aufs" ]; then
setup_aufs
- CHROOT=$UNION
+ CHROOT=$aufs_union
else
CHROOT=${NEW_ROOT}
fi
- if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$USE_AUFS_NORMAL" ]; then
+ if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$aufs" ]; then
bootstrapCD
fi
@@ -704,7 +700,7 @@ then
FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'squashfs' ]
then
- if [ 1 != "$USE_AUFS_NORMAL" ]; then
+ if [ 1 != "$aufs" ]; then
good_msg 'Mounting squashfs filesystem'
_CACHED_SQUASHFS_PATH="${NEW_ROOT}/mnt/${LOOP}"
_squashfs_path="${CDROOT_PATH}/${LOOPEXT}${LOOP}" # Default to uncached
@@ -766,10 +762,10 @@ then
fi
fi # if [ -n "${CRYPT_ROOT}" ]
- if [ 1 = "$USE_AUFS_NORMAL" ]; then
- union_insert_dir "$CHROOT" "$NEW_ROOT/$FS_LOCATION"
+ if [ 1 = "$aufs" ]; then
+ union_insert_dir "$CHROOT" "$aufs_ro_branch"
- # Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
+ # Function to handle the RC_NO_UMOUNTS variable in $CHROOT/etc/rc.conf
conf_rc_no_umounts
# Fstab changes for aufs
@@ -780,7 +776,7 @@ then
cat > "$CHROOT/etc/fstab" << FSTAB
####################################################
-## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
+## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
## PLEASE EDIT THE FSTAB at /mnt/gentoo/etc/fstab ##
####################################################
aufs / aufs defaults 0 0
@@ -790,14 +786,14 @@ distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
- if $AUFS_MODULES; then
- warn_msg "Adding all modules in $MODULESD/modules/"
+ if [ 1 = "$aufs_modules" ]; then
+ warn_msg "Adding all modules in $aufs_modules_dev/modules/"
- if [ -z "$MODULESD" ]; then
+ if [ -z "$aufs_modules_dev" ]; then
union_insert_modules "$CDROOT_PATH"
else
mkdir "$NEW_ROOT/mnt/modulesd"
- mount "$MODULESD" "$NEW_ROOT/mnt/modulesd"
+ mount "$aufs_modules_dev" "$NEW_ROOT/mnt/modulesd"
union_insert_modules "$NEW_ROOT/mnt/modulesd"
fi
fi
@@ -808,11 +804,13 @@ FSTAB
cp /etc/sysconfig/keyboard "$CHROOT/etc/sysconfig/"
fi
- # Create the directories for our new union mounts
+ # Create the diuectories for our new union mounts
[ ! -d $CHROOT$NEW_ROOT ] && mkdir -p "$CHROOT$NEW_ROOT"
- if $AUFS_CHANGES && [ ! -d $CHROOT$NEW_ROOT/mnt/changesdev ]; then
- mkdir -p "$CHROOT$NEW_ROOT/mnt/changesdev"
+ # Check to see if we successfully mounted $aufs_dev
+ if [ -n "$aufs_dev" ] && grep $aufs_dev /etc/mtab 1>/dev/null; then
+ [ ! -d $CHROOT$aufs_dev_mnt ] && mkdir -p "$CHROOT$aufs_dev_mnt"
+ mount --move "$aufs_dev_mnt" "$CHROOT$aufs_dev_mnt"
fi
fi
@@ -833,31 +831,30 @@ FSTAB
fi
- if [ "${USE_UNIONFS_NORMAL}" = '1' ]
- then
+ if [ "${USE_UNIONFS_NORMAL}" = '1' ]; then
setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union
- else
- #XXX Note to potential reviewers. diff formats this section very very oddly. Be sure to review this hunk after applied, do NOT simply read the diff
- if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- then
- good_msg "Copying read-write image contents to tmpfs"
- # Copy over stuff that should be writable
- (cd "${NEW_ROOT}/${FS_LOCATION}"; cp -a ${ROOT_TREES} "${NEW_ROOT}") || {
- bad_msg "Copying failed, dropping into a shell."
- do_rundebugshell
- }
-
- # Now we do the links.
- for x in ${ROOT_LINKS}
- do
- if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]
- then
- ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
- else
- # List all subdirectories of x
- find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null | while read directory
- do
+ elif [ 1 != "$aufs" ]; then
+ good_msg "Copying read-write image contents to tmpfs"
+
+ # Copy over stuff that should be writable
+ (
+ cd "${NEW_ROOT}/${FS_LOCATION}"
+ cp -a ${ROOT_TREES} "${NEW_ROOT}"
+ ) ||
+ {
+ bad_msg "Copying failed, dropping into a shell."
+ do_rundebugshell
+ }
+
+ # Now we do the links.
+ for x in ${ROOT_LINKS}; do
+ if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ]; then
+ ln -s "$(readlink ${NEW_ROOT}/${FS_LOCATION}/${x})" "${x}" 2>/dev/null
+ else
+ # List all subdirectories of x
+ find "${NEW_ROOT}/${FS_LOCATION}/${x}" -type d 2>/dev/null |
+ while read directory; do
# Strip the prefix of the FS_LOCATION
directory="${directory#${NEW_ROOT}/${FS_LOCATION}/}"
@@ -869,11 +866,9 @@ FSTAB
fi
fi
# Test if the directory exists already
- if [ -e "/${NEW_ROOT}/${directory}" ]
- then
+ if [ -e "/${NEW_ROOT}/${directory}" ]; then
# It does exist, link all the individual files
- for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory})
- do
+ for file in $(ls /${NEW_ROOT}/${FS_LOCATION}/${directory}); do
if [ ! -d "/${NEW_ROOT}/${FS_LOCATION}/${directory}/${file}" ] && [ ! -e "${NEW_ROOT}/${directory}/${file}" ]; then
ln -s "/${FS_LOCATION}/${directory}/${file}" "${directory}/${file}" 2> /dev/null
fi
@@ -882,22 +877,24 @@ FSTAB
# It does not exist, make a link to the livecd
ln -s "/${FS_LOCATION}/${directory}" "${directory}" 2>/dev/null
current_parent="${directory}"
- fi # if [ -e "/${NEW_ROOT}/${directory}" ] ... else
- done # while read directory
- fi # if [ -L "${NEW_ROOT}/${FS_LOCATION}/${x}" ] ... else
- done # for x in ${ROOT_LINKS}
- mkdir -p initramfs proc tmp run sys 2>/dev/null
- chmod 1777 tmp
+ fi
+ done
+ fi
+ done
- fi # if [ ! "${USE_AUFS_NORMAL}" -eq '1' ]
- #XXX: end extremely confusing hunk
+ mkdir -p initramfs proc tmp run sys 2>/dev/null
+ chmod 1777 tmp
- # have handy /mnt/cdrom (CDROOT_PATH) as well
- _new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
- [ ! -d "${_new_cdroot}" ] && mkdir -p "${_new_cdroot}"
- mount --bind "${CDROOT_PATH}" "${_new_cdroot}"
+ fi
- fi # if [ "${USE_UNIONFS_NORMAL}" = '1' ] ... else
+ # Have handy /mnt/cdrom (CDROOT_PATH) as well
+ if [ 1 = "$aufs" ]; then
+ [ ! -d "$CHROOT$CDROOT_PATH" ] && mkdir "$CHROOT$CDROOT_PATH"
+ mount --move "$CDROOT_PATH" "$CHROOT$CDROOT_PATH"
+ else
+ [ ! -d "$NEW_ROOT$CDROOT_PATH" ] && mkdir -p "$NEW_ROOT$CDROOT_PATH"
+ mount --move "$CDROOT_PATH" "$NEW_ROOT$CDROOT_PATH"
+ fi
#UML=$(cat /proc/cpuinfo|grep UML|sed -e 's|model name.*: ||')
#if [ "${UML}" = 'UML' ]
@@ -916,9 +913,9 @@ else
mount -t tmpfs tmpfs /union_changes
setup_unionfs /union_changes ${NEW_ROOT}
mkdir -p ${UNION}/tmp/.initrd
- elif [ 1 = "$USE_AUFS_NORMAL" ]; then
- union_insert_dir "$UNION" "$NEW_ROOT"
- mkdir -p "$UNION/tmp/.initrd"
+ elif [ 1 = "$aufs" ]; then
+ union_insert_dir "$aufs_union" "$NEW_ROOT"
+ mkdir -p "$aufs_union/tmp/.initrd"
fi
fi # if [ "${CDROOT}" = '1' ]
@@ -965,20 +962,20 @@ fi
verbose_kmsg
-if [ 1 = "$USE_AUFS_NORMAL" ]; then
- UNION_MEMORY=$CHROOT/.unions/memory
+if [ 1 = "$aufs" ]; then
+ aufs_union_memory=$CHROOT/.unions/memory
- mkdir -p "$UNION_MEMORY"
- mount --move "$MEMORY" "$UNION_MEMORY"
- test_success "Failed to move aufs /memory into the system root"
+ mkdir -p "$aufs_union_memory"
+ mount --move "$aufs_memory" "$aufs_union_memory"
+ test_success "Failed to move aufs $aufs_memory into the system root"
- for dir in /mnt/gentoo $rw_branch $ro_branch $CDROOT_PATH; do
+ for dir in /mnt/gentoo $aufs_rw_branch $aufs_ro_branch; do
mkdir -p "$CHROOT$dir"
chmod 755 "$CHROOT$dir"
done
- for dir in $CDROOT_PATH $rw_branch $ro_branch; do
- mount --move "$NEW_ROOT$dir" "$CHROOT$dir"
+ for mount in $aufs_rw_branch $aufs_ro_branch; do
+ mount --move "$mount" "$CHROOT$mount"
done
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 2eae1bbb0da75bec6d38b98c97a3de3a3365f901
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Jun 23 20:03:36 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=2eae1bbb
Introduced a new funtion to test for numeric values that that our changes_fs doesn't fail
when non-numeric values are given, also the styling of changes_fs was changed to
reflect new logic.
defaults/initrd.scripts | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index c258c00..02842bf 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -345,6 +345,18 @@ conf_rc_no_umounts() {
fi
}
+# is_int "$A" ["$B"..]
+# NOTE we consider a leading 0 false as it would be interpreted as octal
+is_int(){
+ local i
+ for i; do
+ case $i in
+ ''|*[!0-9]*|0?*) return 1 ;;
+ *) :
+ esac
+ done
+}
+
# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
create_changefs() {
local size
@@ -352,11 +364,12 @@ create_changefs() {
while :; do
read -p '<< Size of file (Press Enter for default 256 Mb): ' size
- [ -n "$size" ] || size=256
-
- size=$size
+ size=${size:-256}
- if [ 15 -ge "$size" ]; then
+ if ! is_int $size; then
+ bad_msg "Non numeric value given for size, try again"
+ continue
+ elif [ 15 -ge "$size" ]; then
bad_msg "Please give a size of at least 16 Megabytes"
else
if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" bs=1M count="$size" &>/dev/null; then
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 09cce549319068807b9e1dba7a3ad3160da3f160
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Jun 2 15:19:23 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=09cce549
This improves the way we handle RC_NO_UMOUNT variable in openrc so that
future changes can scale and fixes previous bugs which didn't actually
remove duplicates.
defaults/linuxrc | 43 +++++++++++++++++++++++++++++--------------
1 file changed, 29 insertions(+), 14 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 42749d6..86b1954 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -816,24 +816,39 @@ then
# RC_NO_UMOUNTS variable for a clean shutdown/reboot
RC_MOUNTS=$(grep 'RC_NO_UMOUNTS' "${CHROOT}"/etc/rc.conf)
- RESULTS=false
# Iterate through ${RC_MOUNTS} to find our duplicate(s) and or remove obsolete lines when ever
# our RC_NO_UMOUNTS variable changes.
- printf '%s\n' ${RC_MOUNTS} | while read -r mount; do
- if [[ "${mount}" = "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"" ]]; then
- RESULTS=true
- else
- # Escape characters in ${mounts} for use in sed
- mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
-
- # Remove non matching pattern
- sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
- fi
- done
+ if [ -n "${RC_MOUNTS}" ]; then
+ printf '%s\n' ${RC_MOUNTS} |
+ {
+ while read -r mount; do
+ # Remove double quotes from ${mount}
+ new_mount=$(echo ${mount} | sed 's/"//g')
+
+ if [[ "${new_mount}" = "RC_NO_UMOUNTS="${RC_NO_UMOUNTS}"" ]]; then
+ RESULTS=false
+ else
+ # Escape characters in ${mounts} for use in sed
+ mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
+
+ # Remove non matching pattern
+ sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
+
+ RESULTS=true
+ fi
+ done
+
+ # no RC_NO_UMOUNTS match found
+ if ${RESULTS}; then return 1;fi
+ }
+ else
+ echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
+ fi
- if ! ${RESULTS}; then
- echo 'RC_NO_UMOUNTS="/newroot|/newroot/mnt/changesdev|/mnt/overlay|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino"'>> "${CHROOT}"/etc/rc.conf
+ # An RC_NO_UMOUNTS was not found that matches our current one
+ if [ $? -eq 1 ]; then
+ echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
fi
# Fstab change for aufs
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 75fe8bf4d8eb452cbd866140f76e847666f30598
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: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=75fe8bf4
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 fe563fe..eb5ed6a 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
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: aa073bf7ee057fa5d7b1643ccb25618162c2bbd6
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Tue Jun 3 17:48:14 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=aa073bf7
Better implementation which was originally done in 946918e & 7a38d63.
defaults/initrd.scripts | 36 ++++++++++++++++++++++++++++++++++++
defaults/linuxrc | 38 ++------------------------------------
2 files changed, 38 insertions(+), 36 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index eb5ed6a..91056b1 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -310,6 +310,42 @@ union_insert_modules() {
done
}
+# Implements RC_NO_UMOUNTS variable into ${CHROOT}/etc/rc.conf for a cleaner shutdown process
+# This should really go into /etc/init.d/localmounts but until then we manually set this here
+conf_rc_no_umounts() {
+ local conf nomount fnd
+ conf="${CHROOT}/etc/rc.conf"
+ fnd=0
+
+ if nomount=$(grep -n '^[[:blank:]]*RC_NO_UMOUNTS=' $conf); then
+ local i n data cmd IFS
+ IFS='
+'
+ set -- $nomount
+ unset IFS
+
+ for i; do
+ n=${i%%:*}; i=${i#"$n"}
+ data=${i#*=}
+
+ case $data in
+ "\"$RC_NO_UMOUNTS\""|"'$RC_NO_UMOUNTS'") fnd=1;;
+ *) cmd="$cmd$n d;"
+ esac
+ done
+
+ if [ -n "$cmd" ]; then
+ sed -i "${cmd%;}" $conf
+ test_success "Unable to edit rc.conf"
+ fi
+ fi
+
+ if [ 0 -eq "$fnd" ]; then
+ printf 'RC_NO_UMOUNTS="%s"\n' "$RC_NO_UMOUNTS" >> $conf
+ test_success "Unable to write to rc.conf"
+ fi
+}
+
# Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
create_changefs() {
local size
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 0e40d16..a6c4806 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -791,42 +791,8 @@ then
#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
- RC_MOUNTS=$(grep 'RC_NO_UMOUNTS' "${CHROOT}"/etc/rc.conf)
-
- # Iterate through ${RC_MOUNTS} to find our duplicate(s) and or remove obsolete lines when ever
- # our RC_NO_UMOUNTS variable changes.
- if [ -n "${RC_MOUNTS}" ]; then
- printf '%s\n' ${RC_MOUNTS} |
- {
- while read -r mount; do
- # Remove double quotes from ${mount}
- new_mount=$(echo ${mount} | sed 's/"//g')
-
- if [[ "${new_mount}" = "RC_NO_UMOUNTS="${RC_NO_UMOUNTS}"" ]]; then
- RESULTS=false
- else
- # Escape characters in ${mounts} for use in sed
- mount_re=$(echo ${mount} | sed -e 's/\//\\\//g' -e 's/\&/\\\&/g')
-
- # Remove non matching pattern
- sed -i "/${mount_re}/d" "${CHROOT}"/etc/rc.conf
-
- RESULTS=true
- fi
- done
-
- # no RC_NO_UMOUNTS match found
- if ${RESULTS}; then return 1;fi
- }
- else
- echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
- fi
-
- # An RC_NO_UMOUNTS was not found that matches our current one
- if [ $? -eq 1 ]; then
- echo "RC_NO_UMOUNTS=\"${RC_NO_UMOUNTS}\"">> "${CHROOT}"/etc/rc.conf
- fi
+ # Function to handle the RC_NO_UMOUNTS variable in ${CHROOT}/etc/rc.conf
+ conf_rc_no_umounts
# Fstab change for aufs
test ! $(grep -o ^aufs "${CHROOT}"/etc/fstab) &&
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 064e285bbe80b527b6a53256382fd40beea0de5b
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Fri May 30 02:57:13 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:31:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=064e285b
coding style changes
defaults/linuxrc | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 281de8e..42749d6 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -1014,26 +1014,34 @@ verbose_kmsg
if [ "${USE_AUFS_NORMAL}" -eq '1' ]
then
- mkdir -p /${CHROOT}/.unions/memory
- mount -o move /memory /${CHROOT}/.unions/memory
+ UNION_MEMORY=${CHROOT}/.unions/memory
+
+ mkdir -p "${UNION_MEMORY}"
+ mount --move "${MEMORY}" "${UNION_MEMORY}"
test_success "Failed to move aufs /memory into the system root"
- for i in mnt/gentoo mnt/livecd /mnt/overlay ${CDROOT_PATH}
+
+ for i in /mnt/gentoo /mnt/livecd /mnt/overlay ${CDROOT_PATH}
do
- mkdir -p ${CHROOT}/$i
- chmod 755 ${CHROOT}/$i
+ mkdir -p "${CHROOT}${i}"
+ chmod 755 "${CHROOT}${i}"
done
+
# This will prevent from putting junk on the CHANGESDEV
str=""
- for i in tmp var/tmp usr/portage/distfiles
+ for i in /tmp /var/tmp /usr/portage/distfiles
do
- mkdir -p ${CHROOT}/$i
- chmod 755 ${CHROOT}/$i
- mount -t tmpfs tmpfs ${CHROOT}/$i
- str="${str} ${i}"
+ mkdir -p "${CHROOT}${i}"
+ chmod 755 "${CHROOT}${i}"
+
+ mount -t tmpfs tmpfs "${CHROOT}${i}"
+ str="${i} ${str}"
done
+
warn_msg "${str}are mounted in ram"
warn_msg "consider saving important files elsewhere"
- read -t 3 UNUSEDVAL
+
+ sleep 2
+
for i in ${CDROOT_PATH} ${overlay} ${static}; do
mount --move ${NEW_ROOT}${i} ${CHROOT}${i}
done
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 3ad1b69ab16292a28f03ed457e95ba221db7d654
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Sun Aug 17 00:18:36 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:33:04 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=3ad1b69a
restructure no_umounts from being set in /etc/rc.conf to /etc/conf.d/localmount
defaults/initrd.defaults | 2 +-
defaults/initrd.scripts | 15 +++++++--------
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults
index f2cb42a..f6fd564 100755
--- a/defaults/initrd.defaults
+++ b/defaults/initrd.defaults
@@ -60,7 +60,7 @@ KSUFF='.ko'
REAL_ROOT=''
CONSOLE='/dev/console'
NEW_ROOT='/newroot'
-RC_NO_UMOUNTS='/newroot|/mnt/aufs-dev|/mnt/aufs-rw-branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino'
+no_umounts='/newroot|/mnt/aufs-dev|/mnt/aufs-rw-branch|/mnt/livecd|/mnt/cdrom|/.unions/memory|/.unions/memory/xino'
CDROOT='0'
CDROOT_DEV=''
CDROOT_TYPE='auto'
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index d168b94..8edaea4 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -323,13 +323,12 @@ union_mod() {
union_insert_dir "$aufs_union" "$aufs_union"/mnt/modules/"$mod"
}
-# Implements RC_NO_UMOUNTS variable into $CHROOT/etc/rc.conf for a cleaner shutdown process
-# This should really go into /etc/init.d/localmounts but until then we manually set this here
+# Implements no_umounts variable into $CHROOT/etc/conf.d/localmount for a cleaner shutdown process
conf_rc_no_umounts() {
local conf nomount fnd
- conf=$CHROOT/etc/rc.conf fnd=0
+ conf=$CHROOT/etc/conf.d/localmount fnd=0
- if nomount=$(grep -n '^[[:blank:]]*RC_NO_UMOUNTS=' $conf); then
+ if nomount=$(grep -n '^[[:blank:]]*no_umounts=' $conf); then
local i n data cmd IFS
IFS='
'
@@ -341,20 +340,20 @@ conf_rc_no_umounts() {
data=${i#*=}
case $data in
- "\"$RC_NO_UMOUNTS\""|"'$RC_NO_UMOUNTS'") fnd=1;;
+ "\"$no_umounts\""|"'$no_umounts'") fnd=1;;
*) cmd="$cmd$n d;"
esac
done
if [ -n "$cmd" ]; then
sed -i "${cmd%;}" $conf
- test_success "Unable to edit rc.conf"
+ test_success "Unable to edit /etc/conf.d/localmount"
fi
fi
if [ 0 -eq "$fnd" ]; then
- printf 'RC_NO_UMOUNTS="%s"\n' "$RC_NO_UMOUNTS" >> $conf
- test_success "Unable to write to rc.conf"
+ printf 'no_umounts="%s"\n' "$no_umounts" >> $conf
+ test_success "Unable to write to /etc/conf.d/localmount"
fi
}
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 3a4aa156c84bbc832618b8795bb8b3fae0be3f1f
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 23 00:19:43 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:33:04 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=3a4aa156
/usr/portage/distfiles shouldn't be tmpfs
It really doesn't make sense for /usr/portage/distfiles to be tmpfs,
plus, if a user is using aufs and trying to save changes we don't want
to lose these files. Only /tmp and /var/tmp should be tmpfs.
defaults/linuxrc | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/defaults/linuxrc b/defaults/linuxrc
index 951f5e1..19b9878 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -770,7 +770,7 @@ then
# Fstab changes for aufs
if ! grep -q '^aufs' "$CHROOT/etc/fstab" 2>/dev/null; then
- for dir in /var/tmp /tmp /usr/portage/distfiles; do
+ for dir in /var/tmp /tmp; do
[ ! -d $CHROOT$dir ] && mkdir -p "$CHROOT$dir"
done
@@ -782,7 +782,6 @@ then
aufs / aufs defaults 0 0
vartmp /var/tmp tmpfs defaults 0 0
tmp /tmp tmpfs defaults 0 0
-distfiles /usr/portage/distfiles tmpfs defaults 0 0
FSTAB
fi
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 4e55218f080fab85514112a38e6fe6aee6a922ba
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 23 00:07:28 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:33:04 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=4e55218f
aufs changes saving automation
The aufs code has the ability to save changes in a file, however, it
requires the user to manually tell us where the file is. This code will
automatically check for the file on $CDROOT, as well as automatically
pick up the casper-rw file created by unetbooting for persistence.
Additionally we add the option for aufs=search which will search all
drives for livecd.aufs. Possible later enhancements include searching
other partitions on the CDROOT_DEV for livecd.aufs automatically instead
of needing aufs=search. Then again, possible later enhancements also
include just always searching, it's shockingly fast to do the search...
defaults/initrd.scripts | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index d8142a2..e05809c 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -123,7 +123,7 @@ findmediamount() {
fi
good_msg "Attempting to mount media: ${x}" ${CRYPT_SILENT}
- mount -r -t ${CDROOT_TYPE} ${x} ${mntcddir} >/dev/null 2>&1
+ mount -t ${CDROOT_TYPE} ${x} ${mntcddir} >/dev/null 2>&1
if [ "$?" = '0' ]
then
if [ -n "${ISOBOOT}" ]; then
@@ -408,12 +408,29 @@ create_changefs() {
setup_aufs() {
bootstrapCD
+ if [ "$aufs_dev" = "search" ]; then
+ findmediamount "aufs-dev" "$aufs_union_file" \
+ "aufs_dev" "$aufs_dev_mnt" $(devicelist)
+ aufs_mounted="1"
+ elif [ -z $aufs_dev ] && [ -w "$CDROOT_PATH/$aufs_union_file" ]; then
+ aufs_dev="$REAL_ROOT"
+ aufs_dev_mnt="$CDROOT_PATH"
+ aufs_mounted="1"
+ fi
+ if [ -z $aufs_dev ] && [ -w "$CDROOT_PATH/casper-rw" ]; then
+ aufs_dev="$REAL_ROOT"
+ aufs_dev_mnt="$CDROOT_PATH"
+ aufs_union_file="/casper-rw"
+ aufs_mounted="1"
+ fi
+
if [ -n "$aufs_dev" ]; then
if [ ! -b $aufs_dev ]; then
bad_msg "$aufs_dev is not a valid block device"
local invalidblk=1
unset aufs_dev
- else
+ #skip this block when aufs_dev_mnt is already mounted
+ elif [ "$aufs_mounted" != "1" ]; then
good_msg "Mounting $aufs_dev to $aufs_memory for aufs support"
if ! mount -t auto "$aufs_dev" "$aufs_dev_mnt" &>/dev/null; then
@@ -428,6 +445,9 @@ setup_aufs() {
elif [ -n "$aufs_dev" ]; then
while :; do
if mount -t auto "$aufs_dev_mnt$aufs_union_file" "$aufs_memory" &>/dev/null; then
+ if [ "$aufs_union_file" = "/casper-rw" ];then
+ bad_msg "Use of livecd.aufs preferred to casper-rw for changes saving, please rename the file."
+ fi
break
else
bad_msg "Mounting of changes file failed, Running e2fsck"
^ permalink raw reply related [flat|nested] 61+ messages in thread
* [gentoo-commits] proj/genkernel:aufs commit in: defaults/
@ 2015-04-29 19:04 Richard Farina
0 siblings, 0 replies; 61+ messages in thread
From: Richard Farina @ 2015-04-29 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 3d379af92b227994d2e82b4b068a5d706c201514
Author: Rick Farina (Zero_Chaos) <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 5 16:11:48 2014 +0000
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Apr 29 17:33:04 2015 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=3d379af9
change default aufs branch naming
likewhoa didn't like my default naming, and I don't like his, so we
compromised on aufs-rw-branch so no one is happy :-)
defaults/initrd.scripts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 8edaea4..d8142a2 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -186,9 +186,9 @@ bootstrapFS() {
aufs_dev_mnt=/mnt/aufs-dev
if [ -z "$aufs_dev_uid" ]; then
- aufs_branch=$aufs_memory/aufs-branch/default
+ aufs_branch=$aufs_memory/aufs-rw-branch/default
else
- aufs_branch=$aufs_memory/aufs-branch/$aufs_dev_uid
+ aufs_branch=$aufs_memory/aufs-rw-branch/$aufs_dev_uid
fi
mkdir -p $aufs_memory $aufs_union $aufs_dev_mnt
^ permalink raw reply related [flat|nested] 61+ messages in thread
end of thread, other threads:[~2015-04-29 19:04 UTC | newest]
Thread overview: 61+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-29 19:04 [gentoo-commits] proj/genkernel:aufs commit in: defaults/ Richard Farina
-- strict thread matches above, loose matches on Subject: below --
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2015-04-29 19:04 Richard Farina
2014-09-23 0:21 Richard Farina
2014-09-23 0:21 Richard Farina
2014-09-05 16:11 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-09-05 16:09 Richard Farina
2014-05-24 21:35 Richard Farina
2014-05-24 21:35 Richard Farina
2014-05-24 21:35 Richard Farina
2014-05-22 20:28 Richard Farina
2014-05-22 20:28 Richard Farina
2014-05-22 20:28 Richard Farina
2014-05-22 20:28 Richard Farina
2014-03-17 19:38 Robin H. Johnson
2014-03-17 19:32 Robin H. Johnson
2014-03-17 19:20 Robin H. Johnson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox