При чтении о 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
startx запускает xsession или графический интерфейс, где вы видите экран входа в систему и что-то большее, чем просто консоль ascii (текстовый сеанс).
Вы получаете эту ошибку, поскольку xsession уже запущен, и вы пытаетесь выполнить команду изнутри xsession на tty7.
tty7 - это пользовательский интерфейс, который существует в ctrl + alt + f7 (по умолчанию xsession).
tty1 - это пользовательский интерфейс, который существует в ctrl + alt + alt .
tty2 - это пользовательский интерфейс, который существует на alt + alt + f7 . , , и т. д.
tty1 - tty6 - текстовые сеансы, и вы можете войти в систему с вашим именем пользователя и паролем на одном из этих экранов. После входа в систему вы можете запустить команду startx, и xsession начнется с tty7, если она еще не запущена, и tty8, если tty7 уже выполнил xsession.
Запустить Уровни:
run-level 0 Halt - выключает систему.
run-level 1 Однопользовательский режим - режим для административных задач.
Уровень 2 Графический многопользовательский с сетью - обычно запускает систему.
Уровень запуска 3-5 Не используется, но настроен так же, как уровень выполнения 2
Уровень запуска 6 Перезагрузка - Перезагружает system.
Термин runlevel относится к режиму работы в одной из компьютерных операционных систем, которые реализуют инициализацию Unix System V-style. Обычно существует семь уровней выполнения, нумеруемых от нуля до шести; хотя до десяти, от нуля до девяти [править], могут быть использованы. S иногда используется как синоним одного из уровней. Только один «уровень выполнения» выполняется при загрузке - уровни запуска не выполняются последовательно, то есть выполняется либо уровень выполнения 2 ИЛИ 3 ИЛИ 4, либо 2, затем 3, затем 4. - ru.wikipedia.org/wiki/Runlevel
Это просто означает в другом tty.
Вычисление связанного вопроса:
По умолчанию Ubuntu имеет 7 tty.
1-6 только в командной строке, 7 запускает ваш сеанс X (ваш обычный графический рабочий стол).
Для доступа к ним используйте эту комбинацию клавиш: Ctrl + Alt + F1
(сменив F1 на F1-F6, чтобы получить доступ к требуемому терминалу)
Чтобы вернуться к вашему сеансу X (обычный рабочий стол), используйте: Ctrl + Alt + Alt
after logging on to a text-mode console просто означает вход в другую tty и ввод команды:
startx
Минимальный пример Buildroot
Мой любимый способ узнать, что что-то делает, это сделать минимальный пример, который его запускает.
На Ubuntu это сложно, так как второй startx может противоречить вашему текущему рабочему столу.
https://askubuntu.com/a/519164/52975 предлагает Xnest, но с помощью Buildroot мы можем пойти еще более минимально и создать микро-дистрибутив только с установленным X11 .
Таким образом, должно быть проще понять, что происходит.
Я описал создание дистрибутива по адресу: https://askubuntu.com/a/ 519164/52975
После того, как вы получили изображение, запущенное на QEMU, вы запускаете оболочку TTY.
Затем, когда вы выполните:
root
startx
он запускает графический интерфейс X11:
Теперь взгляните на источник для startx внутри этого дистрибутива, который является всего лишь сценарием оболочки.
Это простая оболочка над /usr/bin/xinit и что она проходит /etc/X11/xinit/xinitrc до xinit.
Если вы откроете /etc/X11/xinit/xinitrc, она содержит следующие строки:
[ f2], поэтому мы видим, что он запускается:
[d1 9] twm: очень простой и старый менеджер окон xclock и xterm, который мы видим на экранеДля /usr/bin/xinit мы можем сделать:
man xinit
[d23 ], в котором говорится: Если в командной строке не указана конкретная клиентская программа, xinit будет искать файл в домашнем каталоге пользователя, который называется .xinitrc, для запуска в качестве сценария оболочки для запуска клиентских программ. Если такой файл не существует, xinit будет использовать следующее по умолчанию: xterm -geometry +1+1 -n login -display :0
Если в командной строке не указана какая-либо конкретная клиентская программа, xinit будет искать файл в доме пользователя каталог под названием .xinitrc для запуска в качестве сценария оболочки для запуска клиентских программ. Если такой файл не существует, xinit будет использовать следующее по умолчанию:
X :0
Как отмечает Рмано, startx - очень старый подход. Еще раз, когда это было использовано, двоичный файл X11 был установлен setuid root.
Я просто попробовал это в виртуальной машине и, действительно, startx не удалось, как вы описали, по умолчанию. chmod u+s /usr/lib/xorg/Xorg исправляет это.
Я не рекомендую делать Xorg setuid root. Мир отошел от этого для Доброго Разума. Но если вы играете в кипучей виртуальной машине, вот как startx работает.