結果だけでなく過程も見てください

日々の奮闘を綴る日記です。

UbuntuでブートディスクをGPTディスクからMBRディスクに変換する方法(おまけでMBR→GPT変換する方法も紹介します)

先日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



プライバシーポリシー お問い合わせ