startx komutu ne yapar?


18

Ubuntu hakkında okurken aşağıdaki ifadeyi buldum .....

Görüntü yöneticisi varsayılan çalışma düzeyinde varsayılan olarak başlatılmazsa, metin modu konsolunda oturum açtıktan sonra komut satırından startx çalıştırarak X'i farklı bir şekilde başlatabilirsiniz.

Varsayılan bir çalışma seviyesi olmak ne demektir? Ve bunu terminalimde denediğimde şunu anladım:

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

Ben sadece startx koştum ama seninle aynı hatayı aldım bu yüzden sudo yaptım. Beni root hesabına girdiğini söylüyor. Kullanıcıma geri dönmek için yaptığım kökten çıkış oldu.

Yanıtlar:


25

Bir zamanlar (1), bilgisayarların hafızası kilobayt ve diskler megabayt olarak ölçüldüğünde, grafik arayüzünü her zaman çalıştırmak zararlı olarak kabul edildi.

Çoğu Unix bilgisayarı, çok kullanıcılı ortamlarda bilimsel hesaplamalar ve simülasyon için kullanıldı ve üzerinde çalışan grafik arabirimi, kullanılabilir bellek ve CPU gücünü azaltacaktır.

Grafiksel bir arayüze ihtiyaç duyduğunuzda startx(2) ile yeni başladınız .

startxtemelde bir Xserver (grafiksel "sürücü") ve üzerinde çalışan ve genellikle bir pencere yöneticisi olan bir komut çalıştırır . Varsayılan olarak, çalıştırılan komutlar ~/.xinitrcana dizininizde veya başka bir genel sistem dosyasında bulunur.

Modern sistemlerin aşağıdan yukarıya doğru her zaman çalışan bir grafik sistemi olduğu düşünülmektedir, bu nedenle hiç kimse muhtemelen uzun zamandır çalışmayı kontrol etmemiştir startx- sahip olabileceğiniz çok garip davranışı açıklar.

Denemek ve eski güzel zamanları hissetmek istiyorsanız, en iyi şey aşağıdakileri yapmaktır:

A) yükleyin Xnestve fvwm. Xnest , normal sisteminizde pencere olarak açılacak bir sunucu olan bir sunucu içinde grafik sunucusudur. Fvwm o zamanlar çok popüler olan çok basit bir pencere yöneticisidir. Eski pixmap yazı tiplerine de ihtiyacınız olacak.

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

B) bu dosyayı bir yere yazın, örneğin ev dizininize yazın ve arayın ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Çalıştır (dikkat: startxnormalde önce istemci komutu, sonra çift tire ve sonra bir sunucu komutu ile çalıştırılır. Söylediğim gibi, çoğu yeni sistemin startxtek başına mantıklı varsayılanları yoktur .).

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

... 80'li bir iş istasyonu ekranınız var:

resim açıklamasını buraya girin

("Xnest" masaüstüne tıklayarak menüye sahip olabilirsiniz).

... ve gerçekten maceraperest hissediyorsanız, Ctrl-Alt-F1, giriş yapın ve

startx ~/test 

normalde Ctrl-Alt-F8'de açılır.

Uyarı : Modern masaüstü ortamları aynı kullanıcı için aynı anda iki farklı konsolda çalışacak şekilde tasarlanmamıştır. Yani kullanmayın gnome-shellveya unitybu deneyler yaparken, modern şeyler ya, yoksa altüst yapılandırma olabilir.


Dipnotlar:

(1) 1980-90 yıllarında burada konuşmak.

(2) Örneğin, 256k RAM'e sahip bir dizüstü bilgisayarım vardı. (B&W!) Grafik arayüzünde acı verici bir şekilde yavaştı, ancak konsolda hızlıydı. İşimde (düzenlemeden en yaptım Yani C, LaTeXkonsol modunda ve benzeri dosyaları) ve gerçekten gerekli sadece grafik ortama geçti.


4
Thanx @ Rmano, büyük açıklama tamamen anladım ...
lazarus

9

startx xsession veya bir giriş ekranı ve ascii konsolundan (metin oturumu) başka bir şey gördüğünüz grafik arabirimini başlatır.

Xsession zaten başlatıldığından ve tty7 üzerinde xsession içinden komutu yürütmeye çalıştığınız için bu hatayı alıyorsunuz.

tty7, ctrl+ alt+ f7(varsayılan xsession) konumunda bulunan kullanıcı arabirimidir .

tty1, ctrl+ alt+ ' da bulunan kullanıcı arabirimidir f1.

tty2, ctrl+ alt+ ' da bulunan kullanıcı arabirimidir f2. . . ve bunun gibi.

tty1 - tty6 metin oturumlarıdır ve bu ekranlardan birinde kullanıcı adınız ve şifrenizle giriş yapabilirsiniz. Oturum açtıktan sonra komutu startxçalıştırabilirsiniz ve xsession zaten çalışmıyorsa tty7'de ve tty7 zaten bir xsession çalışıyorsa tty8'de başlayacaktır.


Çalışma Seviyeleri:

çalışma seviyesi 0 Durdur - Sistemi kapatır.

çalışma düzeyi 1 Tek kullanıcı modu - Yönetim görevleri modu.

çalışma düzeyi 2 Ağ bağlantılı grafiksel çok kullanıcılı - Sistemi normal şekilde başlatır.

çalışma seviyesi 3-5 Kullanılmadı ancak çalışma seviyesi 2 ile aynı yapılandırıldı

run-level 6 Reboot - Sistemi yeniden başlatır.

Çalışma seviyesi terimi, Unix Sistem V stili başlatmayı uygulayan bilgisayar işletim sistemlerinden birinde bir çalışma modunu ifade eder. Geleneksel olarak, sıfırdan altıya kadar numaralandırılmış yedi çalışma seviyesi vardır; ancak ondan, sıfırdan dokuza [alıntı gerekli] kullanılabilir. S bazen seviyelerden birinin eşanlamlısı olarak kullanılır. Önyükleme sırasında yalnızca bir "çalışma düzeyi" yürütülür - çalışma düzeyleri sırayla yürütülmez, yani çalışma düzeyi 2 OR 3 VEYA 4 yürütülür, 2 sonra 3 sonra 4 çalıştırılmaz. - en.wikipedia.org/wiki/Runlevel


Thanx mchid bana çok yardımcı oldu,
lazarus

ancak tty1'e giriş yaptığımda ve $ startx yaptığımda, herhangi bir başlatma çubuğu ve diğer seçenekler olmadan bir masaüstü penceresi aldım ... (tty8'de) -ctrl + Alt + F8, startx'imin iyi yapılandırılmamış olması veya bazı sınırlı startx üzerindeki seçenekler (yalnızca burada olduğu gibi Masaüstü)
lazarus

1
@jazzz Bu, varsayılan x ortamınızdır. Büyük olasılıkla yüklü birden çok masaüstü ortamınız vardır. Eğer gibi komutları çalıştırabilir böylece bir terminali almak için CTRL + T gerekir unityveya gnome-shell --replacehatta gnome-panelya metacity --replace.
mchid

@jazzz Ayrıca, bu yanıtı kabul ediyorsanız, lütfen kapatmak için soldaki simgeyi tıklayın. Teşekkürler!
mchid

üzgünüm bu ile ilgili başka bir sorgu için biraz geç --- yukarıda belirtildiği gibi Ctrl + Alt + F8, yeni pencere var çalışma alanına benzer?
lazarus

4

Sadece farklı bir tty anlamına gelir .

Bağlantılı soruyu alıntılamak:

Varsayılan olarak Ubuntu'nun 7 tty'si vardır.

1-6yalnızca komut satırıdır, 7X oturumunuzu (normal grafik masaüstünüz) çalıştırır.

Bunlara erişmek için şu klavye kısayolunu kullanın: Ctrl+ Alt+F1

( F1ihtiyacınız olan terminale erişmek için F1-F6 olarak değiştirmek )

X oturumunuza (normal masaüstü) geri dönmek için şunu kullanın: Ctrl+ Alt+F7

after logging on to a text-mode console farklı bir tty'ye giriş yapmak ve komutu yazmak anlamına gelir:

startx

1

Rmano'nun belirttiği gibi, startx çok eski bir yaklaşımdır. Bu kullanıldığında, X11 ikili setuid kökü kuruldu.

Ben sadece bir VM denedim ve gerçekten, startxvarsayılan olarak, tarif ettiğiniz gibi başarısız. chmod u+s /usr/lib/xorg/Xorgolsa düzeltir.

Ben yok tavsiye verme Xorgroot olarak. Dünya, İyi Sebep için bundan uzaklaştı. Ancak bir oyuna sokma VM'sinde oynuyorsanız, startxiş bu şekilde yapılır.


1

QEMU + Buildroot minimal örneği

Bir şeyin ne yaptığını öğrenmenin en sevdiğim yolu, onu çalıştıran minimal bir örnek yapmaktır.

Ubuntu'da, bir saniye startxgeçerli masaüstünüzle çakışabileceğinden bu zor .

/ubuntu//a/519164/52975 teklif eder Xnest, ancak QEMU + Buildroot ile daha da az gidebilir ve yalnızca X11 yüklü bir mikro dağıtım oluşturabiliriz.

Bu şekilde neler olup bittiğini anlamak daha kolay olmalı.

Dağıtım oluşturma işlemini şu adreste açıkladım: /unix//a/306116/32558

Görüntüyü QEMU'da çalıştırdıktan sonra, bir TTY kabuğuna başlarsınız.

Sonra yaptığınız zaman:

root
startx

bir X11 GUI başlatır:

resim açıklamasını buraya girin

Şimdi startxbu dağıtımın içindeki kaynağa bir bakın , bu sadece bir kabuk betiğidir.

Bu üzerinden basit bir sarıcı /usr/bin/xinitve geçtiği /etc/X11/xinit/xinitrciçin xinit.

Eğer açarsanız /etc/X11/xinit/xinitrc, aşağıdaki satırları içerir:

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

bu yüzden başladığını görüyoruz:

  • twm: çok basit ve eski bir pencere yöneticisi
  • xclockve xtermekranda gördüğümüz

Çünkü /usr/bin/xinitşunları yapabiliriz:

man xinit

diyor ki:

Komut satırında belirli bir istemci programı verilmezse, xinit, kullanıcının ana dizininde .xinitrc adlı bir dosyayı istemci programlarını başlatmak için kabuk komut dosyası olarak çalışacak şekilde arar. Böyle bir dosya yoksa, xinit aşağıdakileri varsayılan olarak kullanır:

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

Komut satırında belirli bir sunucu programı verilmezse, xinit, kullanıcının ana dizininde .xserverrc adlı bir dosyayı sunucuyu başlatmak için kabuk komut dosyası olarak çalışacak şekilde arar. Böyle bir dosya yoksa, xinit aşağıdakileri varsayılan olarak kullanır:

X  :0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.