diff -Nurp genkernel-3.4.9_pre11.orig/generic/initrd.scripts genkernel-3.4.9_pre11/generic/initrd.scripts --- genkernel-3.4.9_pre11.orig/generic/initrd.scripts 2007-12-17 19:43:39.000000000 +0000 +++ genkernel-3.4.9_pre11/generic/initrd.scripts 2007-12-17 19:44:44.000000000 +0000 @@ -193,6 +193,13 @@ union_setup_dir() { fi } +aufs_setup_dir() { + mount -t aufs -o br=$OVERLAY:$2 none $1 + if [ "$?" -eq '0' ]; then + good_msg "Addition of $2 to $OVERLAY merged into $1" + fi +} + findnfsmount() { if [ "${IP}" != '' ] || busybox udhcpc -R rootpath -n -s /bin/udhcpc.scripts @@ -810,6 +817,20 @@ rundebugshell() { fi } +setup_aufs() { + if [ "${USE_AUFS_NORMAL}" -eq '1' ] + then + # Directory used for rw changes in union mount filesystem + UNION=/aufs + OVERLAY=/overlay + mkdir -p ${UNION} + mkdir -p ${OVERLAY} + mount -t tmpfs none ${OVERLAY} + good_msg "Loading aufs module (if module)" + modprobe aufs > /dev/null 2>&1 + fi +} + setup_unionfs() { if [ "${USE_UNIONFS_NORMAL}" -eq '1' ] then diff -Nurp genkernel-3.4.9_pre11.orig/generic/linuxrc genkernel-3.4.9_pre11/generic/linuxrc --- genkernel-3.4.9_pre11.orig/generic/linuxrc 2007-12-17 19:43:39.000000000 +0000 +++ genkernel-3.4.9_pre11/generic/linuxrc 2007-12-17 19:44:49.000000000 +0000 @@ -80,6 +80,9 @@ do unionfs) USE_UNIONFS_NORMAL=1 ;; + aufs) + USE_AUFS_NORMAL=1 + ;; unionfs\=*) USE_UNIONFS_NORMAL=1 CMD_UNIONFS=`parse_opt "${x}"` @@ -230,11 +233,12 @@ then startLUKS fi -# Set up unionfs +# Set up unionfs or aufs mkdir -p ${NEW_ROOT} setup_unionfs +setup_aufs -if [ "${USE_UNIONFS_NORMAL}" -eq '1' ] +if [ "${USE_UNIONFS_NORMAL}" -eq '1' ] || [ "${USE_AUFS_NORMAL}" -eq '1' ] then CHROOT=${UNION} else @@ -248,7 +252,7 @@ tuxonice_resume if [ "${CDROOT}" -eq '1' ] then - if [ ! "${USE_UNIONFS_NORMAL}" -eq '1' ] + if [ ! "${USE_UNIONFS_NORMAL}" -eq '1' ] && [ ! "${USE_AUFS_NORMAL}" -eq '1' ] then good_msg "Making tmpfs for ${NEW_ROOT}" mount -t tmpfs tmpfs ${NEW_ROOT} @@ -605,6 +609,22 @@ then mv /${UNION}/etc/fstab.new /${UNION}/etc/fstab fi + if [ "${USE_AUFS_NORMAL}" -eq '1' ] + then + aufs_setup_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION} + + mkdir -p ${UNION}/mnt/livecd + if [ ! -e "${UNION}/mnt/cdrom" ]; then + mkdir ${UNION}/mnt/cdrom -p + fi + mount --bind ${NEW_ROOT}/${FS_LOCATION} ${UNION}/mnt/livecd + mount --bind ${NEW_ROOT}/mnt/cdrom ${UNION}/mnt/cdrom + + # 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 + fi + # Unpacking additional packages from NFS mount # This is useful for adding kernel modules to /lib # We do this now, so that additional packages can add whereever they want. @@ -622,7 +642,7 @@ then fi - if [ ! "${USE_UNIONFS_NORMAL}" -eq '1' ] + if [ ! "${USE_UNIONFS_NORMAL}" -eq '1' ] && [ ! "${USE_AUFS_NORMAL}" -eq '1' ] then good_msg "Copying read-write image contents to tmpfs" # Copy over stuff that should be writable @@ -705,6 +725,11 @@ else union_setup_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION} mkdir -p ${UNION}/tmp/.initrd fi + if [ "${USE_AUFS_NORMAL}" -eq '1' ] + then + aufs_setup_dir ${UNION} ${NEW_ROOT}/${FS_LOCATION} + mkdir -p ${UNION}/tmp/.initrd + fi fi # Execute script on the cdrom just before boot to update things if necessary