/dev/consoleがtty0を指していますか?

/dev/consoleがtty0を指していますか?

私は/dev/consoleデバイスを理解しようとしましたが、明確ではないいくつかのことがあります。

  1. このデバイスの目的は何ですか?私が知る限り、カーネルがメッセージを表示する場所はここです。そうですか?

  2. コンソールで指定された仮想端末では、ジョブ制御は許可されません。なぜ?これは、カーネルがシステムメッセージを印刷する必要がある他のジョブを実行するのを防ぐためです。

  3. 私にとっては、/ dev / consoleが現在の仮想コンソールtty0を指しているようです。私はこれを簡単なものに基づいて見つけました。テストかなり一般的な構成のようです。しかし、私にとっては、これはtty0がジョブ制御を無効にする必要があることを意味します。これは、すべてのコンソールがジョブ制御を無効にする必要があることを意味します。考えるだけでも頭が痛いですね。また、tty0がコンソールの場合、tty1だけではなく、現在の端末からカーネルメッセージを受け取る必要はありませんか?

答え1

これは、オペレーションコンソールが紙(木材繊維で作られた薄くて柔軟な材料、一般的に白色)(削除された跡を残さない)に印刷する実際のテレタイプ機械であった時代の歴史の遺物です。時間の経過とともに、この情報は主にsyslogおよびdmesg機能に渡されました。現在、実際のコンソールを持っていますが、まだこの情報を必要とするシステムはほとんどありません。

私のLinux 3システムでは、/dev/consoleがtty0というアイデアをどこで得たのかわかりません。 /dev/console、tty、および ttyprintk はすべてデバイスのメジャー番号が 5 であるのに対し、tty0 および他のすべての擬似 tty は 5 です。主な番号は5です。デバイス番号は4です。これは、異なるドライバ(または同じドライバに対して単に異なるモード)を使用することを意味します。

答え2

この本Linux ttyの良い紹介とLinuxカーネルのfgrepingはLinuxコンソールの外観を示しています。たくさんありますregister_consoledrivers/char/*.c実装するLinuxカーネルで使用できるシステムコンソール。特定のLinuxインストールによって、コンソールとして機能する必要がある特定のデバイスが決まります。起動時にカーネルパラメータを渡して指定することも、他の技術もあります。これ実装はデフォルトであり、次のように言えます。実は標準ですが、他の標準も存在します。

/dev/console専用専攻があります:副専攻。なぜ?なぜならカーネル自体緊急メッセージを報告するときのカーネルデバイスのデフォルトユーザー。struct tty_driver *console_driver必要なルーチンを指すカーネルオブジェクトがあります。それでは、ユーザーモードプログラムへのインターフェースを提供しないのはなぜですか?/dev/consoleデフォルト設定と実際に同じか/dev/tty0、それとも少し違いがあるかどうかはわかりません。

それでは、ジョブ制御について学びましょうtty0tty0実際に端末をシミュレートして端末を指すことなく、どのようにttyこれが可能ですか?現在活動中? Linuxカーネルは、プロセスが断続的にtty0クラッシュする「デバイス」に接続するのを防ぎます。プロセスに対する制御がないため、ジョブ制御は不可能です(しかし、どのような法的目的でシェルにデータを供給できますか?)。ただし、これは実行中のジョブを制御する可能性とは関係ありません。tty1tty7tty0tty0特定仮想コンソール。tty実際に番号が付けられた他の端末は、あらゆる目的でコンソールアプリケーションに使用できる正当な端末です。

答え3

/dev/console は、ローカル端末セッション(マシンに接続されているモニターに接続されたコンソール)を抽象化したものです。

その目的は、システムがシングルユーザーモードで実行されている場合でも、リモートアクセスを提供するために主にサーバーにあります。これらのコンソールは、(ほとんどの場合)eth0ネットワークがダウンするとeth0デバイスにバインドされます。

関連情報