[[!meta copyright="Copyright © 2012, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] This documents the currently-needed tricks to successfully build a [[glibc/chroot]] in GNU/Hurd. # Preparation It can be a good idea to put the chroot on a separate translator, for instance: # dd [...] < /dev/zero > storage # mke2fs storage # settrans -c chroot /hurd/ext2fs $PWD/storage # Unpack Debootstrap should be able to build the content: # debootstrap sid chroot # Tricks 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. [[!tag open_issue_hurd]] ## Sockets Since the passive [[translator/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 -kp chroot/servers /hurd/firmlink /servers # settrans -kp chroot/dev /hurd/firmlink /dev # settrans chroot/tmp /hurd/firmlink /tmp # settrans -c chroot/var/lib/dbus /hurd/firmlink /var/lib/dbus # settrans -c chroot/run/dbus /hurd/firmlink /run/dbus # settrans -kp chroot/proc /hurd/firmlink /proc # settrans -c $CHROOT/$HOME/.dbus /hurd/firmlink /$HOME/.dbus