👻
ubuntuでgrub2を再インストールした。
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
\efi\boot\bootx64.efi
sudo qemu-system-i386 -drive file=disk.img,format=raw -s -S
Discussion