Wie funktioniert X11?

4835
Tony Stark

Ich versuche, X11 auf meinem Mac zum Laufen zu bringen, wenn ich eine Verbindung zu einem Remote-Rechner herstelle und viele Probleme habe. Ich habe den ganzen Tag ohne Erfolg gegoogelt. Hier sind meine Hauptfragen:

  1. Was ist der Unterschied zwischen ssh -X, ssh -Y, und wenn ich dies mache, welcher Computer (lokal oder remote) hat den x-Server und welcher hat die Clients?

  2. Startet der Befehl startx den x-Server? Wenn ich also zu meinem Terminal gehe und auf startx klicke, habe ich nur den xserver gestartet?

  3. Warum sollte ich jemals in einen entfernten Computer ssh einbinden und startx verwenden? Benötige ich -X oder -Y, um startx zu verwenden? Es scheint, dass alles, was ich über das Aufstellen des Desktops für gnome / kde auf einem Remote-Computer gelesen habe, dazu führt, dass Sie startx verwenden. Wenn ich startx in diesem Szenario verwende, wer ist der xserver und wer ist der xclient?

  4. Beeinträchtigen die Fenstermanager von gnome / kde bei der Verwendung von startx auf der Remote-Maschine die Implementierung des eigenen x11-Fenstermanagers durch mac? Gibt es überhaupt etwas zu beheben?

  5. Wie spielt so etwas wie VNC in all das hinein? Gibt es einen Unterschied zwischen einer Remote-X-Sitzung und dem Sshing in den Remote-Computer und der Verwendung von Startx?

  6. Was ist der richtige Weg / Befehl, um gnome / kde dazu zu bringen, einen GUI-Desktop auf meinem Remote-Computer des Servers auszuführen? (Der auf meinem Computer angezeigte Desktop ist also der Desktop des Servers). Und mit Desktop meine ich, ich möchte Hintergrundbilder, Ordner, Papierkorb usw.

  7. Wenn NX / VNC die einzige Möglichkeit ist, einen echten Remote-Desktop im Sinne von # 6 richtig zu haben, warum rufen die Befehle $ gnome-session oder $ startkde den gewünschten Desktop mit ssh -X auf, obwohl sie nicht funktionieren korrekt?

Es wäre hilfreich, wenn jeder von ihnen einzeln angesprochen würde, aber wenn Sie mich zu einer klaren Dokumentation führen könnten, wäre das auch hilfreich!

3
Ich würde vorschlagen, dass Sie dies in mehrere Fragen aufteilen oder es zu einem Community-Wiki machen. Das System lässt nicht mehrere richtige Antworten zu, und wenn jede Antwort einzeln beantwortet wird, wird dies zu einem Problem. BinaryMisfit vor 14 Jahren 1
Entschuldigung, wenn ich es einzeln meinte, meinte ich 1 Beitrag, aber antworte wie 1. bla, 2. bla, 3. bla, so dass jede meiner Fragen in demselben Beitrag beantwortet wird. Ich habe nicht vor, dass jede Frage # eine separate Antwort bekommt. Tony Stark vor 14 Jahren 0
Gut genug, es ist jedoch üblich, sich immer nur mit einer Frage zu beschäftigen und nicht mit einem Vielfachen. Ich bezweifle sehr, dass Sie nur eine richtige Antwort auf Ihre Frage finden. BinaryMisfit vor 14 Jahren 0
Ich habe es zu einem Wiki gemacht :) Tony Stark vor 14 Jahren 0
@Diago, warum das osx-Tag für diese Frage hinzufügen? Nicht Linux, eher? Gnoupi vor 14 Jahren 0
sollte wahrscheinlich beides sein; Ich arbeite mit osx und arbeite mit centos Tony Stark vor 14 Jahren 0
Ok, erst jetzt habe ich "mac" im ersten Satz gelesen. Mein Fehler Gnoupi vor 14 Jahren 0

3 Antworten auf die Frage

2
Martin Beckett

Warum sollte ich jemals in einen entfernten Computer ssh einbinden und startx verwenden? Benötige ich -X oder -Y, um startx zu verwenden? Es scheint, dass alles, was ich über das Aufstellen des Desktops für gnome / kde auf einem Remote-Computer gelesen habe, dazu führt, dass Sie startx verwenden. Wenn ich startx in diesem Szenario verwende, wer ist der xserver und wer ist der xclient?

X hat eine etwas "ungewöhnliche" Definition von Client / Server.
Die Maschine mit dem Grafikbildschirm ist der Server, die Anwendungen sind die Clients. So starten Sie den XServer lokal (mit startx) und führen Clients (die Anwendung) möglicherweise remote aus.

Wenn Sie nur lokale Anwendungen ausführen, spielt dies keine Rolle. In früheren Zeiten, in denen Ihre Anwendung die Anzahl der Server benötigte, um die Anzahl der Server zu ändern (z. B. GROSSE Maschine im Keller), könnten Sie den Job auf einer Maschine ohne Anzeige ausführen und auf dem Terminal in Ihrem Büro anzeigen.

Der Fenstermanager ist ein interessanter Fall. Es ist nur eine X-Anwendung wie alles andere. Es ist durchaus möglich, einen X-Server lokal auf einem Mac zu starten und dann einen Motif-Fenstermanager auf einer Sun auszuführen, der die lokalen Fenster verwaltet, während er in einer X-App arbeitet, die auf einer anderen Linux-Maschine ausgeführt wird.

ps. wird in sep Antworten antworten, damit die Leute sie kommentieren / bearbeiten können.

@mgb: oops, lass mich klarstellen (vorausgesetzt, dies ist deine Antwort auf Frage 3). es macht absolut Sinn, startx auf meinem lokalen Rechner zu verwenden. Aber als ich las, wie man einen gnome / kde-Desktop auf einem Remote-Server aktiviert, ist der Befehl startx. das macht keinen Sinn. Warum sollte der Xserver auf dem Remote-Server sein? ist es das, was es tut? Tony Stark vor 14 Jahren 0
2
Andrew J. Brehm
  1. Wenn ich mich richtig erinnere, ordnet ssh -X den X-Server dem Zielcomputer zu und routet dann Verbindungen über den von SSH erstellten Kanal zum Terminal (dh Ihrem Computer). Der "X-Server" ist die Software, die das Fenster für die "X-Clients" zeichnet, dh die Programme, die diese Fenster verwenden.

  2. Ja, startx startet den X-Server. Unter Mac OS X starten Sie den X-Server jedoch durch Starten von X11.app in den Dienstprogrammen.

  3. Sie möchten dies wirklich nicht, es sei denn, Sie versuchen, den X-Server auf dem Computer, auf dem Sie SSH ausführen, neu zu starten. Dies hat jedoch nichts mit Ihrer Verbindung zu diesem Computer oder den Programmen zu tun, die Sie über diese Verbindung ausführen möchten.

  4. Ich bin mir nicht sicher, ob ich die Frage verstehe. Welchen Fenstermanager der Remote-Server ausführt, ist für Ihre Verbindung unerheblich. Fenstermanager laufen auf X-Servern (dies sind spezielle X-Clients), und der X-Server auf Ihrem Mac und der X-Server auf dem Remote-Computer sind zwei separate Bestien.

  5. VNC ist eine andere Lösung für das Problem der Remote-Anzeige von GUI-Apps. Sie können beide kombinieren, aber ich empfehle Ihnen, sie separat zu verstehen.

  6. Lassen Sie Paul Ihr Mac und Peter die (Linux) Maschine sein, zu der Sie eine Verbindung herstellen:

Paul: startx (oder starten Sie X11.app und verwenden Sie das Terminalfenster, das es für Folgendes erstellt)

Paul: xhost + Peter

Paul: ssh -X Peter

Peter: xlogo & (dies sollte jetzt auf dem Bildschirm von Paul angezeigt werden, falls nicht, fahren Sie fort)

Peter: export ANZEIGE = Paul: 0

Peter: xlogo & (das sollte jetzt auf Pauls Bildschirm angezeigt werden)

Danke, sehr hilfreich. Nun, als Antwort auf Ihre Antworten: 1. Was macht -Y? machen Sie es einfach so, dass Sie sagen, dass Sie dem Remote-Computer vertrauen und es tun lassen, was ich gelesen habe? 2. Das Schreiben von startx in das Terminal entspricht dem Treffer von x11 in Apps für Mac, richtig? 4. soweit ich ssh in einen remote comp mit x11 server auf meinem einstelle, wenn ich $ startkde oder $ gnome-session eingebe, werden die entsprechenden desktops angezeigt, aber die fenster sind vermasselt, denn wenn ich einen ordner öffne, öffnet er sich im Hintergrund auf meinem Macs X11 und ist daher hinter dem Desktop versteckt, sodass ich es nicht erreichen kann. Ich habe gehört, dass es ein Konflikt von Window-Mngrs war Tony Stark vor 14 Jahren 0
1. Weiß nicht, was -y macht. 2. ja Sie sind gleich. 4. Starten Sie KDE oder Gnome nicht, wenn Sie vom Mac aus eine Verbindung herstellen. Gnome- und KDE-Programme benötigen nicht den gesamten Desktop, um ausgeführt zu werden. Andrew J. Brehm vor 14 Jahren 0
1
Martin Beckett

Wie spielt so etwas wie VNC in all das hinein? Gibt es einen Unterschied zwischen einer Remote-X-Sitzung und dem Sshing in den Remote-Computer und der Verwendung von Startx?

VNC verhält sich auf eine etwas andere Weise ähnlich. VNC nimmt einfach einen ganzen Bildschirm oder ein einzelnes Fenster und sendet das Video über das Internet an eine VNC-App Ihres lokalen Computers. X führt eine Anwendung auf dem Remote-Computer aus, sendet jedoch alle Anzeigebefehle über das Netz an Ihre lokale X-Anzeige. X macht dies sogar, wenn es lokal ausgeführt wird, aber ein Netzwerkaufruf auf derselben Maschine kann über einen Kurzbefehl erfolgen und ist sehr schnell.

ps. Sie können ssh nicht in eine Remote-Maschine und in startx einbinden - Sie starten den X-Server lokal, dann ssh in eine Remote-Maschine und starten eine X-Anwendung (office / gimp / xeyes / etc) und X behandelt sie lokal.