I've done that "two disconnected trees" in 2.0 kernel. Boot with an initrd.
> And I'm not _complaining_ about it. Just fiddling around with fun
> stuff. If I get really bored I'll figure a way to split the tree
> so there are two completely unconnected mount trees in different
> processes. (Get a private namespace that's chrooted into
> something that somebody else does a umount -l on from their space.
> Or without using umount -l, just have two processes chroot into
> other mount points which should theoretically garbage collect the
> old root if no processes still references it, which presumably
> means one of the processes is init...)
Well, actually, it isn't that hard. Just run something like this:
#! /bin/sh
mkdir /a
mkdir /b
mount -t tmpfs tmpfs /a
mount -t tmpfs tmpfs /b
mkdir /a/old
mkdir /b/old
tool_to_fork_in_new_namespace sh -c "pivot_root /a /a/old && umount -
l /a/old && read"
pivot_root /b /b/old && umount -l /b/old && read
All you need to write is tool_to_fork_in_new_namespace which does
clone(CLONE_NEWNS) followed by exec().
Cheers,
Kyle Moffett