追加読書

追加読書

/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 ツールセット。

おすすめ記事