私は組み込みプラットフォームで作業しており、自分/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
設定します(徹底的に実行するには仮想端末を残さないでください)。logind
autovt
しかし、それはすべてではありません。ターミナル エミュレータ プログラムはカーネルでアクティブのままであり、カーネル VT に渡されるログ メッセージから定期的なカーソルが点滅するまで、ターミナル エミュレータがフレーム バッファの使用を妨げる可能性があります。しかし、これはカーネル端末エミュレータプログラムとネゴシエートするためにフレームバッファを使用するプログラムをコーディングする問題であり、ここにすでに答えられています。
しかし、シリアルコンソールのログインはまったく異なるパスを介して行われます。 ㅏ発電機起動時にテンプレート単位のインスタンスを作成し[email protected]
、検索または通知したカーネルコンソールデバイスごとに一度インスタンス化します。
追加読書
- ビデオをフレームバッファにレンダリングするときに仮想コンソールを非表示にするベストプラクティス
- https://superuser.com/a/723442/38062
logind.conf
。システムのマニュアルページ。 freedesktop.org.- 「複数座席」システムd。 freedesktop.org.
systemd-getty-generator
。システムのマニュアルページ。 freedesktop.org.