This documents the currently-needed tricks to successfully build ain GNU/Hurd.
For proper translator startup, the chroot storage needs to be handled by a separate translator, for instance:
# dd [...] < /dev/zero > storage # mke2fs storage # settrans -c chroot /hurd/ext2fs $PWD/storage
Debootstrap should be able to build the content:
# debootstrap sid chroot
One current issue to know about chroots is that since passive translators (e.g.
/servers/socket/1) are started by the root translator, which is not aware
of the chrooting, these passive translators are started non-chrooted, leading to
a few issues.
Since the passive pflocal translator will not be chrooted, local socket creation will actually happen in the root filesystem. To make things work correctly the programs inside the chroot need to be able to access them:
# settrans chroot/servers/socket/1 /hurd/firmlink /servers/socket/1 # settrans chroot/tmp /hurd/firmlink /tmp # settrans -c chroot/var/lib/dbus /hurd/firmlink /var/lib/dbus
Unless using a separate IP for the chroot, it is preferrable to share the pfinet translator:
# settrans chroot/servers/socket/2 /hurd/firmlink /servers/socket/2 # settrans chroot/servers/socket/26 /hurd/firmlink /servers/socket/26