X11はカーネルとどのように対話し、ログインを実行しますか


14

Linuxカーネルとのテキストベースの対話について理解しているように、TTYデバイスの1つに接続してユーザー名の入力を求めるプログラムがinit起動getty(またはagetty)と呼ばれ/devます。この後、呼び出されたプログラムloginが実行され、ユーザーのパスワードの入力を求められ、正しい場合はユーザーの好みのシェル(bashまたはcsh)が起動されます。この時点で、bashはTTYデバイスを介してカーネルと対話します。

このログインプロセスはX11でどのように機能しますか?X11はTTYを介してカーネルと対話しますか?

回答:


15

シェルは、TTYデバイス(接続されている場合)を使用して、ユーザー入力を取得し、出力を生成します。シェルがTTYに接続されているという事実は、によって決定されますgetty(そしてによって保存されますlogin)。ほとんどの場合、シェルはTTYに接続されているかどうかを気にしません。カーネルとの相互作用は、システムコールを介して行われます。

X11サーバーはログインを認識しません(シェルのように)。X11のログインプロセスは、2つの方法で機能します。

  • ユーザーが端末にログインし、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

カーネルにはログインの概念、またはログインするユーザーの概念はまったくありません-気になるのは、特定のユーザーIDで実行されているプロセスがあることだけです(これはカーネルのビジネスでもありません!)。ターミナルでのgettyまたはX11ディスプレイマネージャーのログインプログラムは、rootとして実行され、setuid()および関連する呼び出しを使用して、ローカルリゾルバー(NSSおよびlibcスタッフ-カーネルビジネスでもない)が提案するUIDの環境を設定します認証したばかりのユーザーに使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.