先日UEFI非対応の古いM/BのマシンにUbuntu Serverをインストールしようとしましたが、Ubuntu Serverのインストーラーには「GPTパーティション追加」の項目しかなく、MBRディスクを作成できませんでした。
UEFI非対応の古いM/BからはGPTパーティションのブートディスクから起動ができない(?)(※)ようなので、本記事ではGPTディスクをMBRディスクに変換して、UEFI非対応のM/Bからでも起動ができるようにする方法をご紹介します。
※ここ正確に裏は取れてないのですが、自分の環境ではNo bootable devicesとなり起動ができませんでした。
前提
OS:Ubuntu Server 20.04.1 LTS
LVMは未使用。
ディスクは/dev/sdaのみ。
/dev/sda1はUEFIブート用のパーティション
/dev/sda2はルート(/)のパーティション
準備
Live CDを準備します。
今回は、Ubuntu Desktop 20.04.1 LTS 日本語Remixを使いました。
Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team
gdiskでディスク種別を変換する
Live CDから起動し、「Ubuntuを試す」を選択してOSを起動します。
次にデスクトップを右クリックし端末を起動し、以下のコマンドを実行します。
sudo gdisk /dev/sda
この時点ではまだGPTディスクなので、MBRはprotective、GPTがpresentになっていると思います。
「r」を入力して、リカバリーモードに入ります。
「g」を入力して、GPTからMBRに変換します。
「w」を入力して、変更を適用します。
以下を実行してMBRの項目が「MBR only」になっていることを確認します。
sudo gdisk -l /dev/sda
grubの再インストールをする
以下のコマンドを実行してgrubをインストールするパーティションを「/」とします。
なお、/dev/sdaXのX部分は環境によって変化しますのでご注意を。
sudo mount /dev/sda2 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt
LVMを使っている場合は上記一行目のmountは失敗します。 lvscanコマンドなどを使って論理ボリュームを確認して、以下のコマンドなどでマウントする必要があります。 mount /dev/ubuntu-vg/ubuntu-lv /mnt
以下のコマンドを実行して、grubの再インストール&アップデートを行います。
sudo grub-install /dev/sda sudo update-grub sudo update-initramfs -u
再起動します。Live CDを取り出すように言われたら指示に従います。その後、正常にOSが起動するはずです。
sudo reboot
grubのプロンプトが出てしまった場合
「grub>」が出てOSが正常に起動しなかった場合、grubのインストールに失敗しているものと思われます。
念のため手動で起動する方法をご紹介します。
以下rootの/dev/sdaXのXには、「/」のパーティションを指定します。
またvmlinuzなどの見つけ方は、grubのプロンプトで「ls」や「ls (hd0,msdosY)/」を実行してvmlinuzやinitrdが見つかった番号をYに指定します。
linux (hd0,msdos3)/vmlinuz root=/dev/sda2 initrd (hd0,msdos3)/initrd.img boot
【おまけ1】上でMBRにしたディスクをGPTディスクに戻す方法
Live CDからOSを起動します。
sudo gdisk /dev/sda
「r」を入力して、リカバリーモードに入ります。
「f」を入力して、GPT領域を作成します。
「w」を入力して、変更を適用します。
これでMBRはprotective、GPTがpresentになったと思います。
以下を実施してUEFIブート領域をフォーマットします。
sudo mkfs.vfat /dev/sda1
続いて、以下を実施してGrubの再インストールをします。
sudo mount -t ext4 /dev/sda2 /mnt sudo mkdir /mnt/boot/efi sudo mount /dev/sda1 /mnt/boot/efi sudo mount --bind /sys /mnt/sys sudo mount --bind /proc /mnt/proc sudo mount --bind /dev /mnt/dev sudo mount --bind /dev/pts /mnt/dev/pts sudo chroot /mnt sudo grub-install --force /dev/sda sudo update-grub sudo update-initramfs -u sudo reboot
【おまけ2】最初からMBRのディスクをGPTディスクに変換する方法
こっちはLive CDを使わずにやってみたいと思います。まずは普通にOSを起動します。
sudo gdisk /dev/sda
「w」を入力することによりMBR→GPT変換されます。
これでMBRはprotective、GPTがpresentになったと思います。
続いてBIOS boot partitionを作成します。
sudo gdisk /dev/sda
「n」を入力して新規パーティションを作成します。
Startは34、Endは2047、ファイルシステムのコードは「ef02」を入力します。
「w」を入力して変更を確定させます。
続いてbootフラグが消えていたら復活させます。
parted /dev/sdaで、/bootが存在するパーティションのFlagsが空白なら以下のコマンドでフラグをつけます。Xはパーティション番号です。
sudo parted /dev/sda toggle X boot
grubを再インストールします。
sudo grub-install /dev/sda sudo update-grub
最後に再起動して完了です。
sudo reboot