ブートマネージャーにGRUBを使ってみる

Hackintosh

 以前からそうだったのですが、OpenCoreでWindowsを1度起動すると、BIOS画面が出ない不具合があり、治すにはBIOSを再書き込みしなければならないという状況でした。
 そのため、OpenCore主体ではなく、Clover主体で使ってきました。現状どちらも開発具合が同じ程度なので良いのですが、今後OpenCoreを使うために、チェーンロードできるブートローダを一段目にして(Windows主体で使ってるので、デフォルトブートはWindowsで10秒程度の待ち時間で)できれば良いのですが、UEFI版だとなかなかフリーなのがありませんでした。
 よくよく探した結果、Grub2がWindowsからインストールできるツールがあったので、これを使ってうまくいきましたので、紹介します。
 1.USBメモリでの試験と、2.Windows10のSSDのESPへのインストールの2編です。

 まず、USBメモリで試験してみました。
 EFIパーティションにしないといけないので、GPTでFAT32のプライマリパーティションを作ります。そのため、Windows10でdiskpartコマンドを使います。CMD(ターミナル)を管理者権限で立ち上げてから、以下のように作ります。(同時にドライブレターR:¥をつけて、インストール準備をします。Rが使われているなら別のレターに読み替えてください。)

>diskpart
DISKPART>list disk
DISKPART>select disk N  ←NはUSBメモリの番号を入れてください
DISKPART>clean
DISKPART>convert gpt
DISKPART>create partition primary
DISKPART>format fs=fat32 label="EFI" quick
DISKPART>assign letter=r
DISKPART>exit

grub-2.02-for-windows.zipをダウンロード、展開します。(CMDで使いやすい場所に移動するといいでしょう。)CMDを管理者権限で立ち上げて、以下の方法で、Grub2をインストールします。

>cd grub-2.02-for-windows.zipの展開先
>grub-install.exe --boot-directory=R:\ --efi-directory=R: --removable --target=x86_64-efi
>grub-install.exe --boot-directory=R:\ --efi-directory=R: --removable --target=i386-efi

つぎに、コンフィグレーションファイルを作るために、Linuxで操作します。
UBUNTU20.04のインストールUSBメモリ(ライブUSB)を作ります。
これを起動します。
インストールのウインドウで、UBUNTUを試すを押して、ライブモード入ります。
(ライブモードでは、Firefoxが使えますので、このページを見ながら作業可能です。)
Terminal(端末)を開き、(左上のアクティビティをクリックして、termなどと打って検索し、起動できます)

$ blkid

コマンドを打ちます。そうすると、今このパソコンにある、ドライブ〜パーティションの詳細がでます。以下のようなものです。

/dev/sda1: LABEL_FATBOOT="OPENCORE" LABEL="OPENCORE" UUID="67E3-17ED" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="7935ed5d-91a8-4116-9b79-07fb45534a7c"
/dev/sda2: UUID="39bdae94-2836-34cf-8876-7bcde21c5e62" LABEL="MacData" TYPE="hfsplus" PARTUUID="992c703e-3e8e-408a-b9f2-231df1209135"
/dev/sda3: UUID="08c06818-6751-39ba-a2ad-421097273ab6" LABEL="CatalinaTM" TYPE="hfsplus" PARTUUID="c55a0a16-dad4-4a5d-8e6a-7ab3d9bcae43"
/dev/sda4: UUID="05aa1c0d-a104-3832-94e2-0bfdd62d728b" LABEL="MojaveTM" TYPE="hfsplus" PARTUUID="44d163f3-0cd7-4ce4-bbd2-9d829c464bc8"
/dev/sdb1: LABEL_FATBOOT="WINEFI" LABEL="WINEFI" UUID="4E73-BBC4" TYPE="vfat" PARTUUID="06fb0163-59f8-46ba-9465-7daa35f85887"
/dev/sdb2: LABEL="Windows system" UUID="01D404912AB10400" TYPE="ntfs" PARTUUID="6ca8cb63-3234-4537-9b99-070cfe9d8301"
/dev/sdb3: UUID="9C344E0D344DEABA" TYPE="ntfs" PARTUUID="a01522c2-8c33-4c70-b02c-13975beb604d"
/dev/sdc1: LABEL="MyDocuments" UUID="24125BF72BE7D2BC" TYPE="ntfs" PTTYPE="atari" PARTUUID="144da681-1434-4bd3-9063-1b9025f587ea"
/dev/sdc2: LABEL="Music" UUID="BE40F50B40F4CB63" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="d6e29ada-feed-440d-b7f5-62960abe6cc9"
/dev/sdd1: LABEL_FATBOOT="BIGSUR" LABEL="BIGSUR" UUID="67E3-17ED" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ac534245-86fb-4782-b5b3-da79571e5827"
/dev/sdd2: UUID="ce40cce8-562f-48bd-ba17-2d56b7708ff5" TYPE="apfs" PARTUUID="1107da13-efff-452b-b2fc-335256bef315"
/dev/sde1: LABEL_FATBOOT="CATALINA" LABEL="CATALINA" UUID="67E3-17ED" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="bf815d74-b73f-410d-b6e2-5ef6184b821c"
/dev/sde2: UUID="e90960f4-1d20-46cf-b6b9-f4e331363d08" TYPE="apfs" PARTUUID="349784e1-4dc3-4c53-938c-12e3974f96f7"
/dev/sdf2: LABEL="VideoDownload" UUID="AA5C04DA5C04A2E5" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="5352b84f-f94d-4e46-bcba-fcd8d882f8bf"
/dev/sdg2: LABEL="Backup" UUID="B09E2A8F9E2A4DE2" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="d67f461d-4617-4538-9547-766c6c9c7d2b"
/dev/sdh1: LABEL="EFI" UUID="C481-6A7D" TYPE="vfat" PARTLABEL="Basic data partition" PARTUUID="b3df8eb2-0692-4c8d-847e-fbcb2c278750"
/dev/sdj1: LABEL="UBUNTU 20_0" UUID="7E59-7FF9" TYPE="vfat" PARTLABEL="Main Data Partition" PARTUUID="8bc4ce29-2c63-4eb0-8f4a-9d312c738f99"

 例えば、sda1のaの部分が同じハードディスクを、数字の1がその中のパーティションを表します。次にsdaなどがどのドライブなのか調べます。(sdaなどの名前は起動ごとに変わりますので注意!)
 disk(ディスク)を開きます。以下のようなウインドウが出ます。

ここで、sdb1がCT250MX500SSD1のEFIパーティションを意味しています。このSSDは、Windows10のディスクなので、sdb1はWindows10のEFIパーティションだと判ります。
そこで、このEFIパーティションにユニークな名前をつけます。(EFIのUUIDは内部構成由来なので、同じ構成とすると同じのIDになり、これを使うことができませんでした。)

$ sudo fatlabel /dev/sdb1 WINEFI

同じように、指定するEFIを探しユニークな名前をつけます。

CT120BX500SSD1 はBigSurDP2,OPENCORE0.6.0なので、以下のように
$ sudo fatlabel /dev/sdd1 BIGSUR
ADATA SU650はCatalina,Clover5120なので以下のように
$ sudo fatlabel /dev/sde1 CATALINA
JMicron Generic(USBで外付け)はOPENCORE0.5.9(stable)
$ sudo fatlabel /dev/sda1 OPENCORE

次に、ファイルマネージャ(ファイル)で、EFIを今作っているUSBメモリを開き、grubフォルダを開きます。左上のパンくずリストのgrubを右クリックすると、「端末で開く」が出るので選択し、端末(Terminal)を起動。以下を打ち込みます。

$ touch grub.cfg
$ gedit grub.cfg

テキストエディタ(gedit)が開きますので、以下のように打ち込みます。(コピペして自分の環境に合わせてください。)

default=0
timeout=10

menuentry "Windows10"  {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --label WINEFI
        chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}

menuentry "Catalina Clover"  {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --label CATALINA
        chainloader (${root})/efi/boot/bootx64.efi
}

menuentry "BigSur OpenCore"  {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --label BIGSUR
        chainloader (${root})/efi/boot/bootx64.efi
}

menuentry "OpenCore(Stable)"  {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --label OPENCORE
        chainloader (${root})/efi/boot/bootx64.efi
}

終わったら、再起動。今作っているEFIのUSBメモリから起動してみます。(ASUSの場合、起動ドライブ選択はF8でした。)
以下のようなメニューが出ていれば、成功です。

 default=0でデフォルトエントリを最初に、timeout=10で10秒の起動待ちと指定しています。まずは、ひととおり、動くことを確認してみましょう。

 つぎは、本格的にWindows10のSSDのESPへインストールしてみます。Windows10の管理者権限のCMDで、diskpartをつかって、該当するEFIにドライブレター(ここではR:¥)をつけます。

>diskpart
DISKPART>list disk
DISKPART>select disk N  ←Windows10の入ってるディスク番号を入れます
DISKPART>list partition
DISKPART>select partition N   ←EFIパーティション(EFP)の番号を入れます
DISKPART>assign letter=r
DISKPART>exit

以下のようにして、また、grub-install.exeをつかってインストールします。

>grub-install.exe --boot-directory=R:\ --efi-directory=R: --target=i386-efi
>grub-install.exe --boot-directory=R:\ --efi-directory=R: --removable --target=x86_64-efi

先程のUSBメモリ(ここではドライブレターをF:¥とします。)で設定した、grub.cfgがそのまま使えますので、コピーします。

>R:
>cd grub
>copy F:¥grub¥grub.cfg .

終わったら、再起動し、BIOS画面に入ります(ほとんどのマザーボードはDELキーでしょう)UEFIの起動順にgrubの項目ができていると思いますので、それを最上位に上げtレください。
 これで、起動時にデフォルトで、さっきのGrubのメニュー画面が出て、10秒でWindows10に、選択すると、それぞれのブートローダに行ってくれると思います。

 

コメント

Translate »
タイトルとURLをコピーしました