web-dev-qa-db-ja.com

[email protected][email protected]の違いは何ですか

デバイス/dev/ttyAMA0で一部のゲッティを無効にするには、systemctl mask [email protected]でマスクする必要があります。これは正常に機能します。そこで、ttyUSB1systemctl enable [email protected]を使用してゲッティを有効にします。正常に動作します。

だから私の質問:[email protected][email protected]の間に違い(そしてそれが何であるか)はありますか?

1
powerpete

これら2つのユニット(またはユニットテンプレート)の違いを確認するには、ファイルの違いを確認するだけで十分です getty @ .serviceserial-getty @ .service =、これはシステムの/lib/systemd/systemにあります。

(ここにリンクされているファイルは、この記事の執筆時点で最新リリースのsystemd v239のファイルを指しています。ファイルにはm4マクロが含まれているため、インストール前に処理されますが、m4処理によって導入された小さな変更であるため、十分近い。)

いくつかの違いがありますが、主な違いは、各ユニットによって呼び出されるExecStart=コマンドです。

ユニットgetty @ .serviceは、次のコマンドを呼び出します。

ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM

Serial-getty @ .serviceがこのコマンドを呼び出す間:

ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM

Serial-getty @ .serviceで使用されるコマンドは、シリアルポートの速度を構成するために、agetty--keep-baud引数を渡します。ある意味で、getty @ .serviceはシリアルポートで機能しますが、シリアルポートが適切に構成されていない可能性があり、適切に構成されている場合と同じように機能しないか、遅くなる可能性があります。

一方、getty @ .serviceはagetty--noclear引数を渡すため、ユーザーがログアウトした後、コンソール画面はクリアされません(これは従来、少なくともtty0で構成されていました)。

ユニットファイルとのさらなる違い:

  • serial-getty @ .serviceはシリアルポート(BindsTo=dev-%i.device)のudevデバイスにバインドするため、リムーバブルデバイス(USBなど)の場合、デバイスが取り外されたりプラグが抜かれたりすると、systemdはgettyを停止します。
  • getty @ .serviceは、tty0が存在することを確認します(ConditionPathExists=/dev/tty0)。したがって、カーネルでローカルコンソールのサポートが無効になっている場合、ローカルコンソールは生成されません。
  • getty @ .serviceは、ロケール変数(UnsetEnvironment=LANG LANGUAGE LC_...)の設定を解除します。これは、ローカリゼーションは通常、ローカルコンソールでサポートされていないか、サポートが不十分であるためです。

TtyAMA0をマスクし、代わりにttyUSB1を有効にする特定のケースに関しては、ttyUSB1はシリアルポートであるため(少なくとも1つをエミュレートします)、serial-getty @ .serviceを使用する方が適切です。

ただし、getty @または[email protected]を有効にし、@ ttyAMA0をマスクすることはこれを達成するための最良の方法ではありません。

systemdは、カーネルから、通常はカーネルコマンドラインのconsole=引数からコンソール構成を取得します(これは systemd-getty-generator によって実装されるため、詳細についてはドキュメントを参照してください)。したがって、カーネルコマンドラインでコンソールを構成するだけで(console=ttyUSB1などの引数を使用しますが、tty0などのローカルコンソールも含めることができます)、systemdが実行します。正しいこと。

詳細については、 systemdでのシリアルコンソールサポートに関するこのブログ投稿 をご覧ください。

1
filbranden