що робить команда startx?


18

Читаючи про Ubuntu, я знайшов таке твердження .....

Якщо менеджер дисплеїв не запущений за замовчуванням у рівні запуску за замовчуванням, ви можете запустити X по-іншому, після входу в консоль текстового режиму, запустивши startx з командного рядка.

Що означає бути рівнем запуску за замовчуванням? І коли я спробував це на своєму терміналі, я зрозумів це:

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

Я щойно запускав старткс, але я отримав ту ж помилку, що і ти, тому я зробив це судо. Виявляється, він увійшов мене до кореневого рахунку Що я зробив, щоб повернутися своєму користувачеві, був вихід із кореня.

Відповіді:


25

Колись (1), коли пам'ять комп'ютерів вимірювалася в кілобайтах, а диски в мегабайтах, весь графічний інтерфейс весь час вважався шкідливим.

Більшість комп’ютерів Unix використовувались для наукових обчислень та моделювання в багатокористувацьких середовищах, а графічний інтерфейс, що працює на них, зменшив би доступну їм пам'ять та потужність процесора.

Отже, коли вам знадобився графічний інтерфейс, ви просто почали його з startx(2).

startxв основному запускає Xserver (графічний "драйвер") і команду, яка працює на ньому, що, як правило, менеджер вікон . За замовчуванням запущені команди знаходяться ~/.xinitrcу вашому домашньому каталозі або в іншому загальному системному файлі.

Думається, що сучасні системи знизу вгору мають графічну систему, яка працює весь час, тому ніхто, напевно, не перевіряв роботу startxвіків - це пояснює багато дивної поведінки, яку ви можете мати.

Якщо ви хочете експериментувати і відчувати добрі старі часи, найкраще робити наступне:

А) встановити Xnestі fvwm. Xnest - це графічний сервер всередині сервера, такий собі сервер, який відкриється як вікно у вашій звичайній системі. Fvwm - це дуже простий менеджер вікон, який був дуже популярним тоді. Вам також знадобляться старі шрифти піксельних зображень.

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

Б) напишіть цей файл кудись, наприклад, у вас вдома, і назвіть його ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Запустити (зауважте: startxзазвичай виконується спочатку командою клієнта, потім подвійним тире, а потім командою сервера. Як я вже сказав, більшість нових систем не мають розумних значень за замовчуванням startx.).

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

... і у вас екран робочої станції 80-х років:

введіть тут опис зображення

(Ви можете мати меню, натиснувши на робочий стіл "Xnest").

... і якщо ви відчуваєте справжню пригоду, ви можете розпочати нативний сеанс на іншій віртуальній консолі (прочитайте інші відповіді), перейшовши на одну з них за допомогою Ctrl-Alt-F1, увійдіть у систему та

startx ~/test 

який зазвичай відкриється на Ctrl-Alt-F8.

Зверніть увагу : сучасні робочі середовища не розроблені для роботи одного і того ж користувача на двох різних консолях. Тому не використовуйте gnome-shellабо unityсучасні речі при проведенні цих експериментів, інакше ви можете зіпсувати конфігурацію.


Виноски:

(1) Якщо говорити про 1980-90 роки.

(2) Наприклад, у мене був ноутбук з 256k оперативної пам’яті. У графічному інтерфейсі (B&W!) Було болісно повільно, але в консолі спритно. Так що я зробив велику частину моєї роботи (редагування C, LaTeXі подібні файли) в командному режимі, і перемикається в графічному середовищі тільки тоді , коли дійсно необхідно.


4
Thanx @ Rmano, велике пояснення цілком зрозуміло ...
lazarus

9

startx запускає xsession або графічний інтерфейс, де ви бачите екран входу та щось більше, ніж просто консоль ascii (текстовий сеанс).

Ви отримуєте цю помилку, оскільки xsession вже запущений, і ви намагаєтеся виконати команду зсередини xsession на tty7.

tty7 - це інтерфейс користувача, який існує при ctrl+ alt+ f7(xsession за замовчуванням).

tty1 - це інтерфейс користувача, який існує у ctrl+ alt+ f1.

tty2 - це інтерфейс користувача, який існує у ctrl+ alt+ f2. . . і так далі.

tty1 - tty6 - це текстові сесії, і ви можете увійти зі своїм ім'ям користувача та паролем на одному з цих екранів. Після входу ви можете запустити команду, startxі xsession почнеться в tty7, якщо вона ще не запущена, а tty8, якщо tty7 вже працює xsession.


Рівень запуску:

run-level 0 Стоп - Вимикає систему.

Рівень запуску 1 Режим для одного користувача - Режим для адміністративних завдань.

run-level 2 Графічна багатокористувацька мережа - Запускає систему нормально.

рівень запуску 3-5 Невикористаний, але налаштований так само, як і рівень 2

run-level 6 Перезавантаження - перезавантаження системи.

Термін runlevel позначає режим роботи в одній з комп'ютерних операційних систем, що реалізують ініціалізацію Vx-стилю Unix System. Зазвичай існує сім рівнів, пронумерованих від нуля до шести; хоча до десяти, від нуля до дев'яти (потрібне цитування), можна використовувати. S іноді використовується як синонім одного з рівнів. Лише один "runlevel" виконується під час завантаження - рівні запуску не виконуються послідовно, тобто виконується або runlevel 2 OR 3 OR 4, а не 2, а потім 3, а потім 4. - en.wikipedia.org/wiki/Runlevel


Thanx mchid мені дуже допомогло,
lazarus

але коли я ввійшов у tty1 і виконав $ startx, у мене з'явилося вікно робочого столу без будь-якої панелі запуску та інших параметрів ... (на tty8) -ctrl + Alt + F8, це те, що мій startx не був налаштований належним чином, або він показує обмеженість параметри на стартксі (як тут тільки настільний ПК)
lazarus

1
@jazzz Це ваше типове середовище x. Ви, швидше за все, встановлено кілька середовищ настільних ПК. Ви повинні бути в змозі CTRL + T , щоб отримати термінал , так що ви можете запускати команди , як unityабо gnome-shell --replaceнавіть gnome-panelчи metacity --replace.
mchid

@jazzz Якщо ви приймаєте цю відповідь, натисніть значок ліворуч, щоб закрити її. Спасибі!
mchid

вибачте, я трохи запізнився на ще один запит щодо цього --- це нове вікно, яке я отримав Ctrl + Alt + F8, як я вже говорив вище, схоже на робочу область?
lazarus

4

Це просто означає , що на інший TTY .

Котирування пов'язаного питання:

За замовчуванням Ubuntu має 7 тисяч.

1-6є лише командним рядком, 7запускає ваш X сеанс (ваш звичайний графічний робочий стіл).

Для доступу до них використовуйте цю комбінацію клавіш: Ctrl+ Alt+F1

(змінюється F1на F1-F6 для доступу до потрібного терміналу)

Щоб повернутися до свого X сеансу (звичайного робочого столу), використовуйте: Ctrl+ Alt+F7

after logging on to a text-mode console просто означає увійти в інший tty та ввести команду:

startx

1

Як зазначає Рмано, старткс - це дуже старий підхід. Зрештою, коли це було використано, X11-двійковий файл був встановлений встановлений корінь.

Я просто спробував це у вітчизняній машині і, справді, startxне виходить, як ви описуєте, за замовчуванням. chmod u+s /usr/lib/xorg/Xorgвиправляє, що хоча.

Я не рекомендую створювати Xorgroot. Світ відійшов від цього з доброї причини. Але якщо ви розігруєтесь у викинутому ВМ, ось як зробити startxроботу.


1

QEMU + Buildroot мінімальний приклад

Мій улюблений спосіб дізнатися, що щось робить, - це зробити мінімальний приклад, який його виконує.

Для Ubuntu це важко, оскільки секунда startxможе конфліктувати з вашим поточним робочим столом.

/ubuntu//a/519164/52975 пропонує Xnest, але за допомогою QEMU + Buildroot ми можемо досягти ще більшого мінімуму та створити мікророзподіл із встановленим лише X11.

Таким чином слід легше зрозуміти, що відбувається.

Я описав створення дистрибутива на веб- сайті: /unix//a/306116/32558

Після того, як зображення запущено на QEMU, ви починаєте з оболонки TTY.

Тоді, коли ви робите:

root
startx

він запускає графічний інтерфейс X11:

введіть тут опис зображення

Тепер подивіться на джерело для startxцього дистрибутива, який є лише сценарієм оболонки.

Це проста обгортка над /usr/bin/xinit, і що вона переходить /etc/X11/xinit/xinitrcдо xinit.

Якщо ви відкриєте /etc/X11/xinit/xinitrc, він містить такі рядки:

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

тому ми бачимо, що він запускається:

  • twm: дуже простий і старий менеджер вікон
  • xclockі xtermякі ми бачимо на екрані

Бо /usr/bin/xinitми можемо:

man xinit

який говорить, що:

Якщо в командному рядку не вказана конкретна клієнтська програма, xinit шукатиме файл у домашній директорії користувача під назвою .xinitrc, який запускається як сценарій оболонки для запуску клієнтських програм. Якщо такого файлу не існує, xinit використовуватиме за замовчуванням таке:

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

Якщо в командному рядку не вказано жодної конкретної серверної програми, xinit шукатиме файл у домашній директорії користувача під назвою .xserverrc, який запускається як сценарій оболонки для запуску сервера. Якщо такого файлу не існує, xinit використовуватиме за замовчуванням таке:

X  :0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.