2020-01-23: Creating LVM-backed schroots rak ================================================================ I use sbuild to build my Debian under a clean environment. To save time I prefer to store my clean chroots on LVM volumes and use snapshotting, instead of extracting the chroots from tarballs every time. I rarely need to create new schroots and I can never remember the steps. To help future me remember (and to help whoever else needs to create an LVM-backed schroot), I've decided to write down the steps. ----------------------8<------------------------ # Edit these to your heart's content export VG="tosh" # volume group export RELEASE="buster" # debian release export ARCH="amd64" # arch for the chroot export MIRROR="http://localhost:3142/debian/" export MOUNT_PT=$(mktemp -d) export LV="${RELEASE}_${ARCH}_chroot" lvcreate -L 5G "${VG}" -n "${LV}" mkfs.ext4 "/dev/${VG}/${LV}" mount "/dev/${VG}/${LV}" "${MOUNT_PT}" sbuild-createchroot --chroot-mode schroot "${RELEASE}" \ "${MOUNT_PT}" "${MIRROR}" umount "${MOUNT_PT}" # sbuild-createchroot's automatically generated config # file does not configure our schroot to use LVM's # snapshot mechanism. Let's delete it and create our # own instead. rm "/etc/schroot/chroot.d/${RELEASE}-${ARCH}-sbuild-"* cat </etc/schroot/chroot.d/${RELEASE}-${ARCH}-snap [${RELEASE}-${ARCH}-snap] type=lvm-snapshot description=Debian ${RELEASE} LVM snapshot groups=sbuild,root root-groups=root,sbuild device=/dev/${VG}/${LV} lvm-snapshot-options=--size 5G aliases=${RELEASE},${RELEASE}-${ARCH} EOF ----------------------8<------------------------ To keep the schroot up to date, you can then run the sbuild-update command, e.g., $ sudo sbuild-update -udr source:buster