フレームバッファデバイスでテキストコンソールを起動するシステムサービスは何ですか?

フレームバッファデバイスでテキストコンソールを起動するシステムサービスは何ですか?

私は組み込みプラットフォームで作業しており、自分/dev/fb0の使用のために明確にする必要があります(デバイスはシリアルコンソールを介してアクセスでき、画面は情報を表示するために使用され、Xはありません)。

グラフィカルモードからマルチユーザーモードに変更しましたが、フレームdefault.targetバッファデバイスでログインプロンプトでgettyが開きますが、見つかりませんでした。どのサービスはぴったりです。誤ってシリアルコンソールログインを無効にし、開いているlsof項目を表示したくありません/dev/fb0

役に立つなら、ディストリビューションはYocto Linuxです。

答え1

lsof開くと何も表示されません/dev/fb0

しないでしょう。 Linuxカーネルにはターミナルエミュレータプログラムが組み込まれています。開いたファイル ハンドルを持つ実行中のプロセスとして表示されません。これは、内部カーネルインターフェイスを使用してアクセスするフレームバッファと入力イベントサブシステムの上にあります。これは一連のアプリケーションモードシステムに提供されます。カーネル仮想端末devices/dev/tty1など。以下の擬似ファイルは、/sysアクティブなKVT番号と一連のCGAスタイルのビデオバッファリングデバイス/dev/vcsa1などを示しています。

これらのアプリケーションモードシステムの1つは、もちろんカーネル仮想ターミナルで実行するように設定できるgetty+loginシステムであり、(見たように)デフォルトでそうします。getty文書化されたシステムメカニズムを使用すると、これらのプロセスを簡単に削除できます。

以前のSystem 5initシステムでは、すべてのgettyレコードがです/etc/inittab。 BSDinitシステムでは、すべてのgettyレコードがです/etc/ttys。 systemdシステムでは、状況はやや間接的です。

  • 「ログイン」デーモンは、logindシステムのスラングで「座席」と呼ばれるものを知っています。 「座席」0は、メインフレームバッファとすべてのカーネル仮想端末を持つ座席です。
  • その場でlogind始めましょう窒素systemdサービス[email protected]から。autovt@ttyN.service窒素NAutoVTs設定で設定されます/etc/systemd/logind.conf
  • これらのシステムサービスは以下から派生します。サービステンプレートユニット、名前付き[email protected]。これテンプレートパラメータ上記のように、カーネル仮想端末のデバイス名。デバイスファイル、存在する/dev/
  • [email protected]デフォルト設定では、これへのシンボリックリンクです[email protected]
  • カーネル仮想端末デバイスファイルを介して入出力用に設定されたプログラムを[email protected]実行する方法について説明します。getty

したがって、これらのいずれかを停止するには、に移動してサービスを自動的に開始しないように/etc/systemd/logind.conf設定します(徹底的に実行するには仮想端末を残さないでください)。logindautovt

しかし、それはすべてではありません。ターミナル エミュレータ プログラムはカーネルでアクティブのままであり、カーネル VT に渡されるログ メッセージから定期的なカーソルが点滅するまで、ターミナル エミュレータがフレーム バッファの使用を妨げる可能性があります。しかし、これはカーネル端末エミュレータプログラムとネゴシエートするためにフレームバッファを使用するプログラムをコーディングする問題であり、ここにすでに答えられています。

しかし、シリアルコンソールのログインはまったく異なるパスを介して行われます。 ㅏ発電機起動時にテンプレート単位のインスタンスを作成し[email protected]、検索または通知したカーネルコンソールデバイスごとに一度インスタンス化します。

追加読書

関連情報