5 mirror
=http
://deb.debian.org
/debian
/
6 myarch
=$
(dpkg-architecture
-qDEB_HOST_ARCH
) qemup
=nil
; unset myqarch
7 eval $
(apt-config
-c
/usr
/local.schroot
/config
/apt
/conf.d
/90local \
8 shell http_proxy Acquire
::http
::proxy
)
9 case ${http_proxy+t} in t
) export http_proxy
;; esac
11 badp
=nil forcep
=nil dbsopts
= crossp
=nil
; unset qemu
12 while getopts "a:e:fm:q:Qv:z:x" opt
; do
18 Q
) qemup
=t dbsopts
=--foreign
;;
25 shift $
(( $OPTIND - 1 ))
26 case $# in 0) badp
=t
;; esac
30 usage: $0 [-fxQ] [-a MYARCH] [-m MIRROR] [-q MYQARCH] [-v VG] [-z LVSZ]
36 case ${myqarch+t} in t
) ;; *) myqarch
=$myarch ;; esac
38 case $arg in *-*-*) echo >&2 "$0: bad chroot name \`$arg'"; exit 1 ;; esac
40 if [ ! -d
/dev
/$vg/ ]; then echo >&2 "$0: no volume group \`$vg'"; exit 1; fi
43 d
=${arg%-*} a
=${arg#*-}
46 if mountpoint
-q
$mnt; then umount
$mnt; fi
47 if [ -b
/dev
/$vg/$d-$a ]; then
49 nil
) echo >&2 "$0: volume \`$d-$a' already exists"; exit 1 ;;
50 t
) lvremove
-f
$vg/$d-$a ;;
53 lvcreate
--yes $lvsz -n
$arg $vg
54 mkfs
-j
-L
$arg /dev
/$vg/$arg
55 mount
-orelatime
,data
=writeback
,commit
=3600,barrier
=0 /dev
/$vg/$arg $mnt/
58 pkgs
=ccache
,eatmydata
,fakeroot
,libfile-fcntllock-perl
,locales
,tzdata
59 case $crossp in nil
) pkgs
=$pkgs,build-essential
;; esac
60 eatmydata debootstrap
$dbsopts --arch
=$a --variant
=minbase
--include
=$pkgs \
65 armel | armhf
) qarch
=arm
;;
66 arm64
) qarch
=aarch64
;;
67 amd64
) qarch
=x86_64
;;
69 *) echo >&2 "$0: no qemu arch for $a"; exit 1 ;;
71 qemu
=qemu-
$qarch-static
72 install /usr
/local.schroot
/cross
/$d-$myqarch/QEMU
/$qemu $mnt/fs
/usr
/bin
/
73 chroot
$mnt/fs
/ /debootstrap
/debootstrap
--second-stage
74 ln -sf
/usr
/local.schroot
/cross
/$d-$myqarch/QEMU
/$qemu $mnt/fs
/usr
/bin
/
78 rm -rf
local/; ln -s
local.schroot
/$a local
80 rm -rf apt.conf sources.list
81 ln -s
/usr
/local.schroot
/config
/apt
/conf.d
/10sbuild apt.conf.d
/
82 ln -s
/usr
/local.schroot
/config
/apt
/conf.d
/90local apt.conf.d
/
83 ln -s
/usr
/local.schroot
/config
/apt
/sources.
$d sources.list
84 cat >apt.conf.d
/20arch
<<EOF
92 cp /etc
/locale.gen
/etc
/timezone .
/
93 tz
=$
(cat timezone
); ln -sf
/usr
/share
/zoneinfo
/$tz localtime
94 ln -sf
/proc
/mounts mtab
95 cd $mnt/fs
/etc
/default
/
96 cp /etc
/default
/locale .
98 cat >policy-rc.d
<<EOF
100 echo >&2 "policy-rc.d: Services disabled by policy."
104 cd $mnt/fs
/etc
/ld.so.conf.d
/
106 # libc default configuration
108 cat >zzz-local.conf
<<EOF
110 ### Local hack to make /usr/local/ late.
117 schroot
-uroot
-csource
:$d-$a -- eatmydata sh
-e
-c
"
118 if dpkg-divert >/dev/null 2>&1 --no-rename --help
119 then no_rename=--no-rename
123 dpkg-divert --package install-cross-tools \$no_rename \
124 --divert /usr/bin/$qemu.$a --add /usr/bin/$qemu"
125 /usr
/local.schroot
/maint
/install-cross-tools
-a
$myarch -q
$myqarch $d-$a
128 schroot
-uroot
-csource
:$d-$a -- eatmydata sh
-e
-c
'
133 apt-get -y autoremove