rpi: the root account is locked
2025/11/02
数日前から Raspberry Pi4 で動かしている環境を復旧させている。
Pi4 に 3つの USBドライブ(HDDx2、SSDx1)を接続しているのだが、HDD の1台が I/O error をしばしば起こすようになった。
fsck しても状況が変わらないのでデータを移動させていたのだが、ちょっと面倒な運用をしているので失敗してしまった。
Bitcoin Core(以下 bitcoind)を動かしていたのだが、HDD(1TB) だとあまりにも遅いので SSD(240GB) に chainstate と blocks の一部だけ置いていた。
chainstate はディレクトリまるごとだったのでよいのだが、blocks が一部のファイルだけにしていたのでシンボリックリンクだった。
そして移動させる際、一部だけ間違えて本体の上にシンボリックリンクの方を mv してしまったのである。
一部だから bitcoind がうまいことやってくれないかと期待したのだが、-reindex しないとダメだった。
それでずっと走らせていたのだが、HDD(1TB) が df で 100% になっていることに気付いた。
数十GB くらいはあったのでまだ止まってはいなかったものの、止まってしまう前になんかしようと I/O error が起きていたディスクをセクタ単位でクリアした後フォーマットし直してつないだ。
そのディスクは /etc/fstab に書いて接続していたのをコメントアウトしていただけだったので、その行を戻して reboot した。
そうすると立ち上がらなくなった、というわけである。
Pi4 は幸い HDMI でモニタが接続できるので確認したところ、原因は分からないけどダメっぽい。
それよりも、Emergency mode になろうとして失敗している方が問題だった。
画面には “the root account is locked” と出力されている。
さて、どうしたものか。
Emergency mode になることができず
おそらく、I/O error のドライブをフォーマットし直したことで UUID が変わり、以前の UUID で書いていた /etc/fstab を元に戻したのがダメだったのだろう。
ログインできれば編集しておしまい、ではある。
あまり記憶にないが、こういうときは root でのログインになって Emergency mode になり、そこで vi などでファイル編集していたように思う。
Ubuntu はデフォルトで root が未設定だったような気がする。
まあ、どうしようもなければ microSDカードを抜いて直接扱えば良いのだろうが、対処できるならやってしまいたい。
Enter キーを押すと続けるそうなので、何度かやったらあきらめて別アカウントでログインできたりしないかと思ったが、そうはならなかった。
なんとなく Alt + F2 などしてみたが、特に何もなかった。
ダメだなー。
ThinkPad T460s
この復旧のため、使っていなかった ThinkPad T460s に Ubuntu 24.04 をインストールしていた。
WSL2 よりもディスクアクセスが速いのでね。
Pi4 の microSD をこれで読み込ませようとしたが、インストールしただけでは SDドライブを認識しないようだ。
USB 経由でやれば良いだけなのだが、せっかくあるのだし、ね。
$ sudo apt instlal pcscd pcsc-tools
$ pcsc_scan
とやったのだが。。。”Wainitng for the first reader…” のままグルグル回って進まない。
sudo がいるわけでもなさそう。
一旦止めて microSD カードを挿すと認識した。
うーん、pcsc_scan が必要だったのかどうか分からない。。。
ともかく認識したので /etc/fstab で該当行をコメントアウトする。
そうすると Pi4 は起動した。
原因は私だった・・・
blkid で I/O error を起こしていたディスクの UUID を取得しようとしたが出力されない。
よくよく確認すると・・・セクタ単位でクリアした後、そのままフォーマットどころかパーティションすら作っていなかったことが判明。
そうよね、捨てようかどうかと考えていたくらいだったしね。。。
原因は私だった。
nofail
/etc/fstab で defaults,nofail などとしておくとマウントに失敗しても継続してくれるようだ。
本当かな?
root アカウント無しで Emergency mode
Raspberry Pi の再起動時に Shift キーを押したままだとブートメニューが表示されるらしい。
そちらで Emergency mode にすることができるそうだ。