Ubuntu の GRUB がすっ飛んだ!!
Back
HOME
GNU GRUB version 2.12
Minimal BASH-like line editing
is supported. For the first
word, TAB lists possible command
commpletions. Anywhere else TAB
lists possible device or file
completions. To enable less(1)-
like paging, "set pager=1". ESC
at any time exits.
grub> _
先日から挑戦中の「親GRUB」作成中、何らかの理由で編集に使用していた Ubuntu 自身の GRUB を上書きしてしまった。
この画像は、一応立ち上げ時 GRUB が表示されているが内容が無い。つまり、状況把握 ② の「残っていても内容が無い」に相当する。
この記事は ChatGPT の回答を元に、個別の案件に特化したリカバリーメモである。
AlmaLinux からUbuntu の状況を確認する
- /EFI/ubuntu ディレクトリーが残っているか?
$ sudo mkdir -p /mnt/ubuntu
$ sudo mount /dev/sdb1 /mnt/ubuntu
### ① GRUB をコピーするだけでリカバリーできるケース ###
$ ls /mnt/ubuntu/EFI
BOOT ubuntu # 残っている場合
### ② GRUB を新たに生成し直す必要が有るケース ###
$ sudo nano /mnt/ubuntu/EFI/ubuntu/grub.cfg # 残っていても内容が無い
$ ls /mnt/ubuntu/EFI
BOOT # ubuntu が無くなっている場合
=MEMO= mount / umount に関して注意を喚起するため明るいグリーンで表記している。
① ubuntu フォルダが残っていて grub.cfg も生きているケース
$ sudo efibootmgr --create --disk /dev/sdb --part 1 \
--label "Ubuntu" \
--loader '\EFI\ubuntu\grubx64.efi'
$ sudo umount /mnt/ubuntu
$ sudo reboot
② GRUB を新たに生成し直す必要が有るケース
- マウンティングポイントを確認する
$ sudo lvscan
ACTIVE '/dev/almalinux/swap' [7.79 GiB] inherit
ACTIVE '/dev/almalinux/home' [<386.38 GiB] inherit
ACTIVE '/dev/almalinux/root' [70.00 GiB] inherit
ACTIVE '/dev/ubuntu-vg/ubuntu-lv' [<116.19 GiB] inherit
ここから、Ubuntu のルートは /dev/ubuntu-vg/ubuntu-lv であるということが分かる。
INACTIVE になっていたらアクティブ化する
$ sudo bgchange -ay
- Ubuntu のルート(/)を AlmaLinux にマウントする
$ sudo umount /mnt/ubuntu # 状況確認時のマウントを解除
$ sudo mount /dev/ubuntu-vg/ubuntu-lv /mnt/ubuntu
$ ls /mnt/ubuntu
bin cdrom home lib64 mnt root sbin.usr-is-merged swap.img usr
bin.usr-is-merged dev lib lost+found opt run snap sys var
boot etc lib.usr-is-merged media proc sbin srv tmp
赤字で示したフォルダについて後ほどマウントする。
- 上のルートに有る boot に EFI パーティションをマウント
もし EFIパーティションがどこか分からないときは /etc/fstab を見てみる。(必要なマウンティングポイントがすべて記載されている)
$ cat /mnt/ubuntu/etc/fstab
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-3eFb4wsMnjlccd1wF0ynrgawDt1k6tSkrfb4juE6zSDZ3s6QUFcdoKat0EVOApBb / ext4 defaults 0 1
# /boot was on /dev/sdb2 during curtin installation
/dev/disk/by-uuid/646f48ba-eddf-4e2f-a6c5-35fd0aad2d50 /boot ext4 defaults 0 1
# /boot/efi was on /dev/sdb1 during curtin installation
/dev/disk/by-uuid/EC8D-DD0F /boot/efi vfat defaults 0 1
$ sudo mount /dev/sdb2 /mnt/ubuntu/boot
$ sudo mount /dev/sdb1 /mnt/ubuntu/boot/efi
$ sudo mount --bind /dev /mnt/ubuntu/dev
$ sudo mount --bind /proc /mnt/ubuntu/proc
$ sudo mount --bind /sys /mnt/ubuntu/sys
$ sudo mount --bind /run /mnt/ubuntu/run
$ sudo mount -t efivarfs efivarfs /mnt/ubuntu/sys/firmware/efi/efivars
- ここまで準備が出来たらいよいよ新しい GRUB を生成する
$ sudo chroot /mnt/ubuntu # ルートディレクトリーで root になる
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu
# update-grub
# nano /boot/grub/grub.cfg # 新しい GRUB が生成されているか確認
# exit
$
- 各フォルダをアンマウントして再起動
$ cd
$ sudo umount /mnt/ubuntu/sys/firmware/efi/efivars
$ sudo umount /mnt/ubuntu/dev
$ sudo umount /mnt/ubuntu/proc
$ sudo umount /mnt/ubuntu/sys
$ sudo umount /mnt/ubuntu/run
$ sudo umount /mnt/ubuntu/boot/efi
$ sudo umount /mnt/ubuntu/boot
$ sudo umount /mnt/ubuntu
$ sudo reboot
Back
HOME

この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by