Pseudo incorporates functionality similar to that of fakechroot. The implementation is basically as follows: When incoming arguments are known to be paths, they are automatically converted to absolute, fully canonicalized, paths. When the chroot(2) call is used, pseudo intercepts it and stashes the path to the new root directory internally in the client. This path is then silently prepended to absolute paths. The internal tracking of file paths uses absolute paths including the path to the chroot directory. So, all underlying calls are invoked with absolute, canonical, paths. A few calls are then modified. For instance, when readlink() returns a link, it strips a leading prefix looking like the chroot directory; when symlink() creates a link, if the link path is absolute, the chroot directory is prepended to it. This behavior, which may seem surprising, is an attempt to produce path resolution equivalent to what would normally happen when canonicalizing a path using real chroot; if you create a link to /tmp while in a chroot environment, following that link should yield /tmp. Arguably, now that we are intercepting nearly every incoming path, we should just prepend the chroot path when following absolute symlinks -- this may get revisited. Similarly, when glob() is called, the path to be globbed has the chroot directory prepended, and then the results have any leading chroot directory stripped from them. This implementation is far from complete or perfect; the intent is that it provide enough functionality to allow RPM and similar tools to run file system installs using chroot().