Grafische Programme in einer chroot-Umgebung aufrufen23. Oktober 2005
Ihr VorhabenSie haben unter dem Unterverzeichnis /test ein Linuxsystem installiert oder die Wurzelpartition eines anderen Linuxsystems gemountet. Mit dem Befehl chroot /test können Sie zwar wie gewohnt "hineinwechseln" und Programme aufrufen. Das Starten von grafischen Programmen scheitert aber, selbst wenn Sie DISPLAY auf :0 setzen. Das ProblemLokale Programme kommunizieren mit dem X-Server Ihres Rechners über ein Unix-Socket im Verzeichnis /tmp/.X11-unix. In Ihrer chroot-Umgebung gibt keinen Zugriff auf dieses Socket. Die LösungMit einem mount-Befehl blenden Sie das Verzeichnis /tmp/.X11-unix des "äußeren" Rechners in den chroot-Käfig ein: root@linux# mkdir -p /test/tmp/.X11-unix root@linux# mount --bind /tmp/.X11-unix /test/tmp/.X11-unix Außerdem erlauben Sie Zugriff auf das Display für alle lokalen Prozesse: user@linux> xhost + local: Nach dem Aufruf von chroot /test setzen Sie im inneren System die DISPLAY-Variable auf :0 und können nun grafische Programme starten: root@linux# chroot /test root@linux# export DISPLAY=:0 root@linux# xterm Übrigens: Eine TCP-Verbindung über localhost ist bei den meisten Distributionen aus Sicherheitsgründen per Default ausgeschaltet, sonst könnte man statt obigem Trick und den Umweg über localhost gehen. Außen xhost + localhost eingeben und innen export DISPLAY=localhost:0. |
| |||||||||||||||||||||