0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お名前.com VPSで、OSバージョンアップ後にシリアルコンソールが使えなくなった時の調査と復旧手順

0
Posted at

はじめに

お名前.comでsshに関する作業があったので、通信が途切れないようにシリアルコンソールを使って対応しようと思ったら...シリアルコンソールにログインできない!😱

「終わったわ〜」って思って色々調べたら解決できたので記事にしてみます。

対象読者・前提

  • お名前.com VPS(KVM型)でDebianを利用している
  • sudo apt full-upgrade後、シリアルコンソールでログインプロンプトが表示されなくなった

発生した問題

お名前.comのVPS(KVM型)にてOSを以下のコマンドで更新したところ、シリアルコンソールが使用できなくなりました。

sudo apt full-upgrade

具体的には、お名前.comの管理画面からシリアルコンソールを開いても、ログインプロンプト(hostname login:)が表示されない状態に...SSHでのログインは問題なく可能だったため、サーバー自体は正常に動作しているようです😮‍💨

原因調査

serial-gettyの状態確認

まず以下を実行してserial-gettyの状態を確認しようとしました。

sudo systemctl status serial-getty@ttyS0.service

返ってきたのは以下のエラーでした。

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

そういえば、systemd使ってなかったかも...

PID 1を確認

ps -p 1 -o comm=
init

通常systemdが動いているはずですが、お名前.comのVPSではinitなので、systemctlが使えなかったです。

/etc/inittabを確認

ls -l /etc/inittab

systemd環境であればsystemctl enable serial-getty@ttyS0.serviceでserial-gettyを有効化しますが、SysV init環境ではこの方法は使えません。代わりに/etc/inittabでgettyを管理します。

対応手順

事前確認スクリプトで現状を記録

設定ファイルの編集前に、関連情報を一括で確認・記録するスクリプトを用意しました...Claude Codeが😅

#!/bin/bash
set -uo pipefail

LOGFILE="$HOME/pre_check_$(date +%Y%m%d_%H%M%S).log"

{
echo "=== PID1 / init system ==="
ps -p 1 -o comm=

echo
echo "=== uname -a ==="
uname -a

echo
echo "=== mount (root fs) ==="
mount | grep ' / '

echo
echo "=== /dev/ttyS* ==="
ls -l /dev/ttyS* 2>&1

echo
echo "=== /etc/inittab 現状(serial/getty関連抜粋) ==="
grep -n -i 'ttyS\|getty' /etc/inittab

echo
echo "=== getty プロセス確認 ==="
ps aux | grep -E '[g]etty'

} | tee "$LOGFILE"

この時点で/etc/inittabを確認すると、serial-getty用の設定例がコメントアウトされた状態で残っていました。

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

バックアップを取得

sudo cp /etc/inittab /etc/inittab.bak

可能であればVPSのスナップショットも取得しておくと安心です。

/etc/inittabを編集

T0の行を有効化し、通信速度を115200に変更します。

T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

編集後、設定を再読み込みします。

sudo init q

init qは再起動不要でinittabの変更を反映できます。

反映を確認

ps aux | grep '[g]etty'
root  2076  0.0  0.1  2524  1024 ttyS0  Ss+  05:54  0:00 /sbin/getty -L ttyS0 115200 vt100

ttyS0用のgettyが起動していることを確認できました。

シリアルコンソールを確認

お名前.comのシリアルコンソール画面を開き、ログインプロンプトが表示され、実際にログインできることを確認しました。

再起動後の動作を確認

最後に、reboot後も同様に使えることを確認するため再起動します。

sudo reboot

再起動後、再度シリアルコンソールからログインできることを確認できました。

...良かった!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?