web-dev-qa-db-ja.com

起動に成功した後にシリアルコンソールを無効にする方法(systemd / grub2)

(inittabの代わりに)grub2とsystemdを使用するcentos7での起動プロセス中にシリアルコンソールを有効にします

セキュリティ上の理由から、完全に正常に起動した後、ブートの最後にそのシリアル入出力を元に戻したいと思います。

どうすればこれを達成できますか?

更新:

Systemdサービスを調べたところ、grub2がコンソールを起動したにもかかわらず、コンソールが認識/有効化されていることがわかりました。これにより、コンソールがオフになると思います。

systemctl stop [email protected]

他のすべてのサービスがオンラインになった完全に成功した開始後に、どうすればそれを自動的に実現できますか。 rc.localを使用することもできますが、これはinit.dのレガシーであり、他のサービスが適切にオンラインになったことを考慮していません。

2
ck_

これはひどくハッキーに感じますが、それは仕事をします。マシンが起動した後、シリアル端末を停止します。

/etc/systemd/system/killconsole.service:

[Unit]
Description=kill console after boot
After=default.target

[Service]
Type=simple
ExecStart=/bin/systemctl stop [email protected]

[Install]
WantedBy=default.target

次に、systemctl enable /etc/systemd/system/killconsole.serviceを実行してユニットを有効にします。

別の タイマーユニット を使用して上記をトリガーすることもできます。これは、起動後X分まで起動しません。それを試してみる場合は、必ずサービスからInstallセクションをリッピングし、そのセクションでsystemctl disableを実行して、default.targetのウォンツリストから削除してください。

'successfulboot'の定義は異なる場合があることに注意してください。たとえば、ボックスのネットワークが接続されている場合、すべてのサービスは正常に起動しますが、シリアルアクセスが必要になる場合があります。そのため、システムが正常に(そしてネットワーク上で)動作していることを確認するために小さなスクリプトを作成し、それをExecStartPreオプションに配置することを強くお勧めします。 Preスクリプトが失敗した終了コードを返した場合、サービスは実行されず、シリアルコンソールは無効になりません。

2
alienth

これは、そのサービスをマスキングすることで実現できます。

systemctl mask [email protected]

この回答 への称賛。

0
Jan Segre