This setup was guided by the following page: http://wiki.debian.org/sbuild?rev=19 (Since then, that Debian wiki page evolved, update my be need on our side...) ===== Install sbuild + initial setup ===== apt-get install sbuild user=neyron sbuild-adduser $user # this needs "entropy"... Do weird things and think different, waiting for it to complete... sbuild-update --keygen # share the deb archives among schroots... echo /var/cache/apt/archives /var/cache/apt/archives none rw,bind 0 0 >>/etc/schroot/sbuild/fstab # create a fake disk and format it as btrfs (btrfs is still experimental...) dd if=/dev/zero of=/home/schroot-btrfs bs=1M count=1 seek=$((20 * 1024 -1 )) losetup /dev/loop0 schroot-btrfs mkfs.btrfs /dev/loop0 losetup -d /dev/loop0 # setup the mount of our btrfs disk in /src/chroot mkdir -p /srv/chroot cat <>/etc/fstab /home/schroot-btrfs /srv/chroot btrfs defaults 0 0 EOF mount /src/chroot ===== Create a schroot ===== # set the Debian distribution: sid, wheezy, squeeze... distribution=sid # set the architecture: amd64, i386... architecture=amd64 # set the debian mirror to use mirror=http://ftp2.fr.debian.org/debian # create the sub-volume for this schroot btrfs subvolume create /srv/chroot/$distribution-$architecture-sbuild # create the schroot sbuild-createchroot --arch=$architecture $distribution /srv/chroot/$distribution-$architecture-sbuild $mirror # modify the schroot config to say it's btrfs ! mkdir -p /srv/chroot/snapshots sed -i "s,type=directory,type=btrfs-snapshot,; /directory=/ d" /etc/schroot/chroot.d/$distribution-$architecture-sbuild* cat >>/etc/schroot/chroot.d/$distribution-$architecture-sbuild* < ===== Create a schroot for crossbuilding for another arch ===== First install the latest version of ''qemu_user_static'' (e.g. from sid). # set the Debian distribution: buster (sid does not work) distribution=buster # set the architecture: amd64, i386... architecture=arm64 #or ppc64el # set the debian mirror to use mirror=http://ftp2.fr.debian.org/debian # create the sub-volume for this schroot btrfs subvolume create /srv/chroot/$distribution-$architecture-sbuild sbuild-createchroot --debootstrap=qemu-debootstrap --arch=$architecture $distribution /srv/chroot/$distribution-$architecture-sbuild $mirror Then see above to finish (switch to btrfs...). In case of problems, hopefully this page may help: * https://danielstender.com/blog/qemu-ppc64el-trouble/ (vanished) * https://web.archive.org/web/20161119015128/http://www.danielstender.com/blog/qemu-ppc64el-trouble.html (archive) ===== Using the schroots! ===== See your schroot: schroot -c chroot:centos5-amd64 source:centos5-amd64 chroot:centos6-amd64 source:centos6-amd64 chroot:sid-amd64-sbuild source:sid-amd64-sbuild chroot:sid-i386-sbuild source:sid-i386-sbuild chroot:squeeze-amd64-sbuild source:squeeze-amd64-sbuild chroot:squeeze-backports-amd64-sbuild source:squeeze-backports-amd64-sbuild chroot:squeeze-backports-i386-sbuild source:squeeze-backports-i386-sbuild chroot:squeeze-i386-sbuild source:squeeze-i386-sbuild chroot:wheezy-amd64-sbuild source:wheezy-amd64-sbuild chroot:wheezy-backports-amd64-sbuild source:wheezy-backports-amd64-sbuild chroot:wheezy-backports-i386-sbuild source:wheezy-backports-i386-sbuild chroot:wheezy-i386-sbuild source:wheezy-i386-sbuild * chroot:* are stateless chroot, everything is lost once a session is ended * source:* are the bases for the chroot, modification (upgrades, etc) are persistant see schroot manual ===== Using sbuild ===== sbuild is to build Debian packages. See [[debian packaging]]. Examples: # build a package in a schroot sbuild -As -d sid --arch amd64 oar_2.5.3-1.dsc # upgrade a schroot sbuild-update -ugd sid More info: see sbuild manual