ウチのキッズのPCが、以下のエラーで起動しなくなりました。
error: invalid environment block.
Press any key to continue...
ユーザ(息子)に原因をヒアリングすると、「何もしていないのに壊れました」とのことです。
環境
- Ubuntu 20.04 LTS
- SSD にインストール
症状
この状態で、なにかキーを押しても・・・
起動しませんでした。
exit などとすると進んだ例もあるようですが、ここでは埒が明きません。
USB起動して状況確認
Ubuntu 20.04 LTS のCDイメージを USBのメモリに入れて、それで起動して状況を確認してみます。
ファイルマネージャから「Other Locations」を開きます。
/dev/sda5 を開くと以下のように表示されました。こちらが本体ということらしいです。
grubenv を削除してみる
ubuntu@ubuntu:/media/ubuntu/6ed896d2-3ef9-4777-b361-ea207aa336e6/boot/grub$ cat grubenv
]0!P��V�c��P(
� �
f
��
a
v � [�
!0=�� �
grubenv が壊れている場合、今回のような症状が起こるらしいです。その場合は grubenv を削除するだけで復旧するらしいです。 grubenv の中身を見てみましたが、バイナリですね。試しに他のマシンを見てみると、
# cat grubenv
# GRUB Environment Block
#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
となっていたので、壊れているのでしょうか。削除してみました。
$ sudo rm grubenv
それで起動してみましたが、問題は改善しませんでした。
fsck
先に、Ubuntuが入っているパーティションは /dev/sda5 でした。起動状況にもよりますが、恐らく SSD は /dev/sda でしょう。
なので、
initfamfs の状態で fsckをかけてみました。
(initramfs) fsck /dev/sda5
やたらめったらエラーが修復されています。
終わりました。最後にコマンドが出ているのは履歴を呼び出したものです。
復旧
このあと、電源OFF/ONで起動しました。
ファイルが多数が壊れているみたいでしたが、ユーザ(息子)の動作確認では特に変なところは見当たらないとのこと。これで使ってもらうことにしました。