Ubuntu 18.04 desktop & server でカーネルパラメータ変更にはまったときの覚書き

UP Boardという、ちょっとコアなデバイスにUbuntu 18.04 LTS desktopを入れたまでは良かったけれど、カーネルパラメータの変更(具体的にはNICデバイス名をeth0に変えたかった)したときに思いっきりハマって、結局18.04 LTS serverを入れ直す(desktopからserverに変えたのは、desktopからCUI環境を作るよりも、serverを入れた方が楽じゃないかと思ったからで、今回の問題とは無関係) ことになったので 、その原因になったgrub周りのバグと、その対処法の覚書です。
そもそもカーネルパラメータの編集(今回はネットワークデバイス名を昔からのeth0に変えたかった)は、
sudo vi /etc/default/grub
で、
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
のように書き換えた後、
sudo grub-mkconfig -o /boot/grub/grub.cfg
のように、grubに設定を反映させる。これが最近のSecure BootなEFI環境の場合は、
sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
のように場所が変わってくる。ところが、これが大きく影響してきて、 起動に必要なgrubx64.efi(debian/rules) が -p /EFI/ubuntu でビルドされているのに対して、grub-install はフォントを /boot/grub/fonts(これはEFIじゃないときのコピー先)にコピーしてしまうため、 Secure Bootイメージは、探しに行った先にフォントがないということになり、エラーを返してくる。それぞれは間違いではないのだけれど、組み合わさることで重大な問題となって、最悪起動出来ないという問題となる(実際、最初のdesktopインストールはどうにもならなくなった)。ということで、カーネルパラメータを変更したりしてgrubに反映させる前に、
sudo cp -Rp /boot/grub/fonts /boot/efi/EFI/ubuntu
をしておきましょう。

追記
もしかしたら、grubの書き換え後に実行するのは、
sudo update-grub
が正しい?

参考
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1063602

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です