Xorgがどのように機能するかを理解しようとしています。
理解を深めるために、次の画像を作成しました(画像はCtrl + Alt + F7を押した後のコンポーネントの状態を示しています)。
画像の説明は次のとおりです。
/dev/tty7
Xorgの制御端末です。- Xorgは画面に描画するためにVGAドライバと直接会話します(描画したいものをTTYドライバに送信しません)。
- Xorgはキーボードとマウスドライバから直接入力を受け取ります(TTYドライバからキーボードとマウスの入力は受け付けません)。
- 仮想端末もキーボードドライバから入力を受け取ります(しかし、私がテストした結果、キーを押すためのスキャンコードを受け取りました)。
- Xクライアント(図のxtermとFirefox)には制御端末がありません。
私の理解は正しいですか?
答え1
あなたの説明はダイアグラムと一致せず、ダイアグラムよりも正確です。
X サーバーは入力または出力に tty ドライバーを使用しません。さまざまな入力デバイスのドライバから直接入力を読み取り、出力をグラフィックカードドライバに直接送信します。
入力デバイスを一覧表示し、追加xinput
情報を取得するために使用できますxinput list-props
。たとえば、
$ xinput | tail -n 1
↳ USB Keyboard id=10 [slave keyboard (3)]
$ xinput list-props 10 | tail -n 1
Device Node (263): "/dev/input/event2"
を読むと、XサーバーがUSBキーボードから入力を受け取ることがわかります/dev/input/event2
。
出力の場合、同様のユーザーレベルのツールがあるかどうかわかりません。xrandr --listproviders
使用中または使用可能なグラフィックドライバを一覧表示しますが、エントリ/dev
は表示しません。lsof -p$(pgrep Xorg)
またはを使用して、Xサーバーがどのグラフィックデバイスを開いているかを確認できますless /var/log/Xorg.0.log
。
制御端末の概念は、テキストモード会話用に設計されています。 Xサーバは、起動された方法によって制御端末を有してもしなくてもよい。 GUIメニューから実行されるXプログラムには通常制御端末がない。ウィンドウマネージャには制御端末がないためです。端末で実行されるシェルから始まるXプログラムは、その端末を制御端末として使用します。