Як X11 взаємодіє з ядром / виконує вхід


14

Як я розумію, на основі текстової взаємодії з ядром Linux програма, яка називається initзапускається getty(або agetty), яка підключається до одного з пристроїв TTY в /devі запитує ім'я користувача. Після цього loginзапускається програма, що називається , яка запитує пароль користувача, і якщо вона правильна, то запускає бажану оболонку користувача (наприклад, bashабо csh). У цей момент bash взаємодіє з ядром через пристрій TTY.

Як цей процес входу працює для X11? Чи взаємодіє X11 з ядром через TTY?

Відповіді:


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 (програма, яка дозволяє використовувати миші в текстовому режимі). X також може поділитися VT ...

На деяких робочих станціях в минулому не було багато явної синхронізації з ядром; якщо ви не працювали xconsole, ви можете отримати повідомлення з ядром, що відображаються в "текстовому режимі" у верхній частині екрана X11.


2

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.