0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu20.04LTSのMBRディスク内容を保持したまま、GPTディスクに変換する

Last updated at Posted at 2025-03-29

ついにMBRの読めないRegacyモードのないパソコンについに出会った

どうもUEFIブートしかサポートしていないパソコンが出てきている様子。時代の流れか。
なのでMBRで作成されているHSRのディスクをGPTにして,UEFI用のgrubを新規インストールして解決したので手順を記す。割と真面目に人力で再構築してるので、もう少しGrub-updateの力を借りて楽な手順とかありそう。

全体の流れ

1.diskアプリでブート用パーティションを作成
2.MBRからGPTへの変換作業
3.UEFI用のGRUBを書き込み

詳細手順

1. 変換したいmbrディスクを起動しefibootmgrを入れる

起動できるうちに入れときましょう。最後の再構築の際に、grub installができなくてめんどくさくなります。

sudo apt install efibootmgr

で入ってればOK。

ここからはuefi環境のLiveUSB or ほかのUbuntu機に変換したいディスクをSATAで接続して作業する。最初は、USB-SATA変換で接続したのだが、うまく機能しなかった。変換器によるのかも。

2.disk(gui)で後ろ256MBを切ってフラグboot,espにしておく

作成したパーティションをvfatでフォーマットします。
sudo /sbin/mkfs.vfat -F32 /dev/sdb4

3.ターミナルを開き、gdiskでmbr→gpt変換

データが吹き飛ぶ可能性あります。必ずバックアップを取ってから行いましょう。

sudo gdisk
/dev/sda
r(revovery and transformation options)
f(load MBR and build GPT)
y(yes)
w(write)
y(yes)

4.UEFI用のgrubを入れ直し

まずgrub-efiが入っているか確認

sudo apt install grub-efi

次にrootの入っているパーティションをマウントして作業します。
たぶんMBRディスクであれば最初のパーティションだと思う。
私の場合は、sdb1だった。

sudo mount /dev/sdb1 /mnt

また、先程作成したESPパーティションを/boot/efiにマウントします。
私威の作ったESPパーティションはsdb3だった。

sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sdb3 /mnt/boot/efi

必要なディレクトリをバインド
バインドは、すでにマウントされているツリーの一部を、別の場所にマウントさせるオプション。

sudo mount –bind /dev /mnt/dev
sudo mount –bind /proc /mnt/proc
sudo mount –bind /sys /mnt/sys
sudo mount --bind /usr /mnt/usr 

ルートディレクトリを変更して、UWFIGRUBをインストール

sudo chroot /mnt
/usr/sbin/grub-install –-target x86_64-efi –-efi-directory /boot/efi /dev/sdb

再起動

5.grubにカーネルの位置を設定して

再起動すると、シェルが出るorGRUBメニューが出るが起動しない状態になるはず。
メニューでeを押すとエディタが起動し、Ctrl+Cでシェルへ入れます。
手動でブートを実施。

bootフォルダを探す。いろいろ探索する。

grub> ls
	(hd0)  (hd0,gpt3)  (hd0,gpt2)  (hd0,gpt1)  (fd0)  (fd1)
grub> ls (hd0,gpt2)/ 
	./ ../ boot/ dev/ proc/ run/ sys/ etc/ var/ root/ 

ブートフォルダを見つけたら、ルートにマウントするファイルシステムを設定。

grub> set root=(hd0,gpt2)

起動するには、linuxefi でvmlinuzファイルと、root=で/パーテーション指定を行い、initrdedi でinitramfsファイルを指定する必要がある。

grub> linuxefi /vmlinuz-3.10.0-514.16.1.el7.x86_64 root=/dev/sda1
grub> initrdefi /initrd-3.10.0-514.16.1.el7.x86_64.img
grub> boot

6.ブート後、起動したUbuntuで、起動の為の正しい設定を実施

sudo apt-get install grub-efi
sudo mount /dev/sda3 /boot/efi
sudo /usr/sbin/grub-install  –-target=x86_64-efi  -–efi-directory /boot/efi /dev/sda
sudo grub-mkconfig -o /boot/grub/grub.cfg

これでUEFI Bootできる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?