はじめに

こんにちは!今回はagettyコマンドについて解説します。

agettyはシリアルポートやコンソールでログインプロンプトを表示するコマンドです。システム起動時にログインプロンプトを出したり、シリアル接続でのリモートアクセスに使う、システム管理者向けのコマンドですね。

/etc/inittabやsystemdで自動起動されることが多いです。けっこう重要なコマンド。

agettyコマンドとは

agettyは、シリアルポート、コンソール、ネットワークに対してログインプロンプトを表示する外部コマンドです。

システム起動時にinit(またはsystemd)によって自動的に起動され、ユーザーにログインプロンプトを提供します。接続速度の自動検出、文字エンコーディングの指定、カスタムメッセージの表示など、多くの機能を備えています。

基本構文

1
agetty [オプション] port [baud_rate] [terminal_type]
  • port: デバイスポート(例:ttyS0, tty1)
  • baud_rate: ボーレート(9600, 115200など)
  • terminal_type: ターミナルタイプ(vt100, linux など)

主なオプション

オプション 説明
-I initstring 初期化文字列を送信
-8 8ビット文字セットを使用
-L CLOCAL フラグを設定(モデム制御なし)
-m ボーレートを自動検出
-n ログイン名をプリセット
-p パスワード不要
-f issue_file カスタムメッセージファイル
-h ホスト名をプロンプトに表示

使用例

例1: コンソールでのログインプロンプト

1
sudo agetty tty1 linux

実行結果:

1
2
3
4
CentOS Linux 7 (Core)
Kernel 3.10.0-1062.el7.x86_64 on an x86_64

localhost login:

tty1にログインプロンプトを表示します。

例2: シリアルポートの設定

1
sudo agetty -L ttyS0 115200 vt100

実行結果:

1
(シリアル接続でのログインプロンプト表示)

シリアルポートttyS0を115200ボーレートで開きます。

例3: ボーレート自動検出

1
sudo agetty -m ttyS0

実行結果:

1
(ボーレートを自動判定してプロンプト表示)

接続速度を自動的に検出します。

例4: カスタムメッセージの表示

1
sudo agetty -f /etc/custom_issue tty1 linux

実行結果:

1
2
3
4
Welcome to My Server!
Please log in.

localhost login:

カスタムメッセージファイルの内容を表示してからログインプロンプトを出します。

例5: ホスト名を表示

1
sudo agetty -h tty1 linux

実行結果:

1
myserver login:

ホスト名をプロンプトに含めます。

例6: 複数のポートで同時起動

1
2
sudo agetty tty1 linux &
sudo agetty ttyS0 115200 vt100 &

実行結果:

1
(tty1とttyS0の両方でプロンプト表示)

複数のポートで同時にログインを受け付けます。

例7: systemdでの自動起動設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
cat > /etc/systemd/system/getty-custom.service << EOF
[Unit]
Description=Custom Serial Console
After=network.target

[Service]
Type=idle
ExecStart=/sbin/agetty -L -m ttyS0 115200

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable getty-custom
sudo systemctl start getty-custom

実行結果:

1
2
Created symlink /etc/systemd/system/multi-user.target.wants/getty-custom.service
Service started

systemdでの自動起動設定例です。

例8: 初期化文字列を指定

1
sudo agetty -I "\\033c" ttyS0 115200 vt100

実行結果:

1
(ターミナルをリセットしてからプロンプト表示)

初期化シーケンスを送信してからプロンプトを表示します。

Tips・注意点

root権限が必須

agettyを実行するにはroot権限が必要です。

1
sudo agetty tty1 linux

デバイスの確認

利用可能なポートを確認します。

1
2
ls -l /dev/tty*
ls -l /dev/ttyS*

ボーレートの選択

シリアル接続の場合、デバイス側の設定と一致させる必要があります。

1
2
3
4
# 一般的なボーレート
115200  # 高速
57600   # 中速
9600    # 低速

systemdでの設定

最新のシステムではsystemdのunitファイルで管理されます。

1
sudo systemctl list-unit-files | grep getty

実践的な使い方

リモートシリアルコンソールの設定

1
2
3
4
5
6
# /etc/default/grub を編集
GRUB_CMDLINE_LINUX="console=ttyS0,115200n8"

# systemdサービス作成
sudo systemctl enable [email protected]
sudo systemctl start [email protected]

リモートサーバーのシリアルコンソールアクセスを設定します。

仮想マシンのコンソール設定

1
sudo agetty -m -l /usr/bin/login ttyS0 115200

仮想マシンのシリアルコンソールアクセスを有効にします。

トラブルシューティング用コンソール

1
2
# /etc/inittab (古いsysvinit方式)
S0:12345:respawn:/sbin/agetty -L -m ttyS0 115200 vt102

ブート失敗時の緊急アクセスポイントとして設定します。

まとめ

agettyコマンドのポイント:

  • シリアル/コンソールでログインプロンプトを表示
  • -L: モデム制御なし(シリアル接続用)
  • -m: ボーレート自動検出
  • -f: カスタムメッセージファイル
  • -I: 初期化文字列
  • よく使う組み合わせ: agetty -L -m ttyS0 115200

システム管理の現場で活躍する重要なコマンド。シリアルアクセスが必要ならagettyです!