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.

Linux knowledge

Questi articoli sono stati scritti dal fondatore di Checkmk molti anni fa.
Tuttavia, sono ancora validi e quindi li conserviamo sul nostro sito web.
Da allora Mathias ha sviluppato un software di monitoraggio chiamato Checkmk.

Scopri di più