Невозможно запустить `startx` из сеанса внутреннего экрана

Моя интерпретация Стандарта иерархии файловой системы (FHS) такова: что каталоги в иерархии / usr предназначены для файлов, которые не требуются для локальной системы для загрузки (и подключения к сети).

Большинство программ, выполняемых обычными пользователями, которые не нужны для загрузки или восстановления системы и которые не устанавливаются локально, должны быть помещены в этот каталог.

Это описание относится к программам, которые могут быть установлены нелокально, то есть на удаленном сервере (доступном по сети). Эта интерпретация имеет смысл при чтении в контексте следующего описания из man hier :

/ usr
Этот каталог обычно монтируется из отдельного раздела. Он должен содержать только данные, доступные только для чтения, чтобы их можно было монтировать на различных машинах под управлением Linux.

После того, как система загрузилась и подключилась к сети, каталоги, совместно используемые по сети через NFS (сетевая файловая система), могут быть смонтированы (только для чтения) в точки монтирования в иерархии / usr .

3
05.12.2016, 07:40
3 ответа

Запуск startx имеет смысл, только если вы находитесь перед компьютером. Тестирование на владение консолью - один из способов определить это. Как вы выяснили, его можно обмануть, работая в сеансе screen . В таком случае X для вас.

1
27.01.2020, 21:37

Чтобы понять это, сначала мы должны понять разницу между терминалом, оболочкой и консолью.

  • Терминал - это программа, запускающая оболочку, в прошлом это было физическое устройство (до того, как терминалы были мониторами с клавиатурой, они были телетайпами), а затем ее концепция была перенесена в программное обеспечение, такое как Gnome-Terminal.
  • Gnome-Terminal, появляются черные окна, запускающие Shell , чтобы мы могли запускать наши команды.
  • Консоль - это особый вид терминала, он также был физическим устройством. Например, в Linux у нас есть виртуальные консоли , к которым мы можем получить доступ с помощью комбинации Ctrl + Alt + F1 до F7.

виртуальные консоли, потому что раньше это было физическое устройство . но теперь это не отдельное устройство. поэтому мы называем это виртуальными терминалами.

Большинство современных терминалов, строго говоря, являются эмуляторами терминалов. Это тип роли в работе UNIX-подобной системы и в то же время основной интерфейс, предлагаемый системами.

Фактически все, включая графический интерфейс пользователя, строится поверх него. [1]

В разговорной речи мы можем сказать, что «терминал» относится к конечным точкам в компьютерной сети с топографией «звезда».

тогда возникает вопрос. Поскольку графический интерфейс создается на консоли. тогда что делать, если мы хотим выполнить некоторые операции в командной строке. и ответ на этот вопрос - терминал ... который далее эмулирует консоль ... и давайте введем в него нашу любимую команду.

объяснение [1]

Итак, здесь мы знаем, что даже графический интерфейс создается на консоли ... и, вводя команду startx , вы снова запрашиваете открытие и новый XServer.Так что подумайте сами, почему терминал GUI должен позволять вам это делать ??? [вы хотите сломать свой XServer ??]. и , если вы действительно хотите принудительно выполнить эту команду .. просто запустите команду startx с правами администратора. у вас все получится, но вы наверняка нарушите время выполнения XServer.

и отвечу на ваш последний вопрос .. [К какому ресурсу вы можете получить доступ на "сырой" консоли, к которому вы не можете получить доступ в оболочке, работающей под экраном?]

Фактически, до сих пор я не Я не видел случая, чтобы я не мог получить доступ к ресурсу через терминал, работающий на Xserver. У вас должна быть возможность получить доступ ко всем ресурсам с помощью внутреннего графического интерфейса пользователя Xserver .. (потому что он тоже был разработан для удовлетворения всех потребностей, которые давала обычная консоль !!!) ..

Но выполнение команды, которая приводит к тому же Так как обрезка ветки дерева, сидя точно на этой ветке ... определенно создаст ошибку.

В области компьютерных наук все имеет смысл.

0
27.01.2020, 21:37

Типичная система Linux имеет фиксированное количество виртуальных терминалов/консолей (VC ), которым назначены устройства /dev/tty1, /dev/tty2и т. д. Они используются для оболочек входа в консоль, и доступ к ним можно получить с помощью нажатия клавиш Ctrl -Alt -F1, Ctrl -Alt -F2 и т. д.

Кроме того, существуют псевдотерминалы (PTY ), которые имеют такие имена, как /dev/pts/19. Они используются для эмуляторов терминалов, таких как Xterm, для сеансов SSH, экранных окон и так далее.

Вы можете узнать, на каком типе работает ваша оболочка, вот так:

$ echo $TTY
/dev/pts/19

По причинам, которые мне не совсем ясны, полноэкранное -графическое программное обеспечение, такое как Xorg, должно быть связано с виртуальной консолью. Поскольку X не может работать, если у него нет разрешений на запись на устройство VC (, например. /dev/tty7), он, вероятно, начинается с открытия этого устройства и использования его для отправки определенных запросов ядру. Я предполагаю, что эти запросы не будут поняты устройством PTY.

Ниже вы можете увидеть разрешения двух устройств VC. В первом, /dev/tty1, я вошел в систему как myusername, и вы можете видеть, что программа, которая вошла в систему, изменила устройство, чтобы оно принадлежало мне. Вторая строка, /dev/tty2, принадлежит root, поскольку она по-прежнему показывает запрос на вход в систему :

.
$ ls -al /dev/tty{1,2}
crw------- 1 myusername tty 4, 1 Dec  9 05:47 /dev/tty1
crw--w---- 1 root       tty 4, 2 Dec  9 05:11 /dev/tty2

Если вы хотите запустить startxна указанном VC, но у вас нет прямого доступа к нему (, например, если вы вошли в систему через SSH или разговариваете с окном экрана ), тогда вы можете использовать systemd-run, как описано здесь . Этот метод требует привилегий sudo, но в конце концов вы будете работать startxкак обычный пользователь, как если бы вы вошли в указанный VC.

0
27.01.2020, 21:37

Теги

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