「Getty」の版間の差分
同期 |
→インストール: 同期 |
||
| (5人の利用者による、間の22版が非表示) | |||
| 1行目: | 1行目: | ||
{{Lowercase title}} |
{{Lowercase title}} |
||
[[Category:ブートプロセス]] |
[[Category:ブートプロセス]] |
||
[[Category:Linux コンソール]] |
|||
[[en:Getty]] |
[[en:Getty]] |
||
[[zh- |
[[zh-hans:Getty]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ディスプレイマネージャ}} |
{{Related|ディスプレイマネージャ}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
'''getty''' はターミナルのラインと接続されたターミナルを管理するプログラムの総称です。getty の目的は権限のないアクセスからシステムを保護することにあります。通常、getty のプロセスは [[ |
'''getty''' はターミナルのラインと接続されたターミナルを管理するプログラムの総称です。getty の目的は権限のないアクセスからシステムを保護することにあります。通常、getty のプロセスは [[systemd]] によって起動され、ターミナルのラインを管理します。 |
||
== インストール == |
== インストール == |
||
Arch Linux におけるデフォルトの getty プログラムは {{ic|agetty}} であり、{{Pkg|util-linux}} パッケージの一部です。 |
|||
Arch Linux におけるデフォルトの getty プログラムは {{ic|agetty}} であり、Arch Linux のベース環境に含まれている {{Pkg|util-linux}} パッケージに入っています。ログインを待機している間は改行コード (LF) が CR–LF に変換されないように TTY の設定を変更します。この設定によってコンソールに出力されたメッセージに"階段効果"が発生することがあります (例えば [[Init]] によって起動されたプログラムの出力)。Arch Linux の標準的な環境では、getty プロセスによって管理されるターミナルは仮想端末として実装されています。デフォルトで6つの仮想端末が用意され、普通は {{ic|Ctrl+Alt+F1}} から {{ic|Ctrl+Alt+F6}} を押すことでアクセスすることができます。 |
|||
代替手段は次の通りです。 |
|||
他にも以下のような getty が存在します: |
|||
* {{App|mingetty|自動ログインができる最小主義の getty |
* {{App|mingetty|自動ログインができる最小主義の getty|https://aur.archlinux.org/packages/mingetty/|{{AUR|mingetty}}}} |
||
* {{App|fbgetty|フレームバッファをサポートしている mingetty のような getty コンソール。|http://projects.meuh.org/fbgetty/|{{Pkg|fbgetty}}}} |
|||
* {{App|mgetty|Unix でモデムを使うのに適した汎用プログラム。|http://mgetty.greenie.net/|{{AUR|mgetty}}}} |
|||
== ヒントとテクニック == |
|||
| ⚫ | |||
=== 階段効果 === |
|||
| ⚫ | |||
''agetty'' はログインを待っている間、TTY の設定を変更し、改行が CR-LF に変換されないようにします。このため、コンソールに出力されるメッセージに「階段効果」が発生する傾向があります。 |
|||
一時的に起動したい場合、以下を入力することで適当な TTY で getty サービスが起動します: |
|||
これは全く無害ですが、一度ログに記録されると持続する場合、この動作を修正することができます。 |
|||
$ systemctl start getty@ttyN.service |
|||
$ stty onlcr |
|||
| ⚫ | |||
この件に関しては、こちらの [https://bbs.archlinux.org/viewtopic.php?id=264094 forums discussion] を参照してください。 |
|||
| ⚫ | |||
Agetty は仮想コンソールを管理し、Arch Linux ではデフォルトで 6 つの仮想コンソールが提供されています。通常、{{ic|Ctrl+Alt+F1}} から {{ic|Ctrl+Alt+F6}} までのキーでアクセスできます。 |
|||
| ⚫ | |||
必要に応じて、{{ic|getty@tty''N''.service}} サービスを直接一時的に[[開始]]することもできます。 |
|||
| ⚫ | |||
''agetty'' に渡されるデフォルトパラメータを上書きする systemd の[[Systemd#ユニットファイルの編集|ドロップインファイル]]を使って設定を行います。 |
''agetty'' に渡されるデフォルトパラメータを上書きする systemd の[[Systemd#ユニットファイルの編集|ドロップインファイル]]を使って設定を行います。 |
||
| 32行目: | 43行目: | ||
設定は仮想コンソールとシリアルコンソールで異なります。ほとんどの場合、設定するのは仮想コンソールの自動ログインでしょう。デバイス名は {{ic|tty''N''}} で、{{ic|''N''}} が数字です。シリアルコンソールのデバイス名は {{ic|ttyS''N''}} のようになり、{{ic|''N''}} は同じく数字になります。 |
設定は仮想コンソールとシリアルコンソールで異なります。ほとんどの場合、設定するのは仮想コンソールの自動ログインでしょう。デバイス名は {{ic|tty''N''}} で、{{ic|''N''}} が数字です。シリアルコンソールのデバイス名は {{ic|ttyS''N''}} のようになり、{{ic|''N''}} は同じく数字になります。 |
||
{{Tip|[[greetd]] の自動ログイン機能を使うことを検討してください。最初のセッションが終了しても 2 回目の自動ログインは行わず、代わりにログイン画面を表示します。}} |
|||
| ⚫ | |||
| ⚫ | |||
手動で以下のドロップインスニペットを作成して[[systemd#ユニットファイルの編集|ユニットファイルを編集]]するか、{{ic|systemctl edit getty@tty1}} を実行して以下の内容を記述してください: |
|||
{{ic|getty@tty1.service}} のために次の内容で[[ドロップインファイル]]を作成します: |
|||
| ⚫ | |||
| ⚫ | |||
[Service] |
[Service] |
||
ExecStart= |
ExecStart= |
||
ExecStart=-/ |
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin ''username'' %I $TERM |
||
}} |
}} |
||
{{Tip| |
|||
{{ |
* デフォルトの {{ic|getty@.service}} にあるオプション {{ic|1=Type=idle}} は、すべてのジョブ(ユニットへの状態変更リクエスト)が完了するまでサービスの起動を遅らせ、ログインプロンプトがブートメッセージで汚染されないようにします。[[xinit#ログイン時に X を自動起動|X を自動的に開始する]]場合、ドロップインファイルに {{ic|1=Type=simple}} を追加して {{ic|getty@tty1.service}} を直ちに開始することが有用です。初期化システムと ''startx'' の両方を[[サイレントブート|サイレントモード]]にして、ブート中のメッセージが混在しないようにすることができます。 |
||
* ログインプロンプトを完全に非表示にする仮想コンソール drop-in ファイルの例については、[[サイレントブート#agetty]] を参照してください。 |
|||
* 上記のスニペットは、loginctl のセッションタイプを {{ic|tty}} に設定します。必要であれば(例えば[[xinit#ログイン時に X を自動起動|X を自動的に開始する]]場合など)、このファイルに {{ic|1=Environment=XDG_SESSION_TYPE=x11}} または {{ic|1=Environment=XDG_SESSION_TYPE=wayland}} を追加して、セッションタイプを手動で {{ic|wayland}} または {{ic|x11}} に設定することが可能です。 |
|||
}} |
|||
完全な自動ログインを望まないが、ユーザー名を入力したくない場合は、[[#Prompt only the password for a default user in virtual console login|仮想コンソールログイン時にデフォルトユーザーのパスワードのみを要求する]]を参照してください。 |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
以下のファイル (とディレクトリ) を作成してください: |
|||
[[ドロップインファイル]]を作成します: |
|||
{{hc|/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf|2= |
{{hc|/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf|2= |
||
| 56行目: | 75行目: | ||
}} |
}} |
||
=== Nspawn コンソール === |
==== Nspawn コンソール ==== |
||
[[systemd-nspawn]] コンテナに自動ログインするには、 |
[[systemd-nspawn]] コンテナに自動ログインするには、{{ic|console-getty.service}} を上書きするために[[ドロップインファイル]]を作成します: |
||
{{hc|/etc/systemd/system/console-getty.service.d/ |
{{hc|/etc/systemd/system/console-getty.service.d/autologin.conf|2= |
||
[Service] |
[Service] |
||
ExecStart= |
ExecStart= |
||
ExecStart=-/sbin/agetty --noclear --autologin ''username'' - |
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --keep-baud --autologin ''username'' - 115200,38400,9600 $TERM |
||
}} |
}} |
||
{{ic|machinectl login ''my-container''}} メソッドを使用してコンテナにアクセスする場合は、{{ic|pts/[0-9]}} 仮想 tty を管理する {{ic|container-getty@.service}} テンプレートも調整してください: |
|||
== tty1 にブートメッセージを残す == |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
[Service] |
[Service] |
||
ExecStart= |
|||
| ⚫ | |||
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --keep-baud --autologin ''username'' - 115200,38400,9600 $TERM |
|||
}} |
}} |
||
=== 仮想コンソールのデフォルトユーザーのログイン時に、パスワード入力のみ表示する === |
|||
上記の設定で TTY1 の agetty の {{ic|TTYVTDisallocate}} だけが上書きされます。グローバルなサービスファイル {{ic|/usr/lib/systemd/system/getty@.service}} に手は加えられません。これは [[Systemd#ユニットファイルの編集|systemd のユニットファイル]]を編集するときに推奨される方法です。 |
|||
Getty はデフォルトユーザーで仮想コンソールからログインする際に、パスワードを入力しますが、ユーザー名を入力する必要はありません。例えば、{{ic|tty1}} 上で {{ic|''username''}} のパスワードを要求する場合です: |
|||
KMS が後から起動すると最初のブートメッセージがクリアされてしまうことがあります。このような場合は、[[KMS#Early KMS start|KMS を先に起動]]するようにしてください。 |
|||
{{hc|/etc/systemd/system/getty@tty1.service.d/skip-username.conf|2= |
|||
おそらく、画面にブートメッセージが溢れてしまうほど表示されますが、Shift+PgUp/PgDow でスクロールできます。スクロールしても表示されないほど多くのブートメッセージが出力される場合、[[スクロールバックバッファ]]のサイズを増やしてみて下さい。 |
|||
[Service] |
|||
ExecStart= |
|||
ExecStart=-/sbin/agetty -o '-p -- ''username''<nowiki/>' --noclear --skip-login - $TERM |
|||
}} |
|||
=== |
=== tty1 にブートメッセージを残す === |
||
| ⚫ | |||
{{ic|/etc/issue}} に "clear TTY" エスケープシーケンスがある場合、削除してください。 |
|||
{{hc|1=/etc/systemd/system/getty@tty1.service.d/noclear.conf|2= |
|||
# sed -i $'s/\e\[H//; s/\e\[2J//' /etc/issue |
|||
[Service] |
|||
| ⚫ | |||
}} |
|||
{{Note| |
|||
* [[カーネルパラメータ]]から {{ic|quiet}} を必ず削除してください。 |
|||
* KMS の起動が遅いと、最初の数回のブートメッセージがクリアされないかもしれません。[[カーネルモード設定#KMS の早期開始]] か [[カーネルモード設定#モード設定を無効にする]] を参照してください。 |
|||
}} |
|||
=== タイムアウト後にディスプレイをオフにする === |
|||
システムをサーバーとして使用していてもディスプレイが接続されている場合、ディスプレイは常にオンのままになります。 |
|||
ディスプレイを5分後にオフにするには、[[ドロップインファイル]] を作成してください。 |
|||
キーを押すとディスプレイが再びオンになります。 |
|||
{{hc|1=/etc/systemd/system/getty@tty1.service.d/blankscreen.conf|2= |
|||
[Service] |
|||
ExecStartPost=-/usr/bin/setterm --blank 5 |
|||
}} |
|||
==参照== |
==参照== |
||
* [[Systemd#起動時のデフォルトターゲットを変更する]] |
* [[Systemd#起動時のデフォルトターゲットを変更する]] |
||
* [https://www.linusakesson.net/programming/tty/ The TTY demystified] |
|||
* [[Wikipedia:tty (unix)]] |
|||
{{TranslationStatus|Getty|2024-08-28|806992}} |
|||
2025年2月25日 (火) 18:47時点における最新版
関連記事
getty はターミナルのラインと接続されたターミナルを管理するプログラムの総称です。getty の目的は権限のないアクセスからシステムを保護することにあります。通常、getty のプロセスは systemd によって起動され、ターミナルのラインを管理します。
インストール
Arch Linux におけるデフォルトの getty プログラムは agetty であり、util-linux パッケージの一部です。
代替手段は次の通りです。
- mingetty — 自動ログインができる最小主義の getty
ヒントとテクニック
階段効果
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 は同じく数字になります。
仮想コンソール
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.service を上書きするためにドロップインファイルを作成します:
/etc/systemd/system/console-getty.service.d/autologin.conf
[Service] ExecStart= ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --keep-baud --autologin username - 115200,38400,9600 $TERM
machinectl login my-container メソッドを使用してコンテナにアクセスする場合は、pts/[0-9] 仮想 tty を管理する container-getty@.service テンプレートも調整してください:
/etc/systemd/system/container-getty@.service.d/autologin.conf
[Service] ExecStart= ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --keep-baud --autologin username - 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
tty1 にブートメッセージを残す
デフォルトで、Arch では getty@tty1 サービスが有効になっています。サービスファイルは既に --noclear を使うようになっているので、agetty が画面をクリアすることはありません。しかし、systemd は起動する前に画面をクリアします。この動作を無効にするには、ドロップインファイルを作成します。
/etc/systemd/system/getty@tty1.service.d/noclear.conf
[Service] TTYVTDisallocate=no
- カーネルパラメータから
quietを必ず削除してください。 - KMS の起動が遅いと、最初の数回のブートメッセージがクリアされないかもしれません。カーネルモード設定#KMS の早期開始 か カーネルモード設定#モード設定を無効にする を参照してください。
タイムアウト後にディスプレイをオフにする
システムをサーバーとして使用していてもディスプレイが接続されている場合、ディスプレイは常にオンのままになります。 ディスプレイを5分後にオフにするには、ドロップインファイル を作成してください。 キーを押すとディスプレイが再びオンになります。
/etc/systemd/system/getty@tty1.service.d/blankscreen.conf
[Service] ExecStartPost=-/usr/bin/setterm --blank 5