👻

ubuntuでgrub2を再インストールした。

2024/09/28に公開

ubuntuでgrub2を再インストールした。
EFIを書き換えるので怖かったが、あっさり成功した。

grub2ビルド
wget https://ftp.gnu.org/gnu/grub/grub-2.04.tar.gz
tar xzvf grub2.04.tar.gz
cd grub-2.04/

sudo ./configure --disable-werror --prefix=/usr/ --target=x86_64
make
sudo make install

実際にEFIを書き換えてみる。

sudo grub-install 
Installing for x86_64-efi platform.
Installation finished. No error reported.

エラーが表示されると思ったが、あっさり成功。
オプションはいらなかった。
/boot/efi/EFI/以下が更新されている。

ls -al /boot/efi/EFI/
total 4400
drwxr-xr-x 2 root root    4096 Sep 28 14:06 .
drwxr-xr-x 5 root root    4096 Apr 23 21:47 ..
-rwxr-xr-x 1 root root     100 Sep 28 14:09 BOOTX64.CSV
-rwxr-xr-x 1 root root     126 Sep 28 14:09 grub.cfg
-rwxr-xr-x 1 root root 2656136 Sep 28 14:09 grubx64.efi
-rwxr-xr-x 1 root root  856280 Sep 28 14:09 mmx64.efi
-rwxr-xr-x 1 root root  966664 Sep 28 14:09 shimx64.efi

ubuntuではshimx64.efiが最初のブートローダーです。
shimx64.efiがどのようにして作成されているのか調べる。

grubソースからはshimx64.efiが存在せず、どのように作成されているのかわからなかった。
次はパッケージから調べる。

apt list --installed

grub-common
grub-efi-amd64-bin
grub-efi-amd64-signed
grub-gfxpayload-lists
grub-pc-bin
grub-pc
shim-signed

ソースコード取得

apt-get source grub-common grub-efi-amd64-bin grub-efi-amd64-signed grub-gfxpayload-lists grub-pc-bin grub-pc 

sudo apt-get build-dep  grub-common grub-efi-amd64-bin grub-efi-amd64-signed grub-gfxpayload-lists grub-pc-bin grub-pc

それぞれのディレクトリで
dpkg-buildpackage -b -uc

http://softwaretechnique.web.fc2.com/OS_Development/Grub/grub02.html

\efi\boot\bootx64.efi

sudo qemu-system-i386 -drive file=disk.img,format=raw -s -S

Discussion