#! /bin/sh -e vg=vg-$(hostname) lvsz=-L8g mirror=http://deb.debian.org/debian/ myarch=$(dpkg-architecture -qDEB_HOST_ARCH) qemup=nil; unset myqarch eval $(apt-config -c /usr/local.schroot/config/apt/conf.d/90local \ shell http_proxy Acquire::http::proxy) case ${http_proxy+t} in t) export http_proxy ;; esac badp=nil forcep=nil dbsopts= crossp=nil; unset qemu while getopts "a:e:fm:q:Qv:z:x" opt; do case $opt in a) myarch=$OPTARG ;; f) forcep=t ;; m) mirror=$OPTARG ;; q) myqarch=$OPTARG ;; Q) qemup=t dbsopts=--foreign ;; v) vg=$OPTARG ;; x) crossp=t ;; z) lvsz=-$OPTARG ;; *) badp=t ;; esac done shift $(( $OPTIND - 1 )) case $# in 0) badp=t ;; esac case $badp in t) cat >&2 <&2 "$0: bad chroot name \`$arg'"; exit 1 ;; esac done if [ ! -d /dev/$vg/ ]; then echo >&2 "$0: no volume group \`$vg'"; exit 1; fi for arg in "$@"; do d=${arg%-*} a=${arg#*-} mnt=/mnt/chroot/$d-$a mkdir -p $mnt if mountpoint -q $mnt; then umount $mnt; fi if [ -b /dev/$vg/$d-$a ]; then case $forcep in nil) echo >&2 "$0: volume \`$d-$a' already exists"; exit 1 ;; t) lvremove -f $vg/$d-$a ;; esac fi lvcreate --yes $lvsz -n$arg $vg mkfs -j -L$arg /dev/$vg/$arg mount -orelatime,data=writeback,commit=3600,barrier=0 /dev/$vg/$arg $mnt/ mkdir -m755 $mnt/fs/ chmod 750 $mnt/ pkgs=ccache,eatmydata,fakeroot,libfile-fcntllock-perl,locales,tzdata case $crossp in nil) pkgs=$pkgs,build-essential ;; esac eatmydata debootstrap $dbsopts --arch=$a --variant=minbase --include=$pkgs \ $d $mnt/fs/ $mirror case $qemup in t) case $a in armel | armhf) qarch=arm ;; arm64) qarch=aarch64 ;; amd64) qarch=x86_64 ;; i386) qarch=i386 ;; *) echo >&2 "$0: no qemu arch for $a"; exit 1 ;; esac qemu=qemu-$qarch-static install /usr/local.schroot/cross/$d-$myqarch/QEMU/$qemu $mnt/fs/usr/bin/ chroot $mnt/fs/ /debootstrap/debootstrap --second-stage ln -sf /usr/local.schroot/cross/$d-$myqarch/QEMU/$qemu $mnt/fs/usr/bin/ ;; esac cd $mnt/fs/usr/ rm -rf local/; ln -s local.schroot/$a local cd $mnt/fs/etc/apt/ rm -rf apt.conf sources.list ln -s /usr/local.schroot/config/apt/conf.d/10sbuild apt.conf.d/ ln -s /usr/local.schroot/config/apt/conf.d/90local apt.conf.d/ ln -s /usr/local.schroot/config/apt/sources.$d sources.list cat >apt.conf.d/20arch <policy-rc.d <&2 "policy-rc.d: Services disabled by policy." exit 101 EOF chmod +x policy-rc.d cd $mnt/fs/etc/ld.so.conf.d/ cat >libc.conf <zzz-local.conf </dev/null 2>&1 --no-rename --help then no_rename=--no-rename else no_rename= fi dpkg-divert --package install-cross-tools \$no_rename \ --divert /usr/bin/$qemu.$a --add /usr/bin/$qemu" /usr/local.schroot/maint/install-cross-tools -a$myarch -q$myqarch $d-$a ;; esac schroot -uroot -csource:$d-$a -- eatmydata sh -e -c ' apt-get update apt-get -y upgrade locale-gen ldconfig apt-get -y autoremove apt-get clean' done