参考文献

参考文献

私は、CentOS ディストリビューションと、Wordpress や PrestaShop などの Web アプリを管理するための Apache インスタンスを備えたクラウド サーバーを持っています。

ログファイル ( ) にエラーが報告されていることに気付きましたvar/log/

  • 特にmessages
    May 30 11:54:41 xxx00962 systemd: Starting Serial Getty on ttyS0...
    May 30 11:54:41 xxx00962 systemd: Started Serial Getty on ttyS0.
    May 30 11:54:51 xxx00962 systemd: [email protected] holdoff time over, scheduling restart.
    May 30 11:54:51 xxx00962 systemd: Stopping Serial Getty on ttyS0...
    
  • そしてsecure
    May 30 15:51:30 xxx00962 agetty[24693]: /dev/ttyS0: not a character device
    

xxx00962は(匿名化された)ホスト名です。

何のためにあるのか分かりませんgettyが、問題を解決したいと思います。

誰か私を助けて、getty仕組みを説明してくれませんか?

答え1

gettyは最も古い Unix プログラムの 1 つです。Wietse Venema によって書かれた、およそ 20 年前にagetty書かれた、似たようなプログラムを使用しています。getty

このプログラムが実行されているのは、システムが、キャラクタ デバイス ファイル名 のシリアル デバイスに接続された端末があると考えているためです/dev/ttyS0。システムがブートストラップされたとき、 という名前のプログラムがをsystemd-getty-generator検出しましたttyS0/sys/class/tty/console/activeこれは、カーネル コマンド ラインで の後にリストされているためですconsole=。ジェネレーターによって、[email protected]テンプレート サービス ユニットが としてインスタンス化されました[email protected]。これが、ログに記録されている試行されたアクティベーションのサービスです。

このサービスは、そのデバイスを介して端末ログオンを提供します。

何らかの理由で(2014年以降のバージョンのsystemdを使用している場合)、システムに不整合が発生し、それ/dev/ttyS0ないキャラクタデバイスファイル、ましてや端末であるキャラクタ デバイス。 systemd-getty-generatorブートストラップ時にあると考えました。変更された可能性がある方法は少なくとも 2 つあります。どちらが発生したかは、質問からは判断できません。

修理/dev/ttyS0

  • キャラクターデバイスであるはずなのにそうでない場合は、実行時に何が変更されているかを調べます。
  • キャラクタ デバイスではないはずの場合は、ブートストラップ時にチェックしたときに端末デバイスであった理由を調べてくださいsystemd-getty-generator。また、コマンド ラインでカーネルにコンソールであると伝えるのをやめてください。シリアル ポート (端末が接続されているかどうかに関係なく) がないためキャラクタ デバイスではないはずの場合は、存在しないシリアル ポートがコンソールであるとカーネルに伝えるのは単純に間違っています。
  • 端末であるキャラクタ デバイスであるはずなのに、その端末からログオンできないようにしたい場合は、コマンド ラインでカーネルにそれがコンソールであると伝えるのをやめます。
  • 端末であるキャラクタデバイスであるはずなのに、カーネルコンソールにしたい場合、まだその端末 (または他の非仮想端末コンソール) からログオンできないようにしたい場合は、systemd-getty-generatorその主な機能が必要なものではないため無効にします。

参考文献

答え2

どの Unix システムでも、gettyシリアル ポート接続 (有線端末またはモデム回線) にログイン プロンプトを表示し、ユーザーがログインするまで待機するプロセスの従来の名前です。

現代の (物理) システムでは、gettyプロセスは通常、テキスト モードの仮想コンソールにログイン プロンプトを提供します。システムにリモート コンソール アクセス ハードウェア (HP iLO、Sun/Oracle ILOM、Fujitsu IRMC、Oracle iDRAC など) がある場合、システム管理者が対応するシリアル ポートのプロセスを設定するだけで、リモート コンソール インターフェイスを介して SSH 接続を確立することでアクセスできる仮想シリアル ポートが提供されることがよくありますgetty

これは、Java または HTML5 を使用する Web ベースのリモート コンソール インターフェイスを使用するよりもはるかに信頼性が高いことがよくあります。仮想シリアル ポートは PC キーボードをエミュレートする必要がないため、受信した文字をキーボード スキャンコードに逆マッピングして戻す必要がなく、サーバー OS で実際に構成されているキーボード レイアウトが逆マッピング操作に使用されたものと一致することを期待する必要がありません。また、出力側では、表示可能なイメージを得るためにビデオ RAM をスクレイピングする必要がありません。

仮想マシンでは、ほぼ同じ理由で、仮想シリアル ポートをほぼ同じ方法で使用できます。つまり、仮想シリアル ポート接続では、「仮想 KVM」よりもデータの変換が少なくて済みます。

あなたの特定のケースでは、クラウド仮想マシン OS は仮想シリアルポートを として想定するように構成されているようです/dev/ttyS0が、現在、仮想シリアルポートは VM に存在しないようです。おそらく、クラウド インフラストラクチャによる VM 初期化プロセスで使用されたのでしょうか。

現時点では何も役に立つ処理を行っていないようなので、 のgettyプロセスをシャットダウンできる可能性があります。これを行うには、次のコマンドが最も簡単な解決策です。/dev/ttyS0

systemctl stop [email protected]
systemctl disable [email protected]

最初のコマンドは、systemd次回の再起動までプロセスの開始を試行しないように指示し、2 番目のコマンドはそれを永続的に無効としてマークします。

2 番目のコマンドを使用するまでは、システムを再起動するだけで最初のコマンドを取り消すことができます。そのため、確信が持てない場合は、最初のコマンドを使用して数日待って、問題が発生しないかどうかを確認してください。VM にアクセスできなくなった場合は、再起動するだけで以前の状態に戻ります。

としてJdeBPの回答、ブート オプションも確認する必要があります。console=ttyS0そこに がリストされている場合、でプロセスsystemdが自動的に生成されます。getty/dev/ttyS0

答え3

編集/etc/systemd/journald.confと設定で解決しました

MaxLevelSyslog=warning

関連情報