was macht der startx befehl


18

Beim Lesen über Ubuntu fand ich die folgende Aussage .....

Wenn der Anzeigemanager im Standard-Runlevel nicht standardmäßig gestartet wird, können Sie X nach der Anmeldung an einer Textmodus-Konsole auf eine andere Weise starten, indem Sie startx über die Befehlszeile ausführen.

Was bedeutet es, ein Standard-Runlevel zu sein? Und als ich das auf meinem Terminal ausprobierte, bekam ich Folgendes:

anupam@JAZZ:~$ startx

X: user not authorized to run the X server, aborting.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

Ich habe gerade startx ausgeführt, aber ich habe den gleichen Fehler wie Sie erhalten, also habe ich es sudo gemacht. Schaltet es so, dass es mich in das Root-Konto eingeloggt hat. Um zu meinem Benutzer zurückzukehren, habe ich mich von root abgemeldet.

Antworten:


25

Es war einmal (1), als der Arbeitsspeicher der Computer in Kilobyte und die Festplatten in Megabyte gemessen wurden, wurde das ständige Ausführen der grafischen Benutzeroberfläche als schädlich angesehen.

Die meisten Unix-Computer wurden für wissenschaftliche Berechnungen und Simulationen in Mehrbenutzerumgebungen verwendet, und die auf ihnen ausgeführte grafische Oberfläche würde den für sie verfügbaren Speicher und die CPU-Leistung verringern.

Wenn Sie also eine grafische Oberfläche brauchten, haben Sie sie gerade mit startx(2) gestartet .

startxGrundsätzlich wird ein Xserver (der grafische "Treiber") und ein darauf laufender Befehl ausgeführt, bei dem es sich in der Regel um einen Fenstermanager handelt . Standardmäßig befinden sich die ausgeführten Befehle in der ~/.xinitrcDatei in Ihrem Basisverzeichnis oder in einer anderen generischen Systemdatei.

Moderne Systeme werden von Grund auf als grafisches System betrachtet, das die ganze Zeit läuft. Daher hat wahrscheinlich niemand die Funktionsweise startxseit Ewigkeiten überprüft - das erklärt eine Menge seltsamer Verhaltensweisen, die man haben kann.

Wenn Sie experimentieren und die guten alten Zeiten spüren möchten, tun Sie am besten Folgendes:

A) installieren Xnestund fvwm. Xnest ist ein Grafikserver innerhalb eines Servers, eine Art Server, der in Ihrem normalen System als Fenster geöffnet wird. Fvwm ist ein sehr einfacher Fenstermanager, der damals sehr beliebt war. Sie benötigen auch alte Pixmap-Schriftarten.

sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

B) Schreiben Sie diese Datei irgendwo in Ihr Heimatverzeichnis und rufen Sie sie auf ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Ausführen (Hinweis: startxWird normalerweise zuerst mit dem Client-Befehl, dann mit einem doppelten Bindestrich und dann mit einem Server-Befehl ausgeführt. Wie ich bereits sagte, haben die meisten neuen Systeme keine sinnvollen Standardeinstellungen für sich startx.).

cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

... und Sie haben einen 80er Workstation-Bildschirm:

Bildbeschreibung hier eingeben

(Sie können das Menü aufrufen, indem Sie auf den Desktop "Xnest" klicken.)

... und wenn Sie sich wirklich abenteuerlustig fühlen, können Sie eine native Sitzung auf einer anderen virtuellen Konsole starten (lesen Sie die anderen Antworten), indem Sie mit Strg-Alt-F1 zu einer davon wechseln, sich anmelden und

startx ~/test 

Das wird normalerweise bei Strg-Alt-F8 geöffnet.

Hinweis : Moderne Desktop-Umgebungen können nicht gleichzeitig für denselben Benutzer auf zwei verschiedenen Konsolen ausgeführt werden. So verwenden Sie keine gnome-shelloder unityoder moderne Dinge , wenn diese Experimente zu tun, oder man kann vermasseln Ihre Konfiguration.


Fußnoten:

(1) Apropos 1980-90 hier.

(2) Ich hatte zum Beispiel einen Laptop mit 256 KB RAM. In der grafischen Benutzeroberfläche (B & W!) War es schmerzhaft langsam, in der Konsole jedoch bissig. Also ich habe die meisten meiner Arbeit (Bearbeitung C, LaTeXund ähnliche Dateien) im Konsolenmodus, und nur in der grafischen Umgebung eingeschaltet , wenn es wirklich erforderlich ist .


4
Vielen Dank @ Rmano, tolle Erklärung total verstanden ...
Lazarus

9

startx Startet die xsession oder die grafische Oberfläche, auf der Sie einen Anmeldebildschirm und mehr als nur eine ASCII-Konsole (Textsitzung) sehen.

Sie erhalten diesen Fehler, weil die xsession bereits gestartet ist und Sie versuchen, den Befehl in der xsession auf tty7 auszuführen.

tty7 ist die Benutzerschnittstelle , die an existiert ctrl+ alt+ f7(default xsession).

tty1 ist die Benutzeroberfläche , die an existiert ctrl+ alt+ f1.

tty2 ist die Benutzeroberfläche , die an existiert ctrl+ alt+ f2. . . und so weiter.

tty1 - tty6 sind Textsitzungen und Sie können sich in einem dieser Bildschirme mit Ihrem Benutzernamen und Passwort anmelden. Nachdem Sie sich angemeldet haben, können Sie den Befehl startxausführen und die xsession wird in tty7 gestartet, wenn sie noch nicht ausgeführt wird, und in tty8, wenn tty7 bereits eine xsession ausführt.


Run Levels:

Run-Level 0 Halt - Fährt das System herunter.

Run-Level-1-Einzelbenutzermodus - Modus für administrative Aufgaben.

Run-Level 2 Grafischer Mehrbenutzer mit Netzwerk - Startet das System normal.

Runlevel 3-5 Nicht verwendet, aber wie Runlevel 2 konfiguriert

run-level 6 Reboot - Startet das System neu.

Der Begriff Runlevel bezieht sich auf einen Betriebsmodus in einem der Computerbetriebssysteme, die eine Initialisierung nach Unix System V implementieren. Herkömmlicherweise existieren sieben Runlevel, die von null bis sechs nummeriert sind; es können jedoch bis zu zehn von null bis neun verwendet werden. S wird manchmal als Synonym für eine der Ebenen verwendet. Beim Booten wird nur ein "Runlevel" ausgeführt - Runlevel werden nicht sequentiell ausgeführt, dh entweder Runlevel 2 ODER 3 ODER 4 wird ausgeführt, nicht 2 dann 3 dann 4. - de.wikipedia.org/wiki/Runlevel


Vielen Dank, mchid es hat mir sehr geholfen,
Lazarus

Aber wenn ich mich bei tty1 anmelde und $ startx durchführe, bekomme ich ein Desktop-Fenster ohne Startleiste und andere Optionen ... (bei tty8) -ctrl + Alt + F8, ist, dass mein startx nicht gut konfiguriert war oder einige Einschränkungen aufweist Optionen auf StartX (wie hier nur Desktop)
Lazarus

1
@jazzz Dies ist Ihre Standardumgebung x. Höchstwahrscheinlich sind mehrere Desktop-Umgebungen installiert. Sie sollten in der Lage sein, STRG + T zu verwenden, um ein Terminal zu erhalten, damit Sie Befehle wie unityoder gnome-shell --replaceoder sogar gnome-paneloder ausführen können metacity --replace.
März

@jazzz Wenn Sie diese Antwort akzeptieren, klicken Sie auf das Symbol links, um sie zu schließen. Vielen Dank!
März

Es tut mir leid, dass ich mich etwas verspätet habe, um eine weitere Frage zu diesem Thema zu stellen. Ist das neue Fenster, das ich mit Strg + Alt + F8 erhalten habe, dem Arbeitsbereich ähnlich?
Lazarus

4

Es bedeutet einfach , an einem anderen tty .

Zitieren der verknüpften Frage:

Standardmäßig hat Ubuntu 7 tty.

1-6Werden nur über die Befehlszeile ausgeführt, wird 7Ihre X-Sitzung ausgeführt (Ihr normaler grafischer Desktop).

Verwenden Sie diese Tastenkombination, um darauf zuzugreifen: Ctrl+ Alt+F1

(Wechseln Sie F1zu F1-F6, um auf das Terminal zuzugreifen, das Sie benötigen.)

Um zu Ihrer X-Sitzung (dem normalen Desktop) zurückzukehren, verwenden Sie: Ctrl+ Alt+F7

after logging on to a text-mode console bedeutet einfach, sich bei einem anderen tty anzumelden und den Befehl einzugeben:

startx

1

Wie Rmano feststellt, ist startx ein sehr alter Ansatz. Als dies verwendet wurde, wurde die X11-Binärdatei setuid root installiert.

Ich habe dies gerade in einer VM ausprobiert und in der Tat startxversagt, wie Sie beschreiben, standardmäßig. chmod u+s /usr/lib/xorg/Xorgbehebt das allerdings.

Ich weiß nicht empfehlen zu machen Xorgsei setuid root. Die Welt hat sich aus gutem Grund davon entfernt. Aber wenn Sie in einer wegwerfbaren VM herumspielen, ist das die richtige Vorgehensweise startx.


1

QEMU + Buildroot minimales Beispiel

Am liebsten lerne ich, was etwas bewirkt, indem ich ein minimales Beispiel mache, in dem es ausgeführt wird.

Unter Ubuntu ist dies schwierig, da eine Sekunde startxmöglicherweise mit Ihrem aktuellen Desktop in Konflikt steht.

/ubuntu//a/519164/52975 schlägt vor Xnest, aber mit QEMU + Buildroot können wir noch minimaler werden und eine Mikrodistribution mit nur X11 erstellen.

Auf diese Weise sollte es einfacher sein zu verstehen, was los ist.

Ich habe die Erstellung der Distribution unter /unix//a/306116/32558 beschrieben

Sobald Sie das Image auf QEMU ausgeführt haben, starten Sie mit einer TTY-Shell.

Wenn Sie dann tun:

root
startx

es startet eine X11 GUI:

Bildbeschreibung hier eingeben

Schauen Sie sich nun die Quelle für startxdiese Distribution an, die nur ein Shell-Skript ist.

Es ist ein einfacher Wrapper /usr/bin/xinit, und der geht /etc/X11/xinit/xinitrcüber xinit.

Wenn Sie öffnen /etc/X11/xinit/xinitrc, enthält es die folgenden Zeilen:

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &

Wir sehen also, dass es losgeht:

  • twm: ein sehr einfacher und alter Fenstermanager
  • xclockund xtermwas wir auf dem Bildschirm sehen

Denn /usr/bin/xinitwir können tun:

man xinit

was sagt, dass:

Wenn in der Befehlszeile kein bestimmtes Client-Programm angegeben ist, sucht xinit im Ausgangsverzeichnis des Benutzers nach einer Datei mit dem Namen .xinitrc, die als Shell-Skript zum Starten von Client-Programmen ausgeführt wird. Wenn keine solche Datei vorhanden ist, verwendet xinit standardmäßig Folgendes:

xterm  -geometry  +1+1  -n  login  -display  :0

Wenn in der Befehlszeile kein bestimmtes Serverprogramm angegeben ist, sucht xinit im Ausgangsverzeichnis des Benutzers nach einer Datei mit dem Namen .xserverrc, die als Shell-Skript zum Starten des Servers ausgeführt wird. Wenn keine solche Datei vorhanden ist, verwendet xinit standardmäßig Folgendes:

X  :0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.