Package: mmdebstrap Version: 0.5.0-1 Severity: wishlist File: /usr/bin/mmdebstrap
It would cool if I could do an unprivileged mmdebstrap and get a .squashfs instead of a tarball. Sales pitch: squashfs is a file format that can act both like an archive (replaces .tar.xz): unsquashfs -d foo/ foo.sq and like a block device (replaces .iso): sudo mount -o loop foo.sq foo/ squashfs-tools 4.4 understands SOURCE_DATE_EPOCH (reproducible builds). Unlike .tar.xz, it is possible to list of extract a subtree without decompressing the whole thing. Unlike (some versions of) tar, it has sensible defaults, so you do not get burned by forgetting --numeric-owner. Debian Live images are squashfs-based for about a decade. I can't read perl very well anymore, so it's not clear to me how to actually patch this support in. Looking at references to "@taropts", it seems like tar gets called about 4 times, and you'd need an equivalent "mksquashfs" in each one of those cases? Yuk. For reference, a basic usage is: mksquashfs foo/ foo.squashfs And a complicated horrible usage is (in bash): # NB: with -regex, each path component is matched as a separate, *unanchored* ERE. # If you just pass 'usr/share/info/', it will also exclude usr/share/zoneinfo. exclusions=( # Since boot/* is needed outside the squashfs, don't duplicate it inside. '^boot$/.' # Filesystems created at boot time. '^(dev|tmp|run)$/.' '^var$/^(lock|run|tmp)$/.' # Cryptographic keys MUST NOT be baked in. '^etc$/^dropbear$/^dropbear_.*_host_key$' '^etc$/^ssh$/^ssh_host_.*_key(.pub)?$' '^etc$/^ssl$/^certs$/^ssl-cert-snakeoil.pem$' '^etc$/^ssl$/^private$/^ssl-cert-snakeoil.key$' # Build-time configuration and cache. '^etc$/^machine-id$' '^etc$/^(debian_chroot|hostname|hosts|motd(\.tail)?|resolv.conf)$' '^etc$/^apt$/^apt.conf.d$/^10bootstrap$' '^etc$/^network$/^interfaces$' '^usr$/^sbin$/^policy-rc\.d$' '^var$/^cache$/^apt$/^(src)?pkgcache\.bin$' '^var$/^cache$/^apt$/^archives$/\.deb$' '^var$/^cache$/^bootstrap$' '^var$/^lib$/^apt$/^lists$/.' '^var$/^log$/.' # No documentation (safety net for dpkg.cfg.d/75no-docs). '^usr$/^share$/^(doc|info|man|omf|help)$/.' '^usr$/^share$/^gnome$/^help$/.' ) mksquashfs target/ target/boot/filesystem.squashfs -b 1M -comp xz -Xbcj x86 -Xdict-size 100% -no-recovery -regex -e "${exclusions[@]}" -- System Information: Debian Release: 10.1 APT prefers stable APT policy: (990, 'stable'), (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 4.19.0-6-amd64 (SMP w/2 CPU cores) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_AU.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages mmdebstrap depends on: ii apt 1.8.2 ii perl 5.28.1-6 ii perl-doc 5.28.1-6 Versions of packages mmdebstrap recommends: ii arch-test 0.15-2 ii fakechroot 2.19-3.2 ii fakeroot 1.23-1 ii mount 2.33.1-0.1 ii pseudo [fakeroot] 1.9.0+git20180920-1 ii uidmap 1:4.5-1.1 Versions of packages mmdebstrap suggests: pn binfmt-support <none> ii dpkg-dev 1.19.7 ii proot 5.1.0-1.3 pn qemu-user <none> pn qemu-user-static <none> -- no debconf information