Bagaimana X11 berinteraksi dengan kernel / melakukan login


14

Seperti yang saya pahami untuk interaksi berbasis teks dengan kernel Linux, sebuah program bernama initbegin getty(atauagetty ) yang menghubungkan ke salah satu perangkat TTY di bawah /devdan meminta nama pengguna. Setelah ini, program yang disebut logindijalankan yang meminta kata sandi pengguna dan jika benar, kemudian meluncurkan shell yang disukai pengguna (misalnya bashatau csh). Pada titik ini, bash berinteraksi dengan kernel melalui perangkat TTY.

Bagaimana cara proses masuk ini bekerja untuk X11? Apakah X11 berinteraksi dengan kernel melalui TTY?

Jawaban:


15

Shell menggunakan perangkat TTY (jika terhubung ke satu) untuk mendapatkan input pengguna dan menghasilkan output, dan tidak banyak lagi. Fakta bahwa shell terhubung ke TTY ditentukan oleh getty(dan diawetkan oleh login); sebagian besar waktu shell tidak peduli apakah itu terhubung ke TTY atau tidak. Terjadi interaksi dengan kernel melalui panggilan sistem.

Server X11 tidak tahu tentang login (seperti shell). Proses masuk di X11 bekerja dalam dua cara:

  • baik pengguna log in di terminal, dan kemudian mulai X (biasanya menggunakan startx );
  • atau server X dimulai dengan "manajer tampilan" yang meminta pengguna untuk login dan kata sandi (atau informasi otentikasi apa pun yang diperlukan).

Cara X11 server mendapatkan input dan menghasilkan output sangat berbeda dibandingkan dengan shell. Di sisi input, X tahu tentang perangkat yang tidak dimiliki shell, dimulai dengan mouse; itu biasanya mengelola mereka secara langsung dengan drivernya sendiri. Bahkan untuk keyboard, X memiliki driver sendiri yang melengkapi penanganan kernel (jadi seperti yang saya mengerti, di Linux misalnya X menggunakan driver TTY untuk membaca input mentah dari keyboard, tetapi kemudian menafsirkannya menggunakan driver sendiri). Di sisi output, X drive menampilkan perangkat secara langsung, dengan atau tanpa bantuan kernel, dan tanpa melalui perangkat TTY.

Server X11 pada banyak sistem memang menggunakan perangkat TTY, untuk menyinkronkan dengan kernel: pada sistem yang mendukung terminal virtual, X perlu "menyimpan" VT yang sedang berjalan, dan menangani switching VT. Ada beberapa kehalusan lainnya di sepanjang jalan; dengan demikian di Linux, X mengubah TTY untuk menonaktifkan GPM (sebuah program yang memungkinkan penggunaan mode teks dari mouse). X juga dapat membagikan VT ...

Pada beberapa workstation di masa lalu, tidak ada banyak sinkronisasi eksplisit dengan kernel; jika Anda tidak menjalankan xconsole, Anda bisa berakhir dengan pesan-pesan kernel yang ditampilkan dalam "mode teks" di atas layar X11 Anda.


2

Kernel sama sekali tidak memiliki konsep login, atau tentang siapa yang login - yang perlu diperhatikan adalah bahwa ada proses yang berjalan di bawah ID pengguna tertentu (yang juga bukan bisnis kernel!). Program login, baik itu getty pada terminal atau tampilan manajer X11, berjalan sebagai root dan kemudian menggunakan setuid () dan panggilan terkait untuk mengatur evironment untuk apa pun UID resolver lokal (NSS dan libc stuff - bukan bisnis kernel juga) disarankan untuk digunakan untuk pengguna yang baru saja dikonfirmasi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.