TTYを理解しようとすると、いくつかの暗い領域があります。
私のシステムには、/dev/tty[1-63]
があります。 udev
はこれらのキャラクターデバイスを作成していますか?そして、どうすればそれらにアクセスできますか(tty2はCtrl + Alt + F2でアクセスできます)?たとえば、/dev/tty40
にアクセスするにはどうすればよいですか?
私が理解しているように、/dev/tty1
にアクセスすると、agetty
が呼び出され、次にlogin
が呼び出されます。 agetty
を呼び出す以外のlogin
の役割は実際には何ですか?
これらは 仮想コンソール であり、Linuxでは仮想端末(VT)として知られています。単一のハードウェアコンソール(単一の画面と単一のキーボード)がありますが、Linuxは複数のコンソール(最大63)があるように見せかけます。特定の時点で、単一のVTはactive;キーボード入力はそのコンソールにルーティングされ、画面にはそのコンソールの表示内容が表示されます。
コマンド chvt
を使用して、VTを切り替えることができます(リモートでログインしたり、Xで実行している場合は、現在の仮想コンソールに直接アクセスする必要があります)。 loadkeys
またはXサーバーによってロードされたキーマップで設定されたキーバインディングを使用することもできます。デフォルトでは、Xの外側で Alt+Fn コンソール番号nに切り替えて Alt+Shift+Fn コンソール番号に切り替えますn+ 12; Alt+Left そして Alt+Right 前/次のコンソールに切り替えます。
コンソールに切り替えるには、コンソールを割り当てする必要があります。 openvt
を使用してコンソールを割り当て(これにはrootが必要)、 deallocvt
を使用してコンソールの割り当てを解除できます。
プログラム getty は、仮想コンソールに直接関係していません。特に、VTの割り当てとは関係ありません。 gettyの役割は、コンソールを準備し(シリアルポートパラメータを設定し、画面を空白にしたり、ウェルカムメッセージを表示したりするなど)、login
を呼び出し、ログインセッションが終了して繰り返すのを待つことです。一言で言えば、gettyの役割は、ループ内でlogin
を呼び出すことです。
コンソールを使用するためにgettyを実行する必要はありません。たとえば、openvt
を使用してコンソールで任意のプログラムを開始できます。 startx
を使用して、新しいコンソールでXサーバーを起動できます。