Hi, Quoting Trent W. Buck (2019-10-10 11:31:37) > It would cool if I could do an unprivileged mmdebstrap and get a .squashfs > instead of a tarball.
I agree. That would be very cool! Unfortunately, I think there are some complications: 1. mmdebstrap can work completely without superuser privileges because in the end the output is just a file containing a certain arrangement of bytes and there is no sensible reason why one should need root privileges to figure out the right arrangement of bytes. This is easily possible with the tar output format because how the right arrangement of bytes for device nodes for example has to look like can easily be produced without being root. This is not possible with mksquashfs as it requires the files it packs to actually exists beforehand. 2. mmdebstrap allows to produce its output on stdout but mksquasfs can only output to either a block device or a regular file. 3. as you noted, squashfs is read-only, so mmdebstrap would need yet another command line argument so that the user can specify which paths they do not want in the final image. More CLI options mean yet more complexity and longer documentation. With tar as output format we don't need such an option because we can just do: $ mmdebstrap unstable - | tar --exclude=./dev > out.tar 4. mksquashfs has a ton of options which somehow have to be exposed via mmdebstrap which means yet even more CLI options and more complexity What we could do is to add squashfs support for all the cases where the above does not apply, so namely when mmdebstrap is run as root and the output is to be placed into a file. Namely when doing this: $ sudo mmdebstrap [...] unstable-chroot.squashfs But this also adds a bunch of complexity to an already very complex codebase because now we will need even more exception handling, error printing and documentation which exactly details what conditions have to be met for direct squashfs output. And then there is also the question of about all the additional options we will need to change compression type block size etc... Would it not help many more users if there was a tar2squashfs command which could also read from stdin? That command could then be used by an even wider audience for even more purposes. I agree squashfs is great but with the current tooling around it forbidding piping and root-less operation, it is not quite the perfect output format for mmdebstrap as tar is. So maybe you should rather approach mksquashfs upstream and talk about allowing tarballs as input? Sales pitch: you could create a squashfs with files owned by root without ever having needing root privileges. :) Thanks! cheers, josch
signature.asc
Description: signature