Ubuntuアップグレードでgrubが破壊された場合の対処方法
先日VirtualBox上のUbuntuを18.04から20.04にアップグレードした際にgrubが壊れて起動出来なくなった場合に行った対象方法
エラー内容
do-release-upgrade
で18.04から20.04にアップグレード- アップグレード自体は正常に終了し、システム再起動を実施
- “‘grub_file_filters’ not found”と表示され、起動出来ず…
error: symbol 'grub_file_filters' not found.
Entering rescue mode...
grub rescue>
修正方法
grubの再インストールを実施すれば修正できるのですが、システムが起動しないためこのままでは何も出来ません。そこでDVD/CD/USBなどからLinuxを起動、ディスクをマウント、grubの再インストールという流れで修正していきます
Live DVD/USBでの起動
世の中色々なLinux Liveディストリビューションがあると思いますが、今回は安直にUbuntuの.isoイメージをダウンロードしました。おそらくもっとサイズの小さいお手軽なものがあると思います。
UbuntuのISOイメージはこちらからダウンロードできます
ダウンロード後、VirtualBoxの設定->ストレージ->光学ドライブのメニューからISOファイルをマウントし、VMを起動します
DVDから起動すると、最初にDVDからUbuntuを起動するか、Ubuntuをディスクにインストールするかを選択するメニューが表示されるため、”Try Ubuntu”を選択します
起動後、端末を立ち上げてgrubの再インストールを実施していきます
grub再インストール
ディスクの特定
最初にlsblk
コマンドでインストールされているディスク、パーティションを特定します。下記の場合はsda1
が対象パーティションです
% lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 99.4M 1 loop /snap/core/11420
loop1 7:1 0 55.5M 1 loop /snap/core18/2074
...
loop20 7:20 0 51M 1 loop /snap/snap-store/547
loop21 7:21 0 2.5M 1 loop /snap/gnome-calculator/826
sda 8:0 0 128G 0 disk
└─sda1 8:1 0 128G 0 part /
sr0 11:0 1 1024M 0 rom
次に対象ディスクをマウントしていきます
# rootで実行
% sudo su
# "sda1"の部分は上記で特定したパーティションを使用
% mount /dev/sda1 /mnt
% mount --bind /dev /mnt/dev
% mount --bind /dev/pts /mnt/dev/pts
% mount --bind /proc /mnt/proc
% mount --bind /sys /mnt/sys
% chroot /mnt
ここまで出来たらgrubのインストールは一行です
# 対象ディスクにgrubをインストール
% grub-install /dev/sda
Installation finished. No error reported
grubのインストールで指定するのはパーティション (/dev/sda1
)ではなくディスク(/dev/sda
)ですので注意してください
最後に念のためumountして再起動します (再起動後はDVDではなく、ディスクからブートします)
# chroot終了
% exit
# 逆順にumount
% umount /mnt/dev/pts
% umount /mnt/dev
% umount /mnt/proc
% umount /mnt/sys
% umount /mnt
# 再起動
% reboot
最近のコメント