Requisiti
È stato installato un sistema Linux nella sottodirectory /test
o è stata montata la partizione root di un altro sistema Linux. Con il comando chroot /test
si può "entrare" come al solito e chiamare i programmi. Ma l'avvio dei programmi grafici fallisce, anche se si imposta DISPLAY
su :0
.
Il problema
I programmi locali comunicano con il server X del computer tramite un socket Unix nella directory /tmp/.X11-unix
. Nell'ambiente chroot
non c'è accesso a questo socket.
La soluzione
Con il comando mount
si mostra la directory /tmp/.X11-unix
del computer "esterno" nella gabbia chroot
:
root@linux# mkdir -p /test/tmp/.X11-unix
root@linux# mount --bind /tmp/.X11-unix /test/tmp/.X11-unix
Consentiamo inoltre l'accesso al display per tutti i processi locali:
user@linux> xhost + local:
Dopo aver richiamato chroot /test
, impostare la variabile DISPLAY
nel sistema interno su :0
e quindi avviare i programmi grafici:
root@linux# chroot /test
root@linux# export DISPLAY=:0
root@linux# xterm
A proposito: per motivi di sicurezza, la connessione TCP tramite localhost
è disattivata per impostazione predefinita nella maggior parte delle distribuzioni, altrimenti, invece del trucco sopra descritto, si potrebbe prendere la strada tramite localhost
. Inserite xhost + localhost
all'esterno e export DISPLAY=localhost:0
all'interno.