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

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

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

  • Что значит установить «название значка» терминала?
  • В чем разница между оконной системой и оконным менеджером?
  • Настройка клавиатуры (мертвая клавиша) в X
  • Как настроить внешний вид списка почтовых ящиков Thunderbird, списка сообщений и заголовков?
  • Как сделать gdm3 start X установленным в другом пути (или запуском X из персонализированного пути)?
  • Инструмент для измерения нарисованного на экране прямоугольника?
  • OpenBSD X, только мышь прокрутки вниз
  • Как изменить выбранную раскладку клавиатуры из командной строки?
  • 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, а не бизнес ядра) для использования только для пользователя, прошедшего проверку подлинности.

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