web-dev-qa-db-ja.com

Systemdでttyを減らす方法は?

昔は/etc/inittabを変更しました。今、systemdを使用すると、tty [1-6]が自動的に起動するようですが、tty [4-6]を無効にするにはどうすればよいですか?

Systemdサービスファイルは1つしかないようで、%Iを使用して異なるttyセッションを識別しています。そのサービスを削除する必要がなく、各[email protected]を手動で作成する必要がないことを願っています。

29
daisy

systemdの下でgettyがオンデマンドで生成されるため、「余分な」TTYを無効にする必要はありません。詳細については、man systemd-getty-generatorを参照してください。デフォルトでは、この自動生成はVT6までのVTに対してのみ行われることに注意してください(従来のLinuxシステムを模倣するため)。

として レナートはブログ投稿で言う1

より効率的にするために、ログインプロンプトがオンデマンドでのみ開始されるようになりました。 VTに切り替えると、gettyサービスはgetty @ tty2.service、getty @ tty5.serviceなどにインスタンス化されます。無条件にgettyプロセスを開始する必要がなくなるため、リソースを少し節約でき、起動が少し速くなります。

特定の数のgettyを構成したい場合は、適切なエントリを使用してlogind.confを変更するだけです。この例では3です。

NAutoVTs=3


1.実際、一連の投稿全体(現在は18番) systemd for Administrators は一読の価値があります。

35
jasonwryan

Debianベースのシステムでは、サーバー(dbusサービスなし)を構築したばかりの場合、起動時に5つの追加のgettyが起動されるファイルがあります。

/lib/systemd/system/getty.target.wants/getty-static.service

その中で、それは言う:

[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block start [email protected] [email protected] [email protected] [email protected] [email protected]
RemainAfterExit=true

このファイルを削除するだけで、余分なgettyが生成されなくなります。追加のgettyを1つだけ生成したい場合は、リストを短くしてください(2つの仮想コンソールの場合)。 tty1で自動的に1つ取得されるため、常に少なくとも1つの仮想コンソールが存在することに注意してください。

参照: dbusがない場合、systemd-logind.serviceは起動に失敗します

11
milli

特定のTTY 4〜6でgettyを無効にしながら、1〜3および7〜9を機能させたままにするには、次のコマンドを実行します。

for i in {4..6}; do
  systemctl mask getty@tty${i}.service
done

maskは、サービスを効果的に無効にするsymlink /etc/systemd/system/{name} -> /dev/nullを作成します。 systemctl startから実行しようとすると、エラーFailed to start NAME.service: Unit NAME.service is masked.が表示されます

A.service Wants=masked.serviceを使用している場合、start Aは成功しますが、ジャーナルで依存関係開始エラーも生成します。

B.service Requires=masked.serviceがある場合、start Bも失敗します。

うん、ネクロアンサー。乾杯。

9
temoto