私は組み込みプラットフォームで作業していて、自分の使用のために/dev/fb0
をクリアする必要があります(Xを使用せずに、画面が情報の表示に使用されている間、シリアルコンソールを介してアクセス可能なデバイス)。
私はすでにdefault.target
をグラフィカルからマルチユーザーに変更しましたが、フレームバッファーデバイスでログインプロンプトでgettyを開き、whichサービスが見つかりません。偶然シリアルコンソールログインを無効にしたくありません。また、/dev/fb0
を開いた状態でlsof
に何も表示されません。
ディストリビューションはYocto Linuxです。
lsof
は、/dev/fb0
が開いていると何も表示しません。
それはしません。 Linuxカーネルにはターミナルエミュレータプログラムが組み込まれています。ファイルハンドルが開いている実行中のプロセスとしては現れません。フレームバッファーと入力イベントサブシステムの上に階層化されており、内部カーネルインターフェイスを使用してアクセスします。一連のカーネル仮想端末デバイス、/dev/tty1
などとしてアプリケーションモードシステムに表示されます。アクティブなKVT番号を示す/sys
の下の疑似ファイル。一連のCGAスタイルのビデオバッファデバイス、/dev/vcsa1
など。
これらのアプリケーションモードシステムの1つはもちろんgetty
+ login
システムであり、これらのカーネル仮想端末で動作するように構成できます。文書化されたsystemdメカニズムを使用して、getty
プロセスを簡単に取り除くことができます。
古いSystem 5 init
システムでは、各getty
は/etc/inittab
のレコードでした。 BSD init
システムでは、各getty
は/etc/ttys
のレコードです。 systemdシステムでは、物事は少し間接的です。
logind
は、systemdスラングで「シート」と呼ばれるものを認識しています。 「シート」ゼロは、プライマリフレームバッファとそれらすべてのカーネル仮想端末を備えたものです。logind
が開始しようとします[〜#〜] n [〜#〜][email protected]
からautovt@ttyN.service
までの名前のsystemdサービス。 [〜#〜] n [〜#〜]の値は、/etc/systemd/logind.conf
のNAutoVTs
設定で設定されます。[email protected]
という名前のサービステンプレートユニットから作成されます。 templateパラメーターは、上記のように、/dev/
内のカーネル仮想端末のデバイスファイルのデバイス名です。[email protected]
は、デフォルトの設定では、[email protected]
へのシンボリックリンクです。getty
プログラムの実行を記述するのは[email protected]
です。したがって、これを停止するには、/etc/systemd/logind.conf
にアクセスし、logind
サービスを自動開始しないようにautovt
を構成します(詳細を知りたい場合は、仮想端末を予約しないでください)。
ただし、それだけではありません。ターミナルエミュレータプログラムはカーネルでまだアクティブであり、カーネルVTに向けられたログメッセージから通常のカーソルの点滅まで、ターミナルエミュレータがフレームバッファの使用を妨害します。ただし、これは、フレームバッファを使用してカーネルターミナルエミュレータプログラムとネゴシエートするプログラムをコーディングする場合に問題となります。
ちなみに、シリアルコンソールのログインは、まったく異なるルートを介して行われます。 generatorは、起動時に[email protected]
テンプレートユニットのインスタンスを作成し、検出または通知されるカーネルコンソールデバイスごとにインスタンス化します。
logind.conf
。 systemdのマニュアルページ。 freedesktop.org。systemd-getty-generator
。 systemdのマニュアルページ。 freedesktop.org。