apa yang dilakukan perintah startx?


18

Saat membaca tentang Ubuntu saya menemukan pernyataan berikut .....

Jika manajer tampilan tidak dimulai secara default di runlevel default, Anda dapat memulai X dengan cara yang berbeda, setelah masuk ke konsol mode teks, dengan menjalankan startx dari baris perintah.

Apa artinya menjadi runlevel default? Dan ketika saya mencoba ini di terminal saya, saya mendapat ini:

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

Saya baru saja menjalankan startx tetapi saya mendapat kesalahan yang sama seperti Anda jadi saya melakukannya sudo. Ternyata itu login saya ke akun root. Apa yang saya lakukan untuk kembali ke pengguna saya adalah logout dari root.

Jawaban:


25

Sekali waktu (1), ketika memori komputer diukur dalam kilobyte dan disk dalam megabita, menjalankan antarmuka grafis sepanjang waktu dianggap berbahaya.

Sebagian besar komputer Unix digunakan untuk perhitungan ilmiah dan simulasi di lingkungan multi-pengguna, dan antarmuka grafis yang berjalan pada mereka akan mengurangi memori dan daya CPU yang tersedia untuk mereka.

Jadi ketika Anda membutuhkan antarmuka grafis, Anda baru saja memulainya dengan startx(2).

startxpada dasarnya menjalankan Xserver ("driver" grafis) dan perintah yang berjalan di atasnya, yang biasanya merupakan manajer jendela . Secara default perintah yang dijalankan ada dalam ~/.xinitrcfile di direktori home Anda, atau beberapa file sistem generik sebaliknya.

Sistem modern dianggap dari bawah ke atas untuk memiliki sistem grafis yang berjalan sepanjang waktu, jadi tidak ada yang mungkin memeriksa cara kerjanya startxselama berabad-abad - yang menjelaskan banyak perilaku aneh yang dapat Anda miliki.

Jika Anda ingin bereksperimen dan merasakan masa lalu yang indah, hal terbaik adalah melakukan hal berikut:

A) instal Xnestdan fvwm. Xnest adalah server grafis dalam server, sejenis server yang akan terbuka sebagai jendela di sistem normal Anda. Fvwm adalah window manager yang sangat sederhana yang sangat populer saat itu. Anda juga akan membutuhkan font pixmap lama.

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

B) menulis file ini di suatu tempat, misalnya di dir home Anda, dan menyebutnya ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Jalankan (perhatikan: startxbiasanya dijalankan dengan pertama-tama perintah klien, kemudian tanda hubung ganda, dan kemudian perintah server. Seperti yang saya katakan, sebagian besar sistem baru tidak memiliki standar yang masuk akal untuk startxsendirian.).

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

... dan Anda memiliki layar workstation 80ies:

masukkan deskripsi gambar di sini

(Anda dapat memiliki menu dengan mengklik pada desktop "Xnest").

... dan jika Anda merasa sangat berani, Anda dapat memulai sesi asli pada konsol virtual lain (baca jawaban lain) dengan masuk ke salah satu dari mereka dengan Ctrl-Alt-F1, masuk, dan

startx ~/test 

yang biasanya akan terbuka pada Ctrl-Alt-F8.

Perhatikan : lingkungan desktop modern tidak dirancang untuk berjalan secara bersamaan, untuk pengguna yang sama, di dua konsol yang berbeda. Jadi jangan gunakan gnome-shellatau unityatau hal-hal modern saat melakukan percobaan ini, atau Anda dapat mengacaukan konfigurasi Anda.


Catatan kaki:

(1) Berbicara sekitar tahun 1980-90 di sini.

(2) Sebagai contoh, saya punya laptop dengan 256k RAM. Itu sangat lambat di antarmuka grafis (B&W!), Tapi tajam di konsol. Jadi saya melakukan sebagian besar pekerjaan saya (mengedit C, LaTeXdan file serupa) dalam mode konsol, dan beralih ke lingkungan grafis hanya ketika benar-benar diperlukan.


4
Thanx @ Rmano, penjelasan yang bagus benar-benar mengerti ...
lazarus

9

startx memulai xsession atau antarmuka grafis di mana Anda melihat layar masuk dan apa pun yang lebih dari sekadar konsol ascii (sesi teks).

Anda menerima kesalahan ini karena xsession sudah dimulai dan Anda mencoba menjalankan perintah dari dalam xsession pada tty7.

tty7 adalah antarmuka pengguna yang ada di ctrl+ alt+ f7(xsession default).

tty1 adalah antarmuka pengguna yang ada di ctrl+ alt+ f1.

tty2 adalah antarmuka pengguna yang ada di ctrl+ alt+ f2. . . dan seterusnya.

tty1 - tty6 adalah sesi teks dan Anda dapat masuk dengan nama pengguna dan kata sandi di salah satu layar ini. Setelah Anda masuk, Anda dapat menjalankan perintah startxdan xsession akan mulai di tty7 jika belum berjalan dan tty8 jika tty7 sudah menjalankan xsession.


Tingkat Jalankan:

run-level 0 Stop - Menutup sistem.

run-level 1 Mode pengguna tunggal - Mode untuk tugas administratif.

run-level 2 Grafis multi-pengguna dengan jaringan - Memulai sistem secara normal.

run-level 3-5 Tidak digunakan tetapi dikonfigurasi sama dengan runlevel 2

run-level 6 Reboot - Reboot sistem.

Istilah runlevel mengacu pada mode operasi di salah satu sistem operasi komputer yang menerapkan inisialisasi gaya-V Sistem Unix. Secara konvensional, tujuh runlevel ada, berjumlah dari nol hingga enam; meskipun hingga sepuluh, dari nol hingga sembilan, dapat digunakan. S terkadang digunakan sebagai sinonim untuk salah satu level. Hanya satu "runlevel" yang dijalankan saat bootup - run level tidak dieksekusi secara berurutan, yaitu runlevel 2 ATAU 3 ATAU 4 dijalankan, bukan 2 dari 3 lalu 4. - en.wikipedia.org/wiki/Runlevel


Thanx mchid itu banyak membantu saya,
lazarus

tetapi ketika saya login ke tty1 dan melakukan $ startx, saya mendapatkan jendela desktop tanpa launchbar dan opsi lain ... (pada tty8) -ctrl + Alt + F8, apakah startx saya tidak dikonfigurasikan dengan baik atau tidak menunjukkan beberapa keterbatasan pilihan pada startx (seperti Desktop di sini saja)
lazarus

1
@jazzz Itu adalah lingkungan x bawaan Anda. Kemungkinan besar Anda memiliki beberapa lingkungan desktop yang diinstal. Anda harus dapat CTRL + T untuk mendapatkan terminal sehingga Anda dapat menjalankan perintah seperti unityatau gnome-shell --replaceatau bahkan gnome-panelatau metacity --replace.
mchid

@jazzz Juga, jika Anda menerima jawaban ini, silakan klik ikon di sebelah kiri untuk menutupnya. Terima kasih!
mchid

maaf saya agak terlambat untuk pertanyaan lain mengenai hal ini --- apakah jendela baru yang saya dapatkan dengan Ctrl + Alt + F8, seperti yang saya nyatakan di atas mirip dengan workspace?
lazarus

4

Itu hanya berarti pada tty yang berbeda .

Mengutip pertanyaan terkait:

Secara default Ubuntu memiliki 7 tty.

1-6hanya baris perintah, 7jalankan sesi X Anda (desktop grafis normal Anda).

Untuk mengaksesnya, gunakan pintasan keyboard ini: Ctrl+ Alt+F1

(mengubah F1ke F1-F6 untuk mengakses terminal yang Anda butuhkan)

Untuk kembali ke sesi X Anda (desktop normal), gunakan: Ctrl+ Alt+F7

after logging on to a text-mode console berarti masuk ke tty yang berbeda dan mengetik perintah:

startx

1

Seperti yang dicatat Rmano, startx adalah pendekatan yang sangat lama. Jauh ketika ini digunakan, X11 biner diinstal setuid root.

Saya baru saja mencoba ini di VM dan memang, startxgagal seperti yang Anda jelaskan, secara default.chmod u+s /usr/lib/xorg/Xorgperbaikan itu sekalipun.

Saya tidak merekomendasikan menjadikan Xorgmenjadi setuid root. Dunia telah pindah dari itu karena Alasan Baik. Tetapi jika Anda bermain-main dengan VM yang dibuang, itulah cara membuat startxpekerjaan.


1

QEMU + Buildroot contoh minimal

Cara favorit saya untuk mempelajari apa yang dilakukan sesuatu adalah dengan membuat contoh minimal yang menjalankannya.

Di Ubuntu, ini sulit karena yang kedua startxmungkin bertentangan dengan desktop Anda saat ini.

/ubuntu//a/519164/52975 mengusulkan Xnest, tetapi dengan QEMU + Buildroot kita bisa menjadi lebih minimal dan membuat mikro distro dengan hanya X11 diinstal.

Dengan cara ini, akan lebih mudah untuk memahami apa yang sedang terjadi.

Saya telah menggambarkan pembuatan distro di: /unix//a/306116/32558

Setelah Anda menjalankan gambar di QEMU, Anda mulai dengan shell TTY.

Lalu ketika Anda melakukannya:

root
startx

itu memulai GUI X11:

masukkan deskripsi gambar di sini

Sekarang lihat sumber untuk startxdi dalam distro itu, yang hanya berupa skrip shell.

Ini adalah pembungkus sederhana di atas /usr/bin/xinit, dan yang lolos /etc/X11/xinit/xinitrcke xinit.

Jika Anda membuka /etc/X11/xinit/xinitrc, ini berisi baris-baris berikut:

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

jadi kita melihat bahwa itu dimulai:

  • twm: window manager yang sangat sederhana dan lama
  • xclockdan xtermyang kita lihat di layar

Sebab /usr/bin/xinit, kita bisa melakukan:

man xinit

yang mengatakan bahwa:

Jika tidak ada program klien tertentu yang diberikan pada baris perintah, xinit akan mencari file di direktori home pengguna yang disebut .xinitrc untuk dijalankan sebagai skrip shell untuk memulai program klien. Jika tidak ada file seperti itu, xinit akan menggunakan yang berikut ini sebagai default:

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

Jika tidak ada program server khusus yang diberikan pada baris perintah, xinit akan mencari file di direktori home pengguna yang disebut .xserverrc untuk dijalankan sebagai skrip shell untuk memulai server. Jika tidak ada file seperti itu, xinit akan menggunakan yang berikut ini sebagai default:

X  :0
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.