ついに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できる。