Hello josch,

Thank you for looking into this.

On Tue, Apr 29, 2025 at 11:09:21PM +0200, Johannes Schauer Marin Rodrigues 
wrote:
> The problem is, that you are running mmdebstrap as the normal user and that
> user does not have the required privileges to look into the lost+found
> directory to check whether it's really empty. With above patch, mmdebstrap 
> will
> just fail with an appropriate error message. This will avoid the "readdir()
> attempted on invalid dirhandle" errors from the subject of this bug.
> 
> But I guess this is not quite why you opened this bug and your actual problem
> is that mmdebstrap gets stuck?

Thank you for your explanation and patch.

mmdebstrap might not have been stuck at the download phase, my network was just
irresponsive and I was killing the process as I saw the errors showing up.
However, I am seeing errors further down. With the same prompt, I'm now seeing

I: skipping emulation check in chrootless mode
I: finding correct signed-by values...
done
I: running apt-get update...
done
I: downloading packages with apt...
done
I: extracting archives...
tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
E: tar --extract failed: 512
W: hooklistener errored out: E: received eof on socket

I: main() received signal PIPE: waiting for setup...
E: mmdebstrap failed to run

 
> If yes, please read on. Otherwise, consider the bug as fixed with the next
> upload of mmdebstrap via above patch.
> 
> Firstly, please be *very* careful with chrootless mode. You are running
> maintainer scripts outside the chroot and this mode is barely tested and many
> packages are not made to work with it at all. So anything can happen including
> a complete wipe of your $HOME. For that reason and because nothing is checking
> whether the versions of programs run by maintainer scripts are of the version
> that your packages inside the chroot expect, it is always a good idea to wrap 
> a
> chrootless mmdebstrap call in some sort of containerization. This includes
> running mmdebstrap in chrootless mode as a customize hooks inside mmdebstrap 
> in
> unshare mode, for example.
> 
> Secondly, have you tried creating a hurd chroot on linux the "normal" way? 
> That
> is by creating a filesystem from a tarball?
> 
> Here is my latest set of runes on the topic:
> 
> https://salsa.debian.org/helmutg/dpkg-root-demo/-/merge_requests/3/diffs#57c00b22e45b81dde62199ab610d05ce70f829bf_0_17
> 
> What do you ultimately want to do?

What I am trying to do is to use mmdebstrap to setup a hurd + linux dual boot
setup, in a similar way to what is achieved with crosshurd
(https://packages.debian.org/sid/crosshurd).

I see what you mean about creating a tarball and copying this over to a new
partition, but since mmdebstrap can use a directory as a target, I thought it
would be possible to shortcut that step.

I hear all the warnings you make about chrootless mode, and that is why I was
running as a normal user instead of root, but you seem to advise even against
that. The problem in running mmdebstrap --mode=chrootless --arch=hurd-i396
inside another mmdebstrap chroot is that the target mountpoint for the hurd
partition would not be accessible.

Do you see a way to install a hurd image to a partition without creating and
copying a tarball explicitly?

Many thanks,
João

Reply via email to