「Getty」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(リンクを修正)
(3人の利用者による、間の14版が非表示)
1行目: 1行目:
 
{{Lowercase title}}
 
{{Lowercase title}}
 
[[Category:ブートプロセス]]
 
[[Category:ブートプロセス]]
  +
[[Category:Linux コンソール]]
 
[[en:Getty]]
 
[[en:Getty]]
[[zh-CN:Getty]]
+
[[zh-hans:Getty]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|ディスプレイマネージャ}}
 
{{Related|ディスプレイマネージャ}}
 
{{Related articles end}}
 
{{Related articles end}}
'''getty''' はターミナルのラインと接続されたターミナルを管理するプログラムの総称です。getty の目的は権限のないアクセスからシステムを保護することにあります。通常、getty のプロセスは [[init]] によって起動され、ターミナルのラインを管理します。
+
'''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。|https://aur.archlinux.org/packages/mingetty/|{{AUR|mingetty}}}}
 
* {{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}}}}
 
* {{App|mgetty|Unix でモデムを使うのに適した汎用プログラム。|http://mgetty.greenie.net/|{{AUR|mgetty}}}}
   
  +
== ヒントとテクニック ==
== 仮想端末の追加 ==
 
   
  +
=== 階段効果 ===
{{ic|/etc/systemd/logind.conf}} ファイルを開いて {{ic|1=NAutoVTs=6}} オプションを使って好きな数の仮想端末を起動できます。
 
  +
  +
''agetty'' はログインを待っている間、TTY の設定を変更し、改行が CR-LF に変換されないようにします。このため、コンソールに出力されるメッセージに「階段効果」が発生する傾向があります。
  +
  +
これは全く無害ですが、一度ログに記録されると持続する場合、この動作を修正することができます。
  +
  +
$ stty onlcr
  +
  +
この件に関しては、こちらの [https://bbs.archlinux.org/viewtopic.php?id=264094 forums discussion] を参照してください。
  +
  +
=== 仮想コンソールの追加 ===
  +
  +
{{ic|/etc/systemd/logind.conf}} ファイルを開いて {{ic|1=NAutoVTs=6}} オプションを使って好きな数の仮想コンソールを起動できます。
   
 
一時的に起動したい場合、以下を入力することで適当な TTY で getty サービスが起動します:
 
一時的に起動したい場合、以下を入力することで適当な TTY で getty サービスが起動します:
26行目: 38行目:
 
$ systemctl start getty@ttyN.service
 
$ systemctl start getty@ttyN.service
   
== 仮想端末に自動ログイン ==
+
=== 仮想コンソールに自動ログイン ===
   
 
''agetty'' に渡されるデフォルトパラメータを上書きする systemd の[[Systemd#ユニットファイルの編集|ドロップインファイル]]を使って設定を行います。
 
''agetty'' に渡されるデフォルトパラメータを上書きする systemd の[[Systemd#ユニットファイルの編集|ドロップインファイル]]を使って設定を行います。
32行目: 44行目:
 
設定は仮想コンソールとシリアルコンソールで異なります。ほとんどの場合、設定するのは仮想コンソールの自動ログインでしょう。デバイス名は {{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}} を実行して以下の内容を記述してください:
 
  +
  +
手動で以下のドロップインファイルを作成して[[systemd#ユニットファイルの編集|ユニットファイルを編集]]するか、{{ic|systemctl edit getty@tty1}} を実行して以下の内容を記述してください:
   
 
{{hc|/etc/systemd/system/getty@tty1.service.d/override.conf|2=
 
{{hc|/etc/systemd/system/getty@tty1.service.d/override.conf|2=
42行目: 56行目:
 
}}
 
}}
   
{{Tip|オプション {{ic|1=Type=idle}} は全てのジョブ (ユニットの状態変更リクエスト) が完了するまでサービスの起動を遅らせます。{{ic|1=Type=simple}} を使うと、サービスはすぐに実行されますが、ブートアップメッセージがログインプロンプトに残るかもしれません。このオプションは [[ログイン時に X を起動|X を自動的に起動する]]場合に特に有用です。このオプションを使うには、{{ic|1=Type=simple}} をドロップインスニペットに追加してください。init システムと ''startx'' のメッセージはどちらも[[サイレントブート|表示しない]]ようにすることができます。}}
+
{{Tip|オプション {{ic|1=Type=idle}} は全てのジョブ (ユニットの状態変更リクエスト) が完了するまでサービスの起動を遅らせます。{{ic|1=Type=simple}} を使うと、サービスはすぐに実行されますが、ブートアップメッセージがログインプロンプトに残るかもしれません。このオプションは [[ログイン時に X を起動|X を自動的に起動する]]場合に特に有用です。このオプションを使うには、{{ic|1=Type=simple}} をドロップインファイルに追加してください。init システムと ''startx'' のメッセージはどちらも[[サイレントブート|表示しない]]ようにすることができます。}}
   
 
''tty1'' 以外の ''tty'' を使いたい時は [[Systemd FAQ#デフォルトで動作する getty の数を修正するにはどうすればいいですか?|Systemd FAQ]] を見て下さい。
 
''tty1'' 以外の ''tty'' を使いたい時は [[Systemd FAQ#デフォルトで動作する getty の数を修正するにはどうすればいいですか?|Systemd FAQ]] を見て下さい。
   
=== シリアルコンソール ===
+
==== シリアルコンソール ====
   
 
以下のファイル (とディレクトリ) を作成してください:
 
以下のファイル (とディレクトリ) を作成してください:
56行目: 70行目:
 
}}
 
}}
   
=== Nspawn コンソール ===
+
==== Nspawn コンソール ====
   
 
[[systemd-nspawn]] コンテナに自動ログインするには、''console-getty'' サービスを上書きしてください:
 
[[systemd-nspawn]] コンテナに自動ログインするには、''console-getty'' サービスを上書きしてください:
66行目: 80行目:
 
}}
 
}}
   
  +
=== 仮想コンソールのデフォルトユーザーのログイン時に、パスワード入力のみ表示する ===
== tty1 にブートメッセージを残す ==
 
   
  +
Getty はデフォルトユーザーで仮想コンソールからログインする際に、パスワードを入力しますが、ユーザー名を入力する必要はありません。例えば、{{ic|tty1}} 上で {{ic|''username''}} のパスワードを要求する場合です。
デフォルトで、Arch では {{ic|getty@tty1}} サービスが有効になっています。サービスファイルは既に {{ic|--noclear}} を使うようになっているので、agetty が画面をクリアすることはありません。しかしながら [[systemd]] が起動する前に画面をクリアしてしまいます。この挙動を無効にするには、ドロップインディレクトリ {{ic|/etc/systemd/system/getty@tty1.service.d/}} を作成して、その中に {{ic|noclear.conf}} ファイルを作ってください:
 
  +
{{hc|1=/etc/systemd/system/getty@tty1.service.d/noclear.conf|2=
 
  +
{{hc|/etc/systemd/system/getty@tty1.service.d/skip-username.conf|2=
 
[Service]
 
[Service]
  +
ExecStart=
TTYVTDisallocate=no
 
  +
ExecStart=-/sbin/agetty -o '-p -- ''username''<nowiki/>' --noclear --skip-login - $TERM
 
}}
 
}}
   
  +
そして、{{ic|getty@tty1}} を[[有効化]]します。
上記の設定で TTY1 の agetty の {{ic|TTYVTDisallocate}} だけが上書きされます。グローバルなサービスファイル {{ic|/usr/lib/systemd/system/getty@.service}} に手は加えられません。これは [[Systemd#ユニットファイルの編集|systemd のユニットファイル]]を編集するときに推奨される方法です。
 
   
  +
=== tty1 にブートメッセージを残す ===
KMS が後から起動すると最初のブートメッセージがクリアされてしまうことがあります。このような場合は、[[KMS#Early KMS start|KMS を先に起動]]するようにしてください。
 
   
  +
デフォルトで、Arch では {{ic|getty@tty1}} サービスが有効になっています。サービスファイルは既に {{ic|--noclear}} を使うようになっているので、agetty が画面をクリアすることはありません。しかし、[[systemd]] は起動する前に画面をクリアします。この動作を無効にするには、[[ドロップインファイル]]を作成します。
おそらく、画面にブートメッセージが溢れてしまうほど表示されますが、Shift+PgUp/PgDow でスクロールできます。スクロールしても表示されないほど多くのブートメッセージが出力される場合、[[スクロールバックバッファ]]のサイズを増やしてみて下さい。
 
   
  +
{{hc|1=/etc/systemd/system/getty@tty1.service.d/noclear.conf|2=
=== /etc/issue のクリアを無効化 ===
 
  +
[Service]
  +
TTYVTDisallocate=no
  +
}}
   
  +
{{Note|
{{ic|/etc/issue}} に "clear TTY" エスケープシーケンスがある場合、削除してください。
 
  +
* [[カーネルパラメータ]]から {{ic|quiet}} を必ず削除してください。
 
  +
* KMS の起動が遅いと、最初の数回のブートメッセージがクリアされないかもしれません。[[カーネルモード設定#KMS の早期開始]] か [[カーネルモード設定#モード設定を無効にする]] を参照してください。
# sed -i $'s/\e\[H//; s/\e\[2J//' /etc/issue
 
  +
}}
   
 
==参照==
 
==参照==
   
 
* [[Systemd#起動時のデフォルトターゲットを変更する]]
 
* [[Systemd#起動時のデフォルトターゲットを変更する]]
  +
* [https://www.linusakesson.net/programming/tty/ The TTY demystified]
  +
* [[Wikipedia:tty (unix)]]

2023年9月2日 (土) 22:07時点における版

関連記事

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 を参照してください。

仮想コンソールの追加

/etc/systemd/logind.conf ファイルを開いて NAutoVTs=6 オプションを使って好きな数の仮想コンソールを起動できます。

一時的に起動したい場合、以下を入力することで適当な TTY で getty サービスが起動します:

$ systemctl start getty@ttyN.service

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

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

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

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

仮想コンソール

手動で以下のドロップインファイルを作成してユニットファイルを編集するか、systemctl edit getty@tty1 を実行して以下の内容を記述してください:

/etc/systemd/system/getty@tty1.service.d/override.conf
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
ヒント: オプション Type=idle は全てのジョブ (ユニットの状態変更リクエスト) が完了するまでサービスの起動を遅らせます。Type=simple を使うと、サービスはすぐに実行されますが、ブートアップメッセージがログインプロンプトに残るかもしれません。このオプションは X を自動的に起動する場合に特に有用です。このオプションを使うには、Type=simple をドロップインファイルに追加してください。init システムと startx のメッセージはどちらも表示しないようにすることができます。

tty1 以外の tty を使いたい時は Systemd FAQ を見て下さい。

シリアルコンソール

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

/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
ノート:

参照