что делает команда startx?

При чтении о Ubuntu я нашел следующее утверждение.....

Если менеджер дисплея не запущен по умолчанию в значении по умолчанию runlevel, можно запустить X другой путь, после вхождения в систему консоли текстового режима, путем выполнения startx из командной строки.

Что означает быть значением по умолчанию runlevel? И когда я попробовал это на своем терминале, я получил это:

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
18
задан 1 September 2014 в 00:23

5 ответов

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

Большинство компьютеров Unix использовалось для научных расчетов и моделирования в пользовательских средах, и графический интерфейс, работающий на них, уменьшит эффективность ЗУ и мощность ЦП, доступную им.

Таким образом, при необходимости в графическом интерфейсе, Вы только что запустили его с startx (2).

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

Современные системы, как думают, с самого начала имеют графическую систему, работающую все время, таким образом, никто, вероятно, не проверил работу startx целую вечность - это объясняет большое странное поведение, которое Вы можете иметь.

Если Вы хотите экспериментировать и чувство добрые старые времена, лучшая вещь делает следующее:

A) установка Xnest и fvwm. Xnest является графическим server-within-a-server, своего рода сервер, который откроется как окно в Вашей нормальной системе. Fvwm является очень простым менеджером окон, который был очень популярен тогда. Вам будут нужны старые шрифты пиксельной карты, также.

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

B) запишите этот файл где-нибудь, например, в Вас домашний dir, и назовите его ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Выполненный (уведомление: startx обычно выполняется со сначала клиентской командой, затем двойной тире и затем команда сервера. Как я сказал, самые новые системы не имеют разумных значений по умолчанию для startx один.).

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

... и Вы имеете 80ies экран рабочей станции:

enter image description here

(У Вас может быть меню путем нажатия на рабочий стол "Xnest").

... и если Вы чувствуете себя действительно предприимчивыми, можно запустить, собственная сессия на другой виртуальной консоли (прочитайте другие ответы) путем движения к одному из них с Ctrl-Alt-F1, входа в, и

startx ~/test 

который будет обычно открывать на Ctrl-Alt-F8.

Уведомление: современные настольные среды не разработаны для выполнения одновременно, для того же пользователя, в двух различных консолях. Не используйте gnome-shell или unity или экспериментируют современные вещи при выполнении этого, или Вы могли испортить свою конфигурацию.


Сноски:

(1) Разговор о приблизительно 1980-90 здесь.

(2) Например, у меня был ноутбук с 256k RAM. Это было крайне медленно в (B&W!) графический интерфейс, но мгновенный в консоли. Таким образом, я сделал большую часть своей работы (редактирование C, LaTeX и подобные файлы) в консольном режиме, и переключенный на графическую среду только, когда действительно необходимый.

25
ответ дан 16 November 2019 в 12:45

startx запускает xsession или графический интерфейс, где Вы видите экран входа в систему и что-то большее чем просто консоль ASCII (текстовая сессия).

Вы получаете эту ошибку, потому что xsession уже запускается, и Вы пытаетесь выполнить команду из xsession на tty7.

tty7 является пользовательским интерфейсом, который существует в ctrl + высокий звук + f7 (значение по умолчанию xsession).

tty1 является пользовательским интерфейсом, который существует в ctrl + высокий звук + f1 .

tty2 является пользовательским интерфейсом, который существует в ctrl + высокий звук + f2 ... и так далее.

tty1 - tty6 являются текстовыми сессиями, и можно войти в систему с именем пользователя и паролем на одном из этих экранов. После входа в систему можно выполнить команду startx, и xsession запустится в tty7, если это не будет уже работать и tty8, если tty7 уже выполняет xsession.

<час>

Уровни выполнения:

Останов уровня выполнения 0 - Закрывает систему.

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

уровень выполнения 2, Графический многопользовательский с сетями - обычно Запускает систему.

уровень выполнения 3-5, Неиспользованный но настроенный то же, поскольку, Перезагрузка runlevel 2

уровня выполнения 6 - Перезагружает систему.

термин runlevel относится к режиму работы в одной из операционных систем компьютера, которые реализуют инициализацию system-v-стиля Unix. Традиционно, семь runlevels существуют, пронумерованные от нуля до шесть; хотя до десяти, от нуля до девять [необходима цитата], могут использоваться. S иногда используется в качестве синонима для одного из уровней. Только один "runlevel" выполняется на начальной загрузке - уровни выполнения не выполняются последовательно, т.е. или runlevel 2 ИЛИ 3 ИЛИ 4 выполняется, не 2 тогда 3 тогда 4. - en.wikipedia.org/wiki/Runlevel

9
ответ дан 16 November 2019 в 12:45

Это просто означает в различном tty.

Quotying связанный вопрос:

Ubuntu по умолчанию имеет 7 tty's.

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

Для доступа к ним используйте это сочетание клавиш: Ctrl + Высокий звук + F1

(изменяющийся F1 к F1-F6 для доступа к терминалу, в котором Вы нуждаетесь)

Для возвращения к X сессиям (нормальный рабочий стол), используйте: Ctrl + Высокий звук + F7

after logging on to a text-mode console просто означает входить в систему различного tty и вводить команду:

startx
4
ответ дан 16 November 2019 в 12:45

QEMU + Buildroot минимальный пример

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

На Ubuntu это твердо с секунды startx мог бы конфликтовать с Вашим текущим рабочим столом.

https://askubuntu.com/a/519164/52975 делает предложение Xnest, но с QEMU + Buildroot мы можем пойти еще более минимальные и создать микро дистрибутив только с установленным X11.

Таким образом, должно быть легче понять то, что продолжается.

Я описал создание дистрибутива в: https://unix.stackexchange.com/a/306116/32558

После того как у Вас есть изображение, работающее на QEMU, Вы запускаете на оболочке TTY.

Затем, когда Вы делаете:

root
startx

это запускает X11 GUI:

enter image description here

Теперь смотрите на источник для 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
1
ответ дан 16 November 2019 в 12:45

Как примечания Rmano, startx является очень старым подходом. Путь назад, когда это использовалось, двоичный файл X11, был установлен корень setuid.

Я просто испытал это в VM и действительно, startx сбои, как Вы описываете по умолчанию. chmod u+s /usr/lib/xorg/Xorg фиксирует это все же.

Я не рекомендую делать Xorg будьте корнем setuid. Мир переехал от этого на Серьезном основании. Но если Вы играете вокруг в одноразовом VM, это - то, как сделать startx работа.

1
ответ дан 23 November 2019 в 02:06

Другие вопросы по тегам:

Похожие вопросы: