summaryrefslogtreecommitdiff
path: root/hurd/chroot.mdwn
blob: 60bf47b7ca9bb3750f7ef0a80b7a769369e1b9d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[[!meta copyright="Copyright © 2012 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 chroot in
GNU/Hurd.

# Preparation

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

# 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/pflocal) 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.

## Sockets

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

## Network

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