type t (* void *)

無な日常の記録

Debian:buster のAPTレポジトリから降ってくるgrubの問題を引いてしまった

この問題のはなし

bugs.debian.org

Ubuntuで問題あるっぽいよ

bugs.launchpad.net

これは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が再びインストールされてしまって今回の問題の解決にはなりません。

wiki.ubuntulinux.jp

ともかく、これで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 でも再現したという報告があったためです。

bugs.launchpad.net

わからないのは、同じ問題にあたっても良さそうなUbuntu 18.04のマシンに対しては問題なかったっぽいんですよね。
共用マシンを雑に apt upgrade してからこの問題に気付いたので結構冷や汗ものだったのですが問題なかったっぽいです。