From 7c1599e3c10b1bd71d01e4cab7d37853bc3b99e9 Mon Sep 17 00:00:00 2001 From: Mike Hiretsky Date: Thu, 10 Dec 2009 10:02:21 +0300 Subject: [PATCH] Remove lzma compression for initramfs. --- sys-kernel/calckernel/ChangeLog | 4 + sys-kernel/calckernel/Manifest | 4 +- .../calckernel-3.4.10.903-r16.ebuild | 140 +++++++++ .../files/calckernel-3.4.10.903-r16.patch | 284 ++++++++++++++++++ 4 files changed, 431 insertions(+), 1 deletion(-) create mode 100644 sys-kernel/calckernel/calckernel-3.4.10.903-r16.ebuild create mode 100644 sys-kernel/calckernel/files/calckernel-3.4.10.903-r16.patch diff --git a/sys-kernel/calckernel/ChangeLog b/sys-kernel/calckernel/ChangeLog index 3931b9a7c..f45b0d03e 100644 --- a/sys-kernel/calckernel/ChangeLog +++ b/sys-kernel/calckernel/ChangeLog @@ -2,6 +2,10 @@ # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ + 10 Dec 2009; Mike Hiretsky (mhiretskiy) + +calckernel-3.4.10.903-r16.ebuild, +files/calckernel-3.4.10.903-r16.patch: + Remove lzma compression for initramfs. + *calckernel-3.4.10.903-r16 (24 Nov 2009) 24 Nov 2009; Mike Hirecky (mhiretskiy) diff --git a/sys-kernel/calckernel/Manifest b/sys-kernel/calckernel/Manifest index 1cf118eff..3381c8ec3 100644 --- a/sys-kernel/calckernel/Manifest +++ b/sys-kernel/calckernel/Manifest @@ -1,4 +1,5 @@ AUX calckernel-3.4.10.903-r15.patch 9850 RMD160 59a18be3318a798910a22f1ee03062167074578c SHA1 918783f6615a8cbee2475bf3989b93db13fe4021 SHA256 a5c036b0476f171daef09a61970d6727bb05bf30f6b85df42c60c3ae0eb68eb0 +AUX calckernel-3.4.10.903-r16.patch 9250 RMD160 849a11ab3e0e3d21cf807d9d28237f881196613b SHA1 26ee4e8aded9a5525cb35c3f22f95f2539a20b58 SHA256 60301770e69f18171b0c17aaf6eaafb3f3205b8ac1cc45d5dd9cecb6a968743e AUX calckernel-3.4.10.903-r2.patch 3217 RMD160 2af53fea69a8c4bb7295326c8dcca874186163eb SHA1 6988125ac5ec2788aeb24b39b9648edec2fcc09d SHA256 787528254f20544155f00fd36626d11eee681350a4217edfac22e6e21d68eee1 AUX calckernel-3.4.10.903-r5.patch 4900 RMD160 c06016481281a2a056f31cd1c2796ed783627997 SHA1 96bc1c4466598c33117b2a018a66631f9e5132a8 SHA256 c5ad1a6f4bc16ed3971bed3179a629445bb88cd2267facb261502454b3ab2d94 AUX calckernel-3.4.10.903-r6.patch 4906 RMD160 166a07f41f72363750f94249c0d14a0e64ede600 SHA1 858b563247c9485453be53bc60296397df675521 SHA256 4fd297e02b19b1accd18bdf19f06eb4fdfc52e2f75c67ad0bb1734f7e3b57f42 @@ -21,11 +22,12 @@ DIST unionfs-1.5pre-cvs200701042308.tar.gz 163418 RMD160 6d54be6db26a562dd943df2 DIST unionfs-fuse-0.22.tar.bz2 27355 RMD160 f29cbf41af0ba8f2181ac565a6663871676f6488 SHA1 e95799923ee3938e1fb44c6fd9aa7154d720063e SHA256 fa0c494a8ce63f235601fcc35e3a96527831169d6d5921ee49faccf3b25feb78 EBUILD calckernel-3.4.10.903-r1.ebuild 4721 RMD160 0ad6351496f60f77f5cdb47f91e8887ad2b67111 SHA1 a7f6d9be941333647a4dbc578316792fdd942fc5 SHA256 2f5327f3b368a25cda0dcce60f287c38cd6a2a74e03b6e3280fdd846c1aaeaf8 EBUILD calckernel-3.4.10.903-r15.ebuild 4797 RMD160 3f7804e47bbb2c36bdfad781250eba6a73329fb7 SHA1 a61c04ba488c87c144ec57845881300e664f8e37 SHA256 04268c64db9eae32db2c37d679ba0b2d09cb4fb146e71881ea685e20193502cd +EBUILD calckernel-3.4.10.903-r16.ebuild 4797 RMD160 3f7804e47bbb2c36bdfad781250eba6a73329fb7 SHA1 a61c04ba488c87c144ec57845881300e664f8e37 SHA256 04268c64db9eae32db2c37d679ba0b2d09cb4fb146e71881ea685e20193502cd EBUILD calckernel-3.4.10.903-r2.ebuild 4722 RMD160 86a8fd0be899be5fe4db799269f0eae5063a30ac SHA1 2d52f4ff1805734cb0ffe572786015a9c0fe0311 SHA256 7ebc44592700cbfc4759508ddc147fe9cafe7c54116b731bfa42dfc7baa19206 EBUILD calckernel-3.4.10.903-r5.ebuild 4722 RMD160 86a8fd0be899be5fe4db799269f0eae5063a30ac SHA1 2d52f4ff1805734cb0ffe572786015a9c0fe0311 SHA256 7ebc44592700cbfc4759508ddc147fe9cafe7c54116b731bfa42dfc7baa19206 EBUILD calckernel-3.4.10.903-r6.ebuild 4722 RMD160 86a8fd0be899be5fe4db799269f0eae5063a30ac SHA1 2d52f4ff1805734cb0ffe572786015a9c0fe0311 SHA256 7ebc44592700cbfc4759508ddc147fe9cafe7c54116b731bfa42dfc7baa19206 EBUILD calckernel-3.4.10.903-r7.ebuild 4722 RMD160 86a8fd0be899be5fe4db799269f0eae5063a30ac SHA1 2d52f4ff1805734cb0ffe572786015a9c0fe0311 SHA256 7ebc44592700cbfc4759508ddc147fe9cafe7c54116b731bfa42dfc7baa19206 EBUILD calckernel-3.4.10.903-r9.ebuild 4722 RMD160 e4a76faac584cb8cfcb11ca0a2cbe1a1f18b89a1 SHA1 13af3abc15afdaa44e769beba2747574f8257e64 SHA256 9cfd0a1a10685992c72b29dca87d9610a4197c7faf10ef3b66b854fa5cea0e23 EBUILD calckernel-3.4.9.ebuild 3906 RMD160 24c0eac5910c541d2c7422f405bb8fb71130813f SHA1 12dc9e3321a267362aa5d73160a5cc8e08eac54c SHA256 ade17998fd096468bd8d8c749b38887b593a9d33288885f49d5eac4e94b0092b -MISC ChangeLog 255 RMD160 3f6152321e91a1d22597d69c6bd192a48847c85e SHA1 b7a79fe49ded2f16877c9c859e3af7d85a4b1345 SHA256 33e1e10e3331fc4840ff628486e92a2e6e1e3ccc60c56c9664dd61d28516407f +MISC ChangeLog 434 RMD160 c97d945c6b9f81cc2d8548ff1a891836779e14e9 SHA1 f1dba0f9bcc6297524a006adc07047d1b6a8fbbe SHA256 aa981c490e84aac91a5fbdd7674d2e2b55076304aac1d60cc2d3779ab09f77c1 MISC metadata.xml 332 RMD160 7baff74f671fb7762513694b3d1694923b851b79 SHA1 72a7b3811a232e0506a65bdeb622f11abae0a04c SHA256 629337dd254d66431dd8752f97f1981de237cf1ca44a0eefc3a7cb8e667d7458 diff --git a/sys-kernel/calckernel/calckernel-3.4.10.903-r16.ebuild b/sys-kernel/calckernel/calckernel-3.4.10.903-r16.ebuild new file mode 100644 index 000000000..4e11b9e02 --- /dev/null +++ b/sys-kernel/calckernel/calckernel-3.4.10.903-r16.ebuild @@ -0,0 +1,140 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/genkernel/genkernel-3.4.10.903.ebuild,v 1.1 2009/01/05 22:31:16 agaffney Exp $ + +# genkernel-9999 -> latest SVN +# genkernel-9999.REV -> use SVN REV +# genkernel-VERSION -> normal genkernel release + +VERSION_BUSYBOX='1.7.4' +VERSION_DMAP='1.02.22' +VERSION_DMRAID='1.0.0.rc14' +VERSION_E2FSPROGS='1.40.9' +VERSION_LVM='2.02.28' +VERSION_FUSE='2.7.4' +VERSION_UNIONFS_FUSE='0.22' + +MY_P=gen${P/#calc} +S=${WORKDIR}/${MY_P} + +MY_HOME="http://wolf31o2.org" +RH_HOME="ftp://sources.redhat.com/pub" +DM_HOME="http://people.redhat.com/~heinzm/sw/dmraid/src" +BB_HOME="http://www.busybox.net/downloads" + +COMMON_URI="${DM_HOME}/dmraid-${VERSION_DMRAID}.tar.bz2 + ${DM_HOME}/old/dmraid-${VERSION_DMRAID}.tar.bz2 + ${RH_HOME}/lvm2/LVM2.${VERSION_LVM}.tgz + ${RH_HOME}/lvm2/old/LVM2.${VERSION_LVM}.tgz + ${RH_HOME}/dm/device-mapper.${VERSION_DMAP}.tgz + ${RH_HOME}/dm/old/device-mapper.${VERSION_DMAP}.tgz + ${BB_HOME}/busybox-${VERSION_BUSYBOX}.tar.bz2 + mirror://sourceforge/e2fsprogs/e2fsprogs-${VERSION_E2FSPROGS}.tar.gz + mirror://sourceforge/fuse/fuse-${VERSION_FUSE}.tar.gz + http://podgorny.cz/unionfs-fuse/releases/unionfs-fuse-${VERSION_UNIONFS_FUSE}.tar.bz2" + +if [[ ${PV} == 9999* ]] +then + [[ ${PV} == 9999.* ]] && ESVN_UPDATE_CMD="svn up -r ${PV/9999./}" + EGIT_REPO_URI="git://git.wolf31o2.org/projs/genkernel.git" + inherit git bash-completion eutils + S="${WORKDIR}" + SRC_URI="${COMMON_URI}" +else + inherit bash-completion eutils + SRC_URI="mirror://gentoo/${MY_P}.tar.bz2 + ${MY_HOME}/sources/genkernel/${MY_P}.tar.bz2 + ftp://ftp.calculate.ru/pub/calculate/calckernel/${MY_P}.tar.bz2 + ${COMMON_URI}" +fi + +DESCRIPTION="Gentoo automatic kernel building scripts" +HOMEPAGE="http://www.gentoo.org" + +LICENSE="GPL-2" +SLOT="0" +RESTRICT="" +# Please don't touch individual KEYWORDS. Since this is maintained/tested by +# Release Engineering, it's easier for us to deal with all arches at once. +#KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86" +KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sparc x86" +#KEYWORDS="" +IUSE="ibm selinux" + +DEPEND="sys-fs/e2fsprogs + selinux? ( sys-libs/libselinux ) + !sys-kernel/genkernel" +RDEPEND="${DEPEND} app-arch/cpio" + +src_unpack() { + if [[ ${PV} == 9999* ]] ; then + git_src_unpack + else + unpack ${MY_P}.tar.bz2 + fi + use selinux && sed -i 's/###//g' "${S}"/gen_compile.sh + cd ${S} + epatch "${FILESDIR}"/${PF}.patch +} + +src_install() { + # This block updates genkernel.conf + sed -e "s:VERSION_DMAP:$VERSION_DMAP:" \ + -e "s:VERSION_DMRAID:$VERSION_DMRAID:" \ + -e "s:VERSION_E2FSPROGS:$VERSION_E2FSPROGS:" \ + -e "s:VERSION_LVM:$VERSION_LVM:" \ + -e "s:VERSION_BUSYBOX:$VERSION_BUSYBOX:" \ + -e "s:VERSION_FUSE:$VERSION_FUSE:" \ + -e "s:VERSION_UNIONFS_FUSE:$VERSION_UNIONFS_FUSE:" \ + "${S}"/genkernel.conf > "${T}"/genkernel.conf \ + || die "Could not adjust versions" + insinto /etc + doins "${T}"/genkernel.conf || die "doins genkernel.conf" + + doman genkernel.8 || die "doman" + dodoc AUTHORS ChangeLog README TODO || die "dodoc" + + dobin genkernel || die "dobin genkernel" + + rm -f genkernel genkernel.8 AUTHORS ChangeLog README TODO genkernel.conf + + insinto /usr/share/genkernel + doins -r "${S}"/* || die "doins" + use ibm && cp "${S}"/ppc64/kernel-2.6-pSeries "${S}"/ppc64/kernel-2.6 || \ + cp "${S}"/arch/ppc64/kernel-2.6.g5 "${S}"/arch/ppc64/kernel-2.6 + + # Copy files to /var/cache/genkernel/src + elog "Copying files to /var/cache/genkernel/src..." + mkdir -p "${D}"/var/cache/genkernel/src + cp -f \ + "${DISTDIR}"/dmraid-${VERSION_DMRAID}.tar.bz2 \ + "${DISTDIR}"/LVM2.${VERSION_LVM}.tgz \ + "${DISTDIR}"/device-mapper.${VERSION_DMAP}.tgz \ + "${DISTDIR}"/e2fsprogs-${VERSION_E2FSPROGS}.tar.gz \ + "${DISTDIR}"/busybox-${VERSION_BUSYBOX}.tar.bz2 \ + "${DISTDIR}"/fuse-${VERSION_FUSE}.tar.gz \ + "${DISTDIR}"/unionfs-fuse-${VERSION_UNIONFS_FUSE}.tar.bz2 \ + "${D}"/var/cache/genkernel/src || die "Copying distfiles..." + + dobashcompletion "${FILESDIR}"/genkernel.bash +} + +pkg_postinst() { + echo + elog 'Documentation is available in the genkernel manual page' + elog 'as well as the following URL:' + echo + elog 'http://www.gentoo.org/doc/en/genkernel.xml' + echo + ewarn "This package is known to not work with reiser4. If you are running" + ewarn "reiser4 and have a problem, do not file a bug. We know it does not" + ewarn "work and we don't plan on fixing it since reiser4 is the one that is" + ewarn "broken in this regard. Try using a sane filesystem like ext3 or" + ewarn "even reiser3." + echo + ewarn "The LUKS support has changed from versions prior to 3.4.4. Now," + ewarn "you use crypt_root=/dev/blah instead of real_root=luks:/dev/blah." + echo + + bash-completion_pkg_postinst +} diff --git a/sys-kernel/calckernel/files/calckernel-3.4.10.903-r16.patch b/sys-kernel/calckernel/files/calckernel-3.4.10.903-r16.patch new file mode 100644 index 000000000..a4f3e7120 --- /dev/null +++ b/sys-kernel/calckernel/files/calckernel-3.4.10.903-r16.patch @@ -0,0 +1,284 @@ +diff --git a/arch/x86/modules_load b/arch/x86/modules_load +index 2e93dce..a6db29d 100644 +--- a/arch/x86/modules_load ++++ b/arch/x86/modules_load +@@ -22,5 +22,5 @@ MODULES_PCMCIA="pcmcia pcmcia_core yenta_socket pd6729 i82092 i82365 tcic ds ide + MODULES_USB="ehci-hcd uhci usb-ohci hid usb-storage uhci-hcd ohci-hcd usbhid sl811-hcd" + + # Filesystems +-MODULES_FS="ext2 ext3 reiserfs jfs nfs xfs fuse" ++MODULES_FS="ext2 ext3 ext4 reiserfs jfs nfs xfs fuse" + +diff --git a/arch/x86_64/modules_load b/arch/x86_64/modules_load +index 67b9a48..857f1a3 100644 +--- a/arch/x86_64/modules_load ++++ b/arch/x86_64/modules_load +@@ -22,4 +22,4 @@ MODULES_PCMCIA="pcmcia pcmcia_core yenta_socket pd6729 i82092 i82365 tcic ds ide + MODULES_USB="ehci-hcd uhci usb-ohci hid usb-storage uhci-hcd ohci-hcd usbhid sl811-hcd" + + # Filesystems +-MODULES_FS="ext2 ext3 reiserfs jfs nfs xfs fuse" ++MODULES_FS="ext2 ext3 ext4 reiserfs jfs nfs xfs fuse" +diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults +index a417144..92e9d2d 100755 +--- a/defaults/initrd.defaults ++++ b/defaults/initrd.defaults +@@ -68,6 +68,7 @@ fi + + REAL_ROOT='' + CDROOT='0' ++SCRATCH='0' + CDROOT_DEV='' + CDROOT_TYPE='auto' + NEW_ROOT='/newroot' +diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts +index beec6de..317eb99 100755 +--- a/defaults/initrd.scripts ++++ b/defaults/initrd.scripts +@@ -169,11 +169,24 @@ cache_cd_contents() { + # TODO: Check the size of the image versus the size of our tmpfs + # along with the amount of available RAM and increase tmpfs size + # if necessary. (Not having awk sucks...) +- # z=0 +- # for i in $(cat /proc/meminfo | grep -e ^MemFree -e ^Cached | \ +- # cut -d: -f2 | cut -dk -f1 | sed -e "s/^\s*//") ; do +- # z=$(($z + $i)) ; done +- # echo $z ++ ++ # getting memory ++ z=0 ++ for i in $(cat /proc/meminfo | grep -e ^MemFree -e ^Cached | \ ++ cut -d: -f2 | cut -dk -f1 | sed -e "s/^\s*//") ; do ++ z=$(($z + $i)) ; done ++ ++ # getting size tmpfs of default ++ let curtfs=$z/2 ++ ++ # getting size of image ++ let q=`ls -la ${NEW_ROOT}/mnt/cdrom/${LOOP} | sed -r -n 's/(\S*\s*){4}(\S*).*/\2/p'`/5000*6 ++ ++ if [[ $((${curtfs}<${q})) = "1" -a $((${q}<${z})) = "1" ]]; ++ then ++ good_msg "Increasing size of tmpfs for ${NEW_ROOT}" ++ mount -o remount,size=${q}000 -t tmpfs tmpfs ${NEW_ROOT} ++ fi + good_msg "Copying loop file for caching..." + cp -a ${NEW_ROOT}/mnt/cdrom/${LOOP} ${NEW_ROOT}/mnt/${LOOP} + if [ $? -ne 0 ] +@@ -184,6 +197,8 @@ cache_cd_contents() { + rm -rf ${NEW_ROOT}/mnt/zisofs 2>/dev/null + else + LOOPEXT='../' ++ good_msg "Unmounting media from ${NEW_ROOT}/mnt/cdrom" ++ umount ${NEW_ROOT}/mnt/cdrom + fi + fi + fi +@@ -950,6 +965,32 @@ getdvhoff() { + echo $(( $(hexdump -n 4 -s $((316 + 12 * $2)) -e '"%i"' $1) * 512)) + } + ++load_union_module() { ++ UNIONTYPE="" ++ # find module for union file system ++ [ -n "$(find /lib/ -name unionfs.ko)" ] && UNIONTYPE="unionfs" ++ [ -n "$(find /lib/ -name aufs.ko)" ] && UNIONTYPE="aufs" ++ if [ -z "${UNIONTYPE}" ] ++ then ++ bad_msg "Module for union file system is not found!" ++ run_shell ++ else ++ modprobe ${UNIONTYPE} > /dev/null 2>&1 ++ # error on load union module ++ if [ -z "$(lsmod | grep $UNIONTYPE)" ] ++ then ++ bad_msg "Module for union file system is not correct!" ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ bad_msg "Probably kernel compiled without standalone patch." ++ fi ++ run_shell ++ fi ++ ++ good_msg "Loading ${UNIONTYPE}" ++ fi ++} ++ + setup_unionfs() { + local rw_dir=$1 + local ro_dir=$2 +@@ -969,6 +1010,7 @@ setup_unionfs() { + mkdir -p ${UNION} + good_msg "Loading fuse module" + modprobe fuse > /dev/null 2>&1 ++ load_union_module + # if [ -n "${UNIONFS}" ] + # then + # CHANGESDEV=${UNIONFS} +@@ -998,10 +1040,94 @@ setup_unionfs() { + mkdir /tmp + mkdir -p ${UNION} + # mkdir -p $CHANGES +-# mount -t unionfs -o dirs=$CHANGES=rw unionfs ${UNION} ++## mount -t unionfs -o dirs=$CHANGES=rw unionfs ${UNION} ++ ++ if [ "${SCRATCH}" -ne 0 ]; ++ then ++ good_msg "Loading in scratch mode" ++ BUILDERDIR=${UNION}/mnt/builder ++ SCRATCHDIR=${UNION}/mnt/scratch ++ DELTADIR=${rw_dir}/mnt/delta ++ WORKSPACEDIR=${rw_dir}/mnt/workspace ++ mount -o remount,rw ${rw_dir}/mnt/cdrom >/dev/null 2>&1 ++ touch ${rw_dir}/mnt/cdrom/livecd >/dev/null 2>&1 ++ if [ "$?" -ne 0 ]; ++ then ++ ISRW=0 ++ else ++ ISRW=1 ++ fi ++ ++ mkdir -p ${DELTADIR} ++ mkdir -p ${WORKSPACEDIR} ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if ! mount -t aufs -o udba=reval,br:${WORKSPACEDIR}=rw:${DELTADIR}=ro+wh:${rw_dir}/mnt/livecd=ro none ${UNION} ++ then ++ bad_msg "Can't setup union mount!" ++ run_shell ++ fi ++ else ++ mount -t unionfs -o dirs=${WORKSPACEDIR}=rw:${DELTADIR}=ro:${rw_dir}/mnt/livecd=ro unionfs ${UNION} ++ fi ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mkdir -p ${SCRATCHDIR}/calculate ++ mkdir -p ${SCRATCHDIR}/delta ++ mkdir -p ${SCRATCHDIR}/workspace ++ mount -o bind ${rw_dir}/mnt/delta ${SCRATCHDIR}/delta ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mount -o bind ${rw_dir}/mnt/workspace ${SCRATCHDIR}/workspace ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mkdir -p ${BUILDERDIR} ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if ! mount -t aufs -o udba=reval,br:${DELTADIR}=rw:${rw_dir}/mnt/livecd=ro none ${BUILDERDIR} ++ then ++ bad_msg "Can't setup union mount!" ++ run_shell ++ fi ++ else ++ mount -t unionfs -o dirs=${DELTADIR}=rw:${rw_dir}/mnt/livecd=ro unionfs ${BUILDERDIR} ++ fi ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mount -o bind ${rw_dir}/mnt/livecd ${SCRATCHDIR}/calculate ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ if [ "$ISRW" -ne 0 ]; ++ then ++ FLASHDIR=${UNION}/mnt/flash ++ mkdir -p ${FLASHDIR} ++ mount -o bind ${rw_dir}/mnt/cdrom ${FLASHDIR} ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ else ++ CDROMDIR=${UNION}/mnt/cdrom ++ mkdir -p ${CDROMDIR} ++ mount -o bind ${rw_dir}/mnt/cdrom ${CDROMDIR} ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ fi ++ else ++ CDROMDIR=${UNION}/mnt/cdrom ++ LIVECDDIR=${UNION}/mnt/livecd ++ ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if ! mount -t aufs -o udba=reval,br:${rw_dir}:${ro_dir}=ro none ${UNION} ++ then ++ bad_msg "Can't setup union mount!" ++ run_shell ++ fi ++ else ++ mount -t unionfs -o dirs=${rw_dir}:${ro_dir}=ro unionfs ${UNION} ++ fi ++ chmod 0755 ${UNION} ++ mount -o bind ${rw_dir}/mnt/cdrom ${CDROMDIR} ++ mount -o bind ${rw_dir}/mnt/livecd ${LIVECDDIR} ++ ret=$? ++ fi ++ ++ chmod 1777 ${UNION}/tmp + good_msg "Creating union mount" +- unionfs -o allow_other,cow,noinitgroups,suid,dev ${rw_dir}=RW:${ro_dir}=RO ${UNION} 2>/dev/null +- ret=$? ++# unionfs -o allow_other,cow,noinitgroups,suid,dev,default_permissions,use_ino ${rw_dir}=RW:${ro_dir}=RO ${UNION} 2>/dev/null ++# ret=$? + if [ "${ret}" -ne 0 ] + then + bad_msg "Can't setup union mount!" +diff --git a/defaults/linuxrc b/defaults/linuxrc +index d506f83..538b29b 100755 +--- a/defaults/linuxrc ++++ b/defaults/linuxrc +@@ -62,6 +62,10 @@ do + init_opts\=*) + INIT_OPTS=`parse_opt "${x}"` + ;; ++ # Scratch usbload ++ scratch) ++ SCRATCH=1 ++ ;; + # Livecd options + cdroot) + CDROOT=1 +@@ -465,9 +469,50 @@ do + then + break + else +- bad_msg "The filesystem mounted at ${REAL_ROOT} does not appear to be a valid /, try again" +- got_good_root=0 +- REAL_ROOT='' ++ # check for scratch ++ if [ -e ${NEW_ROOT}/livecd.squashfs -a -d ${NEW_ROOT}/delta -a -d ${NEW_ROOT}/workspace ]; ++ then ++ good_msg 'Found scratch data...' ++ load_union_module ++ modprobe squashfs >/dev/null ++ if mount -o remount,rw ${NEW_ROOT}; ++ then ++ mkdir -p ${NEW_ROOT}/calculate && mkdir -p /union && mkdir -p ${NEW_ROOT}/workspace/mnt/builder && mkdir -p ${NEW_ROOT}/workspace/mnt/scratch ++ if mount -o loop,ro -t squashfs ${NEW_ROOT}/livecd.squashfs ${NEW_ROOT}/calculate; ++ then ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if mount -t aufs -o ro,udba=reval,br:${NEW_ROOT}/workspace=rw:${NEW_ROOT}/delta=ro+wh:${NEW_ROOT}/calculate=ro none /union; ++ then ++ mount -t aufs -o ro,udba=reval,br:${NEW_ROOT}/delta=rw:${NEW_ROOT}/calculate=ro none /union/mnt/builder ++ CHROOT=/union ++ break; ++ else ++ bad_msg 'Could not merge scratch layers!' ++ run_shell ++ fi ++ else ++ if mount -t unionfs -o ro,dirs=${NEW_ROOT}/workspace:${NEW_ROOT}/delta=ro:${NEW_ROOT}/calculate=ro unionfs /union; ++ then ++ mount -t unionfs -o ro,dirs=${NEW_ROOT}/delta:${NEW_ROOT}/calculate=ro unionfs /union/mnt/builder ++ CHROOT=/union ++ break; ++ else ++ bad_msg 'Could not merge scratch layers' ++ run_shell ++ fi ++ fi ++ else ++ bad_msg 'Could not mount scratch squashfs image' ++ fi ++ else ++ bad_msg 'Could not remount ${NEW_ROOT}' ++ fi ++ else ++ bad_msg "The filesystem mounted at ${REAL_ROOT} does not appear to be a valid /, try again" ++ got_good_root=0 ++ REAL_ROOT='' ++ fi + fi + else + bad_msg "Could not mount specified ROOT, try again"