/etc/default/grub
コンソールを次のように変更したカーネルに提供されているconsole =パラメータを理解したいと思います。第3ターミナルたとえば(私が選んだ理由は第3ターミナル相対的なターミナルS0(シリアルポートはありません):
コンソールを次のように設定するとします。第3ターミナルカーネルは次にのみメッセージを出力します。第3ターミナル他のttyはありません。Ctrl++を使用してAlt入力しました。F2ターミナル2Altそして+ SysRq+キーを押してくださいH。確認してみるとdmesg
そこにあるメッセージを見ることができます。
これにより、現在のカーネルに関するメッセージを表示できます。ターミナル2。次に進む第3ターミナルメッセージは表示されません。
完璧にするために、コンソールは以下を指すように正しく設定されています。第3ターミナル:
~$ cat /sys/devices/virtual/tty/console/active
tty3
これに加えて、共通helloworld
モジュールをコンパイルし、それに対してinsmodとrmmodを実行しました。現在アクティブな状態に出力が表示されます。端末指定されたコンソールの代わりに(第3ターミナル)。
なぜこれが起こるのかわかりません。誰かがこれを説明できますか?コンソールパラメータを誤って理解しましたか?
ベストアンサー1
Linuxコマンドラインの設定に使用される名前は、console=
ファイルシステムで検索されるデバイスファイル名ではありません。彼らは実際にコンビネーションの一つ登録名そして索引、「tty3」は登録された名前「tty」、インデックスは3です。
登録された名前は次のとおりです。内部名デバイスドライバは、コンソールI / Oハンドラを登録するために使用されます。これは、ユーザー空間デバイス名とまったく一致する必要はありません。 "tty"は使用された名前と一致します。カーネル仮想端末サブシステムコンソールI/Oハンドラを登録するとき。
索引いいえKVT番号。デバイスドライバが提供する場合は、特定のコンソールI / Oハンドラインスタンスを一致させるために使用されます。2つ以上のコンソールI / Oハンドラ同じ名前。これはしかし、実際にはそうではありません。KVTサブシステムの場合は、コンソールI / Oハンドラのみを登録してください。この場合、インデックスは実際にはほとんど無視されます。これは実際にはインデックス3で起こるものです。
はい、Linux docoです。別の言葉があります。 Linuxドキュメント間違った。再び。
さらに、KVT サブシステムをコンソールとして選択すると、デフォルトですべてのコンソール出力が記録されます。最初、到着する現在活動中KVT。これは変更される可能性がありますが、仕方ない仕様のカーネルコマンドラインで使用される登録インデックス番号console=
。代わりに、KVTデバイスに対してTIOCL_SETKMSGREDIRECT
サブコマンドを実行して変更されますTIOCLINUX
ioctl()
(最良の結果を得るには、KVTデバイスがリダイレクトされます)到着そうしないと、デバイスファイルが開くまでKVTが生成されないため、KVTがまったく存在しない可能性があります。
Linux docoはこの間違いをしません。とても簡単です。TIOCL_SETKMSGREDIRECT
記録はまったくありません。console_ioctl
マンページから。
プログラマーでない場合は、次のツールを使用してこの機能にアクセスできます。誤解を招くBusyboxsetlogcons
コマンドのログ記録そしてアランクルーズsetconsole
。
追加読書
- ジョナサンデボインポラード(2018)。 」Linux vt」。 装備。 Nosh ツールセット。
- ジョナサンデボインポラード(2018)。 」Linuxコンソール」。 装備。 Nosh ツールセット。