追加読書

追加読書

私は、WordpressやPrestaShopなどのいくつかのWebアプリケーションを管理するためのCentOSディストリビューションと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プログラムの一つです。あなたはWietse Venemaが約20歳agettyのときに書いた同様のプログラムを使用しています。getty

このプログラムが実行される理由は、システムが文字デバイスファイル名を持つシリアルデバイスに接続されている端末があると考えているからです/dev/ttyS0。システムが起動すると、カーネルコマンドラインでaの後に表示されるため、名前付きプログラムがsystemd-getty-generator表示されます。ジェネレータはテンプレートサービスユニットをインスタンス化します。サービスのアクティブ化の試みが記録されます。ttyS0/sys/class/tty/console/activeconsole=[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キーボードをエミュレートする必要がないため、受信文字をキーボードスキャンコードに逆マッピングする必要はありません。実際に構成されたキーボードレイアウトは、逆方向マッピング操作に使用されるキーボードレイアウトと一致します。出力側では、表示可能な画像を取得するためにビデオRAMを取得しようとする必要はありません。

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

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

今は役に立つことはないようですので、そのプロセスをgetty閉じることができます。/dev/ttyS0これを行うには、次のコマンドがおそらく最も簡単な解決策です。

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

最初のコマンドは次systemdの再起動までプロセスの開始試行を停止するように指示し、2番目のコマンドはそのプロセスを永久に無効にしたとマークします。

2番目のコマンドを使用して最初のコマンドを元に戻す前に、システムを再起動してください。したがって、わからない場合は、最初のコマンドを使用して数日待って問題が発生しているかどうかを確認できます。仮想マシンにアクセスできない場合は、再起動するとすべてが元の状態に復元されます。

〜のようにJdeBPの答えから、起動オプションも確認する必要があります。console=ttyS0ここにリストされている場合、プロセスは自動的に作成されsystemdます。getty/dev/ttyS0

答え3

/etc/systemd/journald.conf編集と設定でこの問題を解決しました。

MaxLevelSyslog=warning

関連情報