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

14

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

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

allsey87
источник

Ответы:

15

Оболочка использует устройство 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 (программа, которая позволяет использовать мышь в текстовом режиме). Х также может делиться VT ...

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

Стивен Китт
источник
2

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

rackandboneman
источник