getty

提供: ArchWiki
2024年8月28日 (水) 20:00時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎仮想コンソール: update.)
ナビゲーションに移動 検索に移動

関連記事

getty はターミナルのラインと接続されたターミナルを管理するプログラムの総称です。getty の目的は権限のないアクセスからシステムを保護することにあります。通常、getty のプロセスは systemd によって起動され、ターミナルのラインを管理します。

インストール

Arch Linux におけるデフォルトの getty プログラムは agetty であり、util-linux パッケージの一部です。

代替手段は次の通りです。

  • mingetty — 自動ログインができる最小主義の getty。
https://aur.archlinux.org/packages/mingetty/ || mingettyAUR
  • mgetty — Unix でモデムを使うのに適した汎用プログラム。
http://mgetty.greenie.net/ || mgettyAUR

ヒントとテクニック

階段効果

agetty はログインを待っている間、TTY の設定を変更し、改行が CR-LF に変換されないようにします。このため、コンソールに出力されるメッセージに「階段効果」が発生する傾向があります。

これは全く無害ですが、一度ログに記録されると持続する場合、この動作を修正することができます。

$ stty onlcr

この件に関しては、こちらの forums discussion を参照してください。

仮想コンソールの追加

Agetty は仮想コンソールを管理し、Arch Linux ではデフォルトで 6 つの仮想コンソールが提供されています。通常、Ctrl+Alt+F1 から Ctrl+Alt+F6 までのキーでアクセスできます。

/etc/systemd/logind.conf ファイルを開き、オプション NAutoVTs=6 をブート時に必要な仮想端末の数に設定します。

必要に応じて、getty@ttyN.service サービスを直接一時的に開始することもできます。

仮想コンソールに自動ログイン

agetty に渡されるデフォルトパラメータを上書きする systemd のドロップインファイルを使って設定を行います。

設定は仮想コンソールとシリアルコンソールで異なります。ほとんどの場合、設定するのは仮想コンソールの自動ログインでしょう。デバイス名は ttyN で、N が数字です。シリアルコンソールのデバイス名は ttySN のようになり、N は同じく数字になります。

ヒント: greetd の自動ログイン機能を使うことを検討してください。最初のセッションが終了しても 2 回目の自動ログインは行わず、代わりにログイン画面を表示します。

仮想コンソール

getty@tty1.service のために次の内容でドロップインファイルを作成します:

/etc/systemd/system/getty@tty1.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin username %I $TERM
ヒント:
  • デフォルトの getty@.service にあるオプション Type=idle は、すべてのジョブ(ユニットへの状態変更リクエスト)が完了するまでサービスの起動を遅らせ、ログインプロンプトがブートメッセージで汚染されないようにします。X を自動的に開始する場合、ドロップインファイルに Type=simple を追加して getty@tty1.service を直ちに開始することが有用です。初期化システムと startx の両方をサイレントモードにして、ブート中のメッセージが混在しないようにすることができます。
  • ログインプロンプトを完全に非表示にする仮想コンソール drop-in ファイルの例については、サイレントブート#agetty を参照してください。
  • 上記のスニペットは、loginctl のセッションタイプを tty に設定します。必要であれば(例えばX を自動的に開始する場合など)、このファイルに Environment=XDG_SESSION_TYPE=x11 または Environment=XDG_SESSION_TYPE=wayland を追加して、セッションタイプを手動で wayland または x11 に設定することが可能です。

完全な自動ログインを望まないが、ユーザー名を入力したくない場合は、仮想コンソールログイン時にデフォルトユーザーのパスワードのみを要求するを参照してください。

tty1 以外の tty を使用したい場合は、デフォルトの getty 数を変更する方法を参照してください。

シリアルコンソール

以下のファイル (とディレクトリ) を作成してください:

/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username -s %I 115200,38400,9600 vt102

Nspawn コンソール

systemd-nspawn コンテナに自動ログインするには、console-getty サービスを上書きしてください:

/etc/systemd/system/console-getty.service.d/override.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noclear --autologin username --keep-baud console 115200,38400,9600 $TERM

仮想コンソールのデフォルトユーザーのログイン時に、パスワード入力のみ表示する

Getty はデフォルトユーザーで仮想コンソールからログインする際に、パスワードを入力しますが、ユーザー名を入力する必要はありません。例えば、tty1 上で username のパスワードを要求する場合です。

/etc/systemd/system/getty@tty1.service.d/skip-username.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- username' --noclear --skip-login - $TERM

そして、getty@tty1有効化します。

tty1 にブートメッセージを残す

デフォルトで、Arch では getty@tty1 サービスが有効になっています。サービスファイルは既に --noclear を使うようになっているので、agetty が画面をクリアすることはありません。しかし、systemd は起動する前に画面をクリアします。この動作を無効にするには、ドロップインファイルを作成します。

/etc/systemd/system/getty@tty1.service.d/noclear.conf
[Service]
TTYVTDisallocate=no
ノート:

参照