Skip to content

Commit

Permalink
Merging casper 1.175.
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-baumann committed Mar 16, 2010
1 parent 12d7375 commit 612de86
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 11 deletions.
2 changes: 1 addition & 1 deletion debian/control
Expand Up @@ -16,7 +16,7 @@ Depends: ${misc:Depends}, busybox, file, initramfs-tools, sudo, udev, user-setup
Recommends: cryptsetup, eject, rsync, uuid-runtime, wget
Suggests:
loop-aes-utils, curlftpfs, genext2fs (>= 1.4.1), httpfs2, squashfs-tools,
mtd-tools
mtd-tools, unionfs-fuse
Description: Debian Live initramfs hook
live-initramfs is a hook for the initramfs-tools, used to generate a initramfs
capable to boot live systems, such as those created by live-helper. This
Expand Down
10 changes: 10 additions & 0 deletions docs/ChangeLog.casper
@@ -1,3 +1,13 @@
casper (1.175) karmic; urgency=low

* Suppress error message if
/root/usr/share/applications/firefox-fav.desktop doesn't exist.
* Add unionfs-fuse support.
* Automatically fall back to unionfs-fuse if the default union filesystem
is not available but unionfs-fuse is.

-- Colin Watson <cjwatson@ubuntu.com> Sun, 24 May 2009 12:28:00 +0100

casper (1.174) karmic; urgency=low

* debian/control: Increase dependency on initramfs-tools to get the version
Expand Down
6 changes: 6 additions & 0 deletions hooks/live
Expand Up @@ -116,6 +116,12 @@ manual_add_modules unlzma
manual_add_modules aufs
manual_add_modules unionfs

# Filesystem: unionfs-fuse
if [ -x /usr/bin/unionfs-fuse ]
then
copy_exec /usr/bin/unionfs-fuse /bin
fi

# Filesystem: vfat
manual_add_modules nls_cp437
manual_add_modules nls_iso8859-1
Expand Down
64 changes: 54 additions & 10 deletions scripts/live
Expand Up @@ -1086,7 +1086,17 @@ setup_unionfs ()
image_directory="${1}"
rootmnt="${2}"
addimage_directory="${3}"
modprobe -q -b ${UNIONTYPE}

case ${UNIONTYPE} in
aufs|unionfs)
modprobe -q -b ${UNIONTYPE}

if ! cut -f2 /proc/filesystems | grep -q "^${UNIONTYPE}\$" && [ -x /bin/unionfs-fuse ]
then
UNIONTYPE="unionfs-fuse"
fi
;;
esac

# run-init can't deal with images in a subdir, but we're going to
# move all of these away before it runs anyway. No, we're not,
Expand All @@ -1102,6 +1112,9 @@ setup_unionfs ()
if [ "${UNIONTYPE}" = "aufs" ]
then
roopt="rr,noxino"
elif [ "${UNIONTYPE}" = "unionfs-fuse" ]
then
roopt="RO"
else
roopt="ro"
fi
Expand Down Expand Up @@ -1341,16 +1354,27 @@ setup_unionfs ()

for dir in ${cow_dirs}; do
mkdir -p /cow${dir}
mount -t ${UNIONTYPE} \
-o rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro \
${UNIONTYPE} "${rootmnt}${dir}" || \
panic "mount ${UNIONTYPE} on ${rootmnt}${dir} failed with option \
rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro"

case "${UNIONTYPE}" in
unionfs-fuse)
(ulimit -n 16384; unionfs-fuse -o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid /cow=RW:${exposedrootfs}${dir} "${rootmnt}${dir}" || panic "mount ${UNIONTYPE} on ${rootmnt}${dir} failed with option cow,noinitgroups,default_permissions,allow_other,use_ino,suid=/cow=RW:${exposedrootfs}${dir}")
;;

*)
mount -t ${UNIONTYPE} -o rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro ${UNIONTYPE} "${rootmnt}${dir}" || panic "mount ${UNIONTYPE} on ${rootmnt}${dir} failed with option rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro"
;;
esac
done
else
mount -t ${UNIONTYPE} -o noatime,dirs=/cow=rw:${rofsstring} \
${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on \
${rootmnt} failed with option noatime,dirs=/cow=rw:${rofsstring}"
case "${UNIONTYPE}" in
unionfs-fuse)
(ulimit -n 16384; unionfs-fuse -o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid /cow=RW:${rofsstring} "${rootmnt}" || panic "mount ${UNIONTYPE} on ${rootmnt} failed with option cow,noinitgroups,default_permissions,allow_other,use_ino,suid=/cow:RW:${rofsstring}")
;;

*)
mount -t ${UNIONTYPE} -o noatime,dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on ${rootmnt} failed with option noatime,dirs=/cow=rw:${rofsstring}"
;;
esac
fi

# Correct the permissions of /:
Expand Down Expand Up @@ -1393,7 +1417,15 @@ setup_unionfs ()
;;

*)
mount -o move "${d}" "${rootmnt}/live/${d##*/}"
case "${UNIONTYPE}" in
unionfs-fuse)
mount -o bind "${d}" "${rootmnt}/live/${d##*/}"
;;

*)
mount -o move "${d}" "${rootmnt}/live/${d##*/}"
;;
esac
;;
esac
done
Expand Down Expand Up @@ -1714,12 +1746,24 @@ mountroot ()

log_end_msg

# unionfs-fuse needs /dev to be bind-mounted for the duration of
# live-bottom; udev's init script will take care of things after that
if [ "${UNIONTYPE}" = unionfs-fuse ]
then
mount -n -o bind /dev "${rootmnt}/dev"
fi

maybe_break live-bottom
log_begin_msg "Running /scripts/live-bottom\n"

run_scripts /scripts/live-bottom
log_end_msg

if [ "${UNIONFS}" = unionfs-fuse ]
then
umount "${rootmnt}/dev"
fi

exec 1>&6 6>&-
exec 2>&7 7>&-
kill ${tailpid}
Expand Down

0 comments on commit 612de86

Please sign in to comment.