Как X11 взаимодействует с ядром / выполняет вход в систему

Как я понимаю для текстового взаимодействия с ядром Linux, программа под названием init запускает getty (или agetty ), которая подключается к одному из устройств TTY в /dev и предлагает agetty имя пользователя. После этого запускается программа под названием login которая запрашивает пароль пользователя и, если она правильная, запускает предпочтительную оболочку пользователя (например, bash или csh ). На этом этапе bash взаимодействует с ядром через устройство TTY.

Как этот процесс входа в систему работает для X11? X11 взаимодействует с ядром над TTY?

  • Несколько экземпляров Firefox над X11
  • Почему я получаю это сообщение от xauth: «тайм-аут в файле блокировки /home/<user>/.Xauthority»?
  • shift: both_capslock отключает нормальное смещение
  • Изменение свойств X-объекта Zombie из состояния Iconic в нормальное состояние
  • Почему «xrandr» говорит, что у меня есть 3 порта HDMI и 3 DP, в то время как у меня есть только один HDMI и один DP?
  • Как проверить ненадежное графическое приложение?
  • Производительность и ограничения использования X GUI удаленно?
  • Как сделать настройки xrandr постоянными в Debian 9?
  • 2 Solutions collect form web for “Как X11 взаимодействует с ядром / выполняет вход в систему”

    Оболочка использует устройство TTY (если оно подключено к одному), чтобы получить пользовательский ввод и произвести вывод, и не намного больше. Тот факт, что оболочка подключена к TTY, определяется getty (и сохраняется login ); в большинстве случаев оболочка не заботится о том, подключена ли она к TTY или нет. Его взаимодействие с ядром происходит через системные вызовы.

    Сервер X11 не знает о логинах (как и в командной оболочке). Процесс входа в X11 работает двумя способами:

    • либо пользователь регистрируется на терминале, а затем запускает X (как правило, используя startx );
    • или X-сервер запускается с «диспетчером отображения», который запрашивает у пользователя логин и пароль (или какая-либо информация аутентификации требуется).

    То, как серверы X11 получают ввод и вывод продукции, сильно отличается от оболочки. На стороне ввода X знает о устройствах, которые не имеют оболочки, начиная с мышей; он обычно управляет теми, кто напрямую связан со своими собственными драйверами. Даже для клавиатур X имеет свои собственные драйверы, которые дополняют обработку ядра (так, как я понимаю, в Linux, например, X использует драйвер TTY для чтения исходного ввода с клавиатуры, но затем интерпретирует это с использованием собственного драйвера). На стороне вывода X-устройства отображают устройства напрямую, с помощью или без помощи ядра, и не проходят через устройство TTY.

    Однако серверы X11 во многих системах используют устройства TTY, чтобы синхронизировать с ядром: в системах, поддерживающих виртуальные терминалы, X должен «резервировать» VT, в котором он работает, и обрабатывать VT-коммутацию. На этом пути есть еще несколько тонкостей; таким образом, в Linux, X настраивает TTY для отключения GPM (программы, которая позволяет использовать текстовые средства для мышей). X также может совместно использовать VT …

    На некоторых рабочих станциях в прошлом не было явно выраженной синхронизации с ядром; если вы не запускали xconsole , вы могли бы получить сообщения ядра, отображаемые в «текстовом режиме» поверх экрана X11.

    Ядро не имеет абсолютно никакой концепции входа в систему или того, кто входит в систему, – все, о чем он заботится, – это процессы, выполняемые под определенным идентификатором пользователя (кто это также не является бизнесом ядра!). Программа входа в систему, будь то getty на терминале или диспетчере отображения X11, работает от имени пользователя root, а затем использует setuid () и связанные вызовы для настройки среды для любого UID, который используется локальным преобразователем (NSS и libc stuff, а не бизнес ядра) для использования только для пользователя, прошедшего проверку подлинности.

    Interesting Posts

    Как создать пользовательский дистрибутив FreeBSD

    Как запустить dbus с фиксированным адресом?

    Почему не удается получить ключ CRAN для R-backports?

    копировать строки, где символ встречается ровно столько раз

    Почему некоторые приложения оставляют события KeyRelease потребляемыми следующим ориентированным приложением / окном

    Концептуализация btrfs – понимание моментальных снимков и используемого пространства

    Использовать файлы math.h и ссылок объектов без -lm

    Как вы можете запретить Linux рисовать программу Java?

    Проверьте, используется ли слово перед сглаживанием

    Резервное копирование файловой системы ubi с dd?

    Как предотвратить запуск ssh-агента в CentOS?

    Как получить только файлы, созданные после даты с помощью ls?

    Как разбить файл и вывести его из команды?

    Как я могу получить версию сервера Fedora и Opensuse?

    Avahi, кажется, перестает издавать / обновлять услуги через некоторое время

    Linux и Unix - лучшая ОС в мире.