web-dev-qa-db-ja.com

より高いTTYとgettyの役割にアクセスする

TTYを理解しようとすると、いくつかの暗い領域があります。

  • 私のシステムには、/dev/tty[1-63]があります。 udevはこれらのキャラクターデバイスを作成していますか?そして、どうすればそれらにアクセスできますか(tty2はCtrl + Alt + F2でアクセスできます)?たとえば、/dev/tty40にアクセスするにはどうすればよいですか?

  • 私が理解しているように、/dev/tty1にアクセスすると、agettyが呼び出され、次にloginが呼び出されます。 agettyを呼び出す以外のloginの役割は実際には何ですか?

1
Gradient

これらは 仮想コンソール であり、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サーバーを起動できます。