私が理解したところ、Linuxカーネルとのテキストベースの対話は、以下のTTYデバイスの1つに接続し、ユーザー名を求めるメッセージを表示する(または)init
というプログラムを起動します。その後、というプログラムが実行され、ユーザーにパスワードの入力を求めるメッセージが表示され、正しい場合は、ユーザーが優先シェル(または)を起動します。この時点で、bashはTTYデバイスを介してカーネルと対話します。getty
agetty
/dev
login
bash
csh
X11のログインプロセスは何ですか? X11はTTYを介してカーネルと対話しますか?
ベストアンサー1
シェルは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ディスプレイの上部に「テキストモード」でカーネルメッセージが表示されることがあります。