- 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
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
- rephrase info message to be less misleading
- do not require qemu-$arch-static binary
- check if /proc/sys/fs/binfmt_misc/qemu-$arch exists before reading it
- factor out package downloading function
- replace -oApt::Get::Download-Only=true by -oDebug::pkgDpkgPm=1
- remove guessing of package names in /var/cache/apt/archives/
- drop edsp parsing with proxysolver/mmdebstrap-dump-solution to obtain
downloaded filenames in favour of -oDpkg::Pre-Install-Pkgs::=cat
- /var/cache/apt/archives/ is now allowed to contain packages
- drop --skip=download/empty
- file:// mirrors are now supported if their path is available inside
the chroot
By mixing s@ for --$foo-hook options and manual pushing in --hook-dir,
it can happen that options get lost. Consider the following test:
use Getopt::Long;
my $arr = [];
GetOptions(
'A=s@' => \$arr,
'B=s' => sub { push @{$arr}, $_[1]; }
);
foreach my $hook (@{$arr}) { print "hook: $hook\n"; }
This works fine:
perl test.pl --A=a1 --B=b1 --A=a2 --B=b2
hook: a1
hook: b1
hook: a2
hook: b2
This misses b1:
perl test.pl --B=b1 --A=a2 --B=b2
hook: a2
hook: b2
Without no_chdir=>1 the unshared child process in unshare mode needs
read permissions for the directory from which mmdebstrap is executed.
With this change, the current working directory does not need to be
world-readable anymore.
Closes: #1005857
Reported-by: Trent W. Buck <trentbuck@gmail.com>
The generated image will not be bootable if `mbr.bin` is not installed
into the MBR.
These lines are copied from the "Debian desktop on USB stick" example.