- implements the same as debootstrap in
https://salsa.debian.org/installer-team/debootstrap/-/merge_requests/71
- builds a temporary usr-is-merged package and upgrades to the real one
- create merged-/usr chroots for unstable and testing (which will
become Debian 12 Bookworm)
- add a dedicated merged-/usr section to the manual page
Before, we bind-mounted /dev/ptmx and /dev/pts from the host into the
chroot. This will make posix_openpt() fail with 'No such file or
directory'. The ability to create pseudo terminals is important for apt
(which will throw a warning otherwise) or running script(1) or source
package testsuites like for src:util-linux. This functionality is
restored by mounting a new devpts instance to /dev/pts and making
/dev/ptmx a symlink to /dev/pts/ptmx. Mounting with ptmxmode=666 is
required such that also non-root users in unshare mode are able to
create pseudo terminals. See also:
https://www.kernel.org/doc/Documentation/filesystems/devpts.txthttps://salsa.debian.org/debian/schroot/-/merge_requests/2https://bugs.debian.org/856877https://bugs.debian.org/817236
Since 1:7.0+dfsg-3, binfmt.d from systemd is used as preferred
alternative to binfmt-support. And systemd does not provide an official
way to trigger binfmt (de)registration besides a reboot.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1012163
Since we also have binfmt-support installed, systemd and binfmt-support
work in parallel so this test becomes flaky and sometimes removing the
qemu packages would have the desired effect and sometimes not.
To make the test deterministic again, we explicitly disable emulation by
writing a 0 to /proc/sys/fs/binfmt_misc/qemu-aarch64
If FAKECHROOT_CMD_SUBST sets up wrong substitutions, then binaries
cannot be found. For example if /usr/bin/chroot is listed in
FAKECHROOT_CMD_SUBST but /usr/sbin (the actual location of the chroot
binary) is not in PATH, the command fails
- multiple individual shell scripts instead of one 3.5k line monster
- tests driven by Python script allowing:
* declarative test description in coverage.txt
* collecting errors instead of aborting on first error
* skipping tests
* running specific tests