co robi polecenie startx?

18

Podczas czytania o Ubuntu znalazłem następujące oświadczenie .....

Jeśli menedżer wyświetlania nie jest domyślnie uruchamiany na domyślnym poziomie działania, możesz uruchomić X w inny sposób, po zalogowaniu się do konsoli tekstowej, uruchamiając startx z wiersza poleceń.

Co to znaczy być domyślnym poziomem działania? A kiedy spróbowałem tego na moim terminalu, otrzymałem to:

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
Lazarus
źródło
Właśnie uruchomiłem startx, ale dostałem ten sam błąd co ty, więc zrobiłem to sudo. Okazuje się, że zalogował mnie do konta roota. To, co zrobiłem, aby zwrócić mojemu użytkownikowi, to wylogowanie z roota.

Odpowiedzi:

25

Dawno, dawno temu (1), gdy pamięć komputerów była mierzona w kilobajtach, a dyski w megabajtach, uruchamianie interfejsu graficznego przez cały czas było uważane za szkodliwe.

Większość komputerów uniksowych była wykorzystywana do obliczeń naukowych i symulacji w środowiskach wielu użytkowników, a działający na nich interfejs graficzny zmniejszyłby dostępną pamięć i moc procesora.

Kiedy więc potrzebujesz interfejsu graficznego, właśnie go uruchomiłeś startx(2).

startxw zasadzie uruchamia Xserver (graficzny sterownik) i uruchamiane na nim polecenie, które zwykle jest menedżerem okien . Domyślnie uruchamiane polecenia znajdują się w ~/.xinitrcpliku w katalogu domowym lub w innym ogólnym pliku systemowym.

Uważa się, że we współczesnych systemach od podstaw działa system graficzny cały czas, więc prawdopodobnie nikt nie sprawdził działania startx wieków - to tłumaczy wiele dziwnych zachowań, które możesz mieć.

Jeśli chcesz eksperymentować i poczuć stare dobre czasy, najlepiej jest wykonać następujące czynności:

A) zainstaluj Xnesti fvwm. Xnest jest serwerem graficznym wewnątrz serwera, rodzajem serwera, który otworzy się jako okno w normalnym systemie. Fvwm to bardzo prosty menedżer okien, który był wówczas bardzo popularny. Będziesz także potrzebował starych czcionek pixmap.

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

B) zapisz gdzieś ten plik, na przykład w swoim domowym katalogu, i nazwij go ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Uruchom (zauważ: startxzwykle jest uruchamiany najpierw z poleceniem klienta, następnie z podwójnym myślnikiem, a następnie z poleceniem serwera. Jak powiedziałem, większość nowych systemów nie ma rozsądnych ustawień domyślnych dla startxsamego.).

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

... i masz ekran stacji roboczej z lat 80 .:

wprowadź opis zdjęcia tutaj

(Możesz otworzyć menu, klikając pulpit „Xnest”).

... a jeśli masz ochotę na przygodę, możesz rozpocząć sesję natywną na innej wirtualnej konsoli (przeczytaj pozostałe odpowiedzi), przechodząc do jednej z nich za pomocą Ctrl-Alt-F1, zaloguj się i

startx ~/test 

który normalnie otworzy się na Ctrl-Alt-F8.

Uwaga : nowoczesne środowiska komputerowe nie są zaprojektowane do jednoczesnego działania dla tego samego użytkownika w dwóch różnych konsolach. Dlatego nie używaj gnome-shellani unitynowoczesnych rzeczy podczas wykonywania tych eksperymentów, bo możesz popsuć konfigurację.


Przypisy:

(1) Mówiąc o około 1980-90 tutaj.

(2) Na przykład miałem laptopa z 256 KB pamięci RAM. Było boleśnie powolne w interfejsie graficznym (czarno-biały!), Ale zgrabne w konsoli. Więc zrobiłem większość mojej pracy (edycja C, LaTeXi podobnych plików) w trybie konsoli i włączył się do środowiska graficznego tylko wtedy, gdy naprawdę potrzebne.

Rmano
źródło
4
Thanx @ Rmano, wspaniałe wyjaśnienie całkowicie to zrozumiało ...
Lazarus
9

startx uruchamia xsession lub interfejs graficzny, w którym widzisz ekran logowania i cokolwiek więcej niż tylko konsolę ascii (sesję tekstową).

Otrzymujesz ten błąd, ponieważ Xsession jest już uruchomiony i próbujesz wykonać polecenie z wnętrza Xsession na tty7.

tty7 to interfejs użytkownika, który istnieje w ctrl+ alt+f7 (domyślna xsession).

tty1 to interfejs użytkownika, który istnieje w ctrl+ alt+ f1.

tty2 to interfejs użytkownika, który istnieje w ctrl+ alt+ f2. . . i tak dalej.

tty1 - tty6 to sesje tekstowe i możesz zalogować się za pomocą nazwy użytkownika i hasła na jednym z tych ekranów. Po zalogowaniu możesz uruchomić polecenie, startxa xsession rozpocznie się w tty7, jeśli jeszcze nie jest uruchomiony, i tty8, jeśli tty7 już uruchomił xsession.


Uruchom poziomy:

run-level 0 Halt - Zamyka system.

run-level 1 Tryb pojedynczego użytkownika - Tryb zadań administracyjnych.

run-level 2 Graficzny wielu użytkowników z obsługą sieci - uruchamia system normalnie.

poziom pracy 3-5 Nieużywany, ale skonfigurowany tak samo jak poziom pracy 2

run-level 6 Reboot - restartuje system.

Termin poziom pracy odnosi się do trybu działania w jednym z komputerowych systemów operacyjnych, które implementują inicjalizację w stylu V systemu Unix. Konwencjonalnie istnieje siedem poziomów pracy, ponumerowanych od zera do sześciu; chociaż można użyć do dziesięciu, od zera do dziewięciu [potrzebne źródło]. S jest czasem używany jako synonim jednego z poziomów. Podczas rozruchu wykonywany jest tylko jeden „poziom pracy” - poziomy uruchamiania nie są wykonywane sekwencyjnie, tzn. Albo uruchamiany jest poziom pracy 2 LUB 3 LUB 4, a nie 2, a następnie 3, a następnie 4. - en.wikipedia.org/wiki/Runlevel

mchid
źródło
Dzięki, bardzo mi to pomogło,
Lazarus
ale kiedy zalogowałem się do tty1 i wykonałem $ startx, dostałem okno pulpitu bez paska uruchamiania i innych opcji ... (na tty8) -ctrl + Alt + F8, to że mój startx nie był dobrze skonfigurowany lub wykazuje pewne ograniczenia opcje na startx (jak tutaj tylko Desktop)
Lazarus
1
@jazzz To jest twoje domyślne środowisko x. Najprawdopodobniej masz zainstalowane wiele środowisk pulpitu. Powinieneś być w stanie Ctrl + T, aby uzyskać terminalu więc można uruchomić poleceń takich jak unitylub gnome-shell --replacenawet gnome-panellub metacity --replace.
mchid
@jazzz Ponadto, jeśli zaakceptujesz tę odpowiedź, kliknij ikonę po lewej stronie, aby ją zamknąć. dzięki!
mchid
przepraszam, jestem trochę spóźniony na kolejne zapytanie dotyczące tego --- czy nowe okno, które dostałem przez Ctrl + Alt + F8, jak powiedziałem powyżej, jest podobne do obszaru roboczego?
Lazarus
4

To po prostu oznacza inny tty .

Cytując powiązane pytanie:

Domyślnie Ubuntu ma 7 tty.

1-6są tylko wierszem poleceń, 7uruchamia sesję X (zwykły pulpit graficzny).

Aby uzyskać do nich dostęp, użyj tego skrótu klawiaturowego: Ctrl+ Alt+F1

(zmiana F1na F1-F6, aby uzyskać dostęp do terminalu, którego potrzebujesz)

Aby wrócić do sesji X (zwykłego pulpitu), użyj: Ctrl+ Alt+F7

after logging on to a text-mode console po prostu oznacza zalogowanie się do innego tty i wpisanie polecenia:

startx
Parto
źródło
1

Jak zauważa Rmano, startx jest bardzo starym podejściem. Dawno temu, gdy był używany, plik binarny X11 został zainstalowany jako setuid root.

Właśnie wypróbowałem to na maszynie wirtualnej i rzeczywiście, startxjak to opisujesz, kończy się niepowodzeniem. chmod u+s /usr/lib/xorg/Xorgnaprawia to jednak.

Nie polecam robić Xorgroota setuid. Świat odszedł od tego z dobrego powodu. Ale jeśli bawisz się na wyrzuconej maszynie wirtualnej, to właśnie tak startxdziała.

Phil P.
źródło
1

Minimalny przykład QEMU + Buildroot

Moim ulubionym sposobem, aby dowiedzieć się, co coś robi, jest uczynienie minimalnego przykładu, który to pozwala.

Na Ubuntu jest to trudne od sekundy startx może spowodować konflikt z bieżącym pulpitem.

/ubuntu//a/519164/52975 proponuje Xnest, ale dzięki QEMU + Buildroot możemy pójść jeszcze bardziej minimalnie i stworzyć mikro dystrybucję z zainstalowanym tylko X11.

W ten sposób powinno być łatwiej zrozumieć, co się dzieje.

Opis tworzenia dystrybucji opisałem na: /unix//a/306116/32558

Po uruchomieniu obrazu na QEMU, zaczynasz od powłoki TTY.

Kiedy to zrobisz:

root
startx

uruchamia GUI X11:

wprowadź opis zdjęcia tutaj

Teraz spójrz na źródło startxwewnątrz tej dystrybucji, która jest tylko skryptem powłoki.

Jest to prosty, owijka /usr/bin/xinit, i przechodzi /etc/X11/xinit/xinitrcsię xinit.

Jeśli otworzysz /etc/X11/xinit/xinitrc, zawiera następujące wiersze:

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

więc widzimy, że zaczyna się:

  • twm: bardzo prosty i stary menedżer okien
  • xclocki xtermktóre widzimy na ekranie

Dla /usr/bin/xinitmożemy zrobić:

man xinit

co mówi, że:

Jeśli w wierszu poleceń nie podano żadnego konkretnego programu klienckiego, xinit wyszuka plik w katalogu domowym użytkownika o nazwie .xinitrc, który będzie działał jako skrypt powłoki w celu uruchomienia programów klienckich. Jeśli taki plik nie istnieje, xinit użyje domyślnie:

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

Jeśli w wierszu poleceń nie podano żadnego konkretnego programu serwera, xinit będzie szukał pliku w katalogu domowym użytkownika o nazwie .xserverrc do uruchomienia jako skrypt powłoki w celu uruchomienia serwera. Jeśli taki plik nie istnieje, xinit użyje domyślnie:

X  :0
Ciro Santilli
źródło