この問題のはなし
Ubuntuで問題あるっぽいよ
これはGRUBからLinuxを起こすときに、 symbol grub_calloc not found
と表示されてOSが立ち上がらないという問題。
再現性はわからないのだけど、わたしは 2.02+dfsg1-20+deb10u2
で問題にあってしまいました。
これsecurity fixなので何も考えずに適用したんですよね。。。。
grub rescue modeではいかんともし難いので、USBメモリから起動するLive Discから復旧するしかないっぽいです。
grub-installをやり直してこのパッチのものではないgrubを入れ直してあげます。
色々やったのですが、結論はシンプルに以下のコマンドでよかったぽいです。
私の環境はMBRブート、 sda1
に/bootの環境があるという想定です。
$ sudo mount /dev/sda1 /mnt $ sudo grub-install --boot-directory=/mnt/boot /dev/sda
--boot-directory
を指定しないとエラーになると思います。これはUbuntuの記事ですが私の場合も再現しました。
この記事では chroot
してから grub-install
しろと書いてありますが、これでは問題のあるgrubが再びインストールされてしまって今回の問題の解決にはなりません。
ともかく、これでlive discのgrub環境で /mnt/boot/grub
配下が上書きされると思います。
パッケージのバージョンとインストールした実体が食い違うようになるので、これでDebianが立ち上がったあとでgrub関連のパッケージをダウングレードしたほうがいいと思います。
$ sudo apt install grub-pc=2.02+dfsg1-20 grub-common=2.02+dfsg1-20 grub2-common=2.02+dfsg1-20 grub-pc-bin=2.02+dfsg1-20
これは2つ前のバージョンに戻してます。 2.02+dfsg1-20+deb10u1
でも再現したという報告があったためです。
わからないのは、同じ問題にあたっても良さそうなUbuntu 18.04のマシンに対しては問題なかったっぽいんですよね。
共用マシンを雑に apt upgrade
してからこの問題に気付いたので結構冷や汗ものだったのですが問題なかったっぽいです。
会社でgrubの問題引いて苦しんでいるという話をしていたら社のオタクにノマドさんはよく問題を”引いて”来ますね〜〜〜普段の行いか〜〜〜??って煽られたので許さんからな!!!!!!
— 精神のお墓 (@no_maddo) August 1, 2020