web-dev-qa-db-ja.com

仮想コンソールはプロセスとして実行され、疑似端末に基づいて実装されていますか?

Linuxには7つの仮想コンソールがあり、7つのデバイスファイル/dev/tty[n]に対応します。

仮想コンソールは、ターミナルエミュレータのように、プロセスとして実行されていますか? (わかりません。仮想コンソールはカーネルの一部のようです。それが正しければ、プロセスにすることはできません。)

仮想コンソールは、端末エミュレーターのように、疑似端末に基づいて実装されていますか? (いいえと思います。それ以外の場合、仮想コンソールのデバイスファイルは/dev/pts/[n]ではなく/dev/tty[n]になります)

ありがとう。

3
Tim

それは正しくありません。

Linuxカーネルに組み込まれているターミナルエミュレータプログラムがあります。ファイルハンドルが開いている実行中のプロセスとしては現れません。また、疑似端末デバイスも必要ありません。これは、フレームバッファーと入力イベントサブシステムの上に階層化されており、内部カーネルインターフェイスを使用してアクセスします。これは、アプリケーションモードシステムに一連の63(7ではない)カーネル仮想端末デバイス、/dev/tty1から/dev/tty63として表示されます。

ユーザースペース仮想端末は、疑似端末デバイスを使用して実装されます。 Linuxでは、疑似端末デバイス、カーネル仮想端末デバイス、およびシリアルポートの上に階層化された実際の端末デバイスが、(アプリケーションプログラムに関する限り)3種類の端末デバイスです。

調整が不足しているため、Linuxのドキュメントはこの問題に関してかなり悪いものになっています。他の2種類の端末デバイスのページはありますが、いくつかのLinuxオペレーティングシステムのカーネル仮想端末デバイスのマニュアルページは数年前からありません。このマニュアルページでは、正しい番号またはデバイスとそれらのデバイスファイル名について説明し、以下を読んでいました。

Linuxシステムには、最大63の仮想コンソール(メジャー番号4およびマイナー番号1から63の文字デバイス)があり、通常は1 <=の/dev/ttynと呼ばれます。 n <= 63.現在のコンソールは、メジャー番号4とマイナー番号0の文字デバイスである/dev/consoleまたは/dev/tty0によってもアドレス指定されます。

Debianの人々は、Debianが2014年にconsole(4)マニュアルページを失っていることに気づき、同じプロジェクトの人々がconsoleを削除するためだけに、Linux ManpagesProjectからのマニュアルページのインストールに切り替えました。 (4)「Debianとその派生物はこのページをインストールしない」と「Debianはもうそれを持っていない」ので、2016年の1年と少し後のマニュアルページ。

参考文献

10
JdeBP

Linuxには7つの仮想コンソールがあると言う人がいますが、それはどういう意味ですか?キーショートカットでアクセスできるのは7つしかないということですか?

それらがスポーンされる/すぐに利用できるという意味で。 was/etc/inittabで、spawningマルチユーザーランレベルのいくつかの(a)gettyによって構成されました。

一度引用すると pideinsgetty.targetが私をそこに送ります):

デフォルトでは、この自動スポーンはVT6までのVTに対してのみ実行されます(Linuxシステムの従来のデフォルト構成に近づけるため) 1

1つのVTがGUIによく使用されます-カウントされる場合とされない場合があります。

systemdはそれをより微妙にしますが、結果はまったく同じです。特に矢印キーを使用してttyをめくるときの直交感。

chvt 20は私を空白の「ターミナル」(デフォルトのsystemd)に置きます-最初にそれをアクティブにするためにいくつかのゲッティが必要です。次に、そのように対処するか、Fnキーをオルガンに変えます。または、Alt-矢印を使用します。

仮想コンソールはプロセスとして実行されていますか

ある意味でそうです。 ttyXを開くにはgettyプロセスが必要です。

 6314 tty2     Ss+    0:00 /sbin/agetty -o -p -- \u --noclear tty2 linux
 6316 tty3     Ss+    0:00 /sbin/agetty -o -p -- \u --noclear tty3 linux
 7408 tty5     Ss+    0:00 /sbin/agetty -o -p -- \u --noclear tty5 linux
 7453 pts/1    S+     0:00 grep getty
0
rastafile