web-dev-qa-db-ja.com

Ubuntu MBRドライブをGPTに変更/変換し、UbuntuをEFIから起動するにはどうすればよいですか?

最近、PCをアップグレードしました。新しいマザーボード(ASUS M5A99X EVO)は、通常のMBRオプションの代わりにUEFiを使用します。

以前のハードウェア(MSI MS 7267)を使用していたときにUbuntu 11.10をインストールし、Ubuntuだけで問題なく起動し、Windows 7も同様ですが、Windows 7はUEFI(GPT)ブートを使用し、UbuntuはMBRを使用しています。

私は別々のドライブにOSを持っているので、両方のOSが正常に起動すると言ったように、GRUB2がWindowsブートローダーおよびその逆に置き換えられることはありませんが、それを行うには1つのドライブをこの場合はUbuntuドライブとして切断する必要がありますWindowsが読み込まれないようにします。

ここで私の質問は、MBRを使用する代わりにGPTを使用してWindowsを起動できるようにUbuntuのドライブを変更/変換するにはどうすればよいですか?です。

システム全体を再インストールしたり、データを失ったりしないでください。

ドライブを消去する場合、モードが何であれ、どうすればUbuntuをGPT、UEFIにインストールできますか?.

私はgdiskを使用してMBRからGPTに変換しましたが、Ubuntuが起動できないのはgrubが起動しないようです。

OSを再インストールしましたが、ドライブはデフォルトでGPTになりましたが、grup-pcの代わりにgrub-efiがまだ使用されています。

UbuntuをEFIから起動するにはどうすればよいですか?.

65
Uri Herrera

目次:

  1. 用語
  2. 変換中
  3. 設定(+デュアルブート)

用語

BIOS =基本入出力システム

(U)EFI =(統合)拡張可能ファームウェアインターフェイス

MBR =マスターブートレコード

GPT = GUIDパーティションテーブル

UEFI/EFI/BIOS =ファームウェアインターフェイス

MBR/GPT =ドライブ上にあるパーティションとそれらからブートする方法をコンピューターが(ハードディスクごとに)知る方法。

UEFI/BIOS

ファームウェアインターフェイスは、ファームウェア(デバイス内のソフトウェア)とオペレーティングシステムが相互作用する方法です。ハードウェアを初期化してからオペレーティングシステムを実行し、オペレーティングシステムドライバーがハードウェアを操作できるようにします。

BIOSは、使用されている通常のファームウェアインターフェイスです。 UEFIは、より高速で、GUIを備え、ネットワークカードを起動してIPアドレスを取得できるなど、いくつかの機能を備えた新しいインターフェイスです。 UEFIはEFIを置き換えます。 (EFIを開発している人は、同様のことをしている他の人がいることを知り、EFIのアイデアを持ち込んで参加しました。これがUEFIになりました).

BIOSでは、ブートローダーがディスクの先頭にある必要がありますが、UEFIはこのためにパーティションを使用し、使用する複数のブートローダーから選択できます。

MBR/GPT + GRUB

MBRは、ブートローダー(BIOS用)とパーティションマップを含むディスクの先頭のコードセクションです。および一意のディスク識別子。

GRUBをMBRを使用してディスクにインストールするには、GRUBは、MBRに小さなプログラムを配置して、ディスクの別の部分からGRUBの残りをロードします。 (これは、MBRが小さすぎてすべてのGRUBを含めることができないためです)。選択されるスペースは、MBRと最初に存在するパーティションとの間のスペースです。

GPTは、パーティトンの指定方法の標準です。 「保護」MBRがありますが、これはBIOSベースのコンピューターがMPTのみを知っているツールを起動および停止して、GPTを破壊しようとすることを許可するためだけです。持つことができます

(GPTの処理方法は、BIOS(またはBIOSエミュレーションモードのUEFIシステム)またはUEFIを使用して起動するかどうかによって異なります。質問に関連するUEFIに焦点を当てます)。

オペレーティングシステムのブートローダーは、(通常)FAT32でフォーマットされたEFI System Partitonと呼ばれるパーティションに保存されます。これは、GRUBがインストールされる場所です。

変換中

最初...

私たちはパーティションテーブルをいじっているので、保証された安全性は不可能です。それは危険な操作です。ただし、メソッドはデータを失うべきではありません。

これに遭遇する他の人:Apple Macでは使用しないでください。

今...

ライブCD(または別のディスクにインストールされた別のLinuxインストール)でこれを行う必要があります。

GPTディスクを扱うときは、GPT対応プログラムを使用する必要があります。 「GPT fdisk」は使用に適したツールであり、今後使用するものです。ディストリビューションに応じて、gptfdiskまたはgdiskと呼ばれます(Ubuntuではgdiskと呼びます)。 Parted(およびGparted)もGPT対応であるため、GPTディスクで「安全に」使用できます。

変換するには、以下が必要です。

  1. GPTデータとEFIシステムパーティションに合わせてパーティションのサイズを変更します。
  2. ディスクを変換してパーティションを追加します
  3. GRUBをEFIシステムパーティションにインストールします。

1)パーティションのサイズ変更

parted(コマンドライン)またはgparted(GUI)を使用して、最初と最後のパーティションのサイズを変更します。最初のパーティションの前には約200MiBがあり、最後のパーティションでは1MiBから2MiB(どちらでもかまいません)が最後に削除されている必要があります。

2)ディスクを変換する

走る

gdisk /dev/sdx

変換するデバイスの変更は/dev/sdxです。

パーティシトンテーブルを変換することを通知する必要があります。

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
you don't want to convert your MBR partitions to GPT format!
***************************************************************


Command (? for help): 

次に、新しいパーティションを追加し、タイプを「EFIシステム」にします。最初に空き領域を見つけ(34などの低いセクター番号をお勧めします)、すべての空き領域を自動的に使用します。この例では、4GBのUSBフラッシュドライブを使用しており、既に1つのパーティションがあり、上記に従ってサイズ変更されています。

Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-7831518, default = 34) or {+-}size{KMGTP}: 
Information: Moved requested sector from 34 to 2048 in
order to align on 2048-sector boundaries.
Use 'l' on the experts' menu to adjust alignment
Last sector (2048-421887, default = 421887) or {+-}size{KMGTP}: 
Current type is 'Linux/Windows data'
Hex code or GUID (L to show codes, Enter = 0700): L
0700 Linux/Windows data    0c01 Microsoft reserved    2700 Windows RE          
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8301 Linux reserved        8e00 Linux LVM           
a500 FreeBSD disklabel     a501 FreeBSD boot          a502 FreeBSD swap        
a503 FreeBSD UFS           a504 FreeBSD ZFS           a505 FreeBSD Vinum/RAID  
a800 Apple UFS             a901 NetBSD swap           a902 NetBSD FFS          
a903 NetBSD LFS            a904 NetBSD concatenated   a905 NetBSD encrypted    
a906 NetBSD RAID           ab00 Apple boot            af00 Apple HFS/HFS+      
af01 Apple RAID            af02 Apple RAID offline    af03 Apple label         
af04 AppleTV recovery      be00 Solaris boot          bf00 Solaris root        
bf01 Solaris /usr & Mac Z  bf02 Solaris swap          bf03 Solaris backup      
bf04 Solaris /var          bf05 Solaris /home         bf06 Solaris alternate se
bf07 Solaris Reserved 1    bf08 Solaris Reserved 2    bf09 Solaris Reserved 3  
bf0a Solaris Reserved 4    bf0b Solaris Reserved 5    c001 HP-UX data          
c002 HP-UX service         ef00 EFI System            ef01 MBR partition scheme
ef02 BIOS boot partition   fd00 Linux RAID            
Hex code or GUID (L to show codes, Enter = 0700): ef00
Changed type of partition to 'EFI System'

これでEFIパーティションができました。

Command (? for help): p
Disk /dev/sdd: 7831552 sectors, 3.7 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 669247F2-37F7-4797-98F9-9CE56F7EA8C8
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7831518
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          421888         7829503   3.5 GiB     0700  Linux/Windows data
   2            2048          421887   205.0 MiB   EF00  EFI System

次にgdiskを終了します

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): y
OK; writing new GUID partition table (GPT).
The operation has completed successfully.

ここで、Gparted(またはコマンドラインmkfs.vfat)を使用して、パーティションをFAT32としてフォーマットします。

3)GRUBをインストールする

これは、前の部分が自分で試したことがないという保証が少なくなっています。

私はこのステップについて確信が持てないので、 RAOFの指示 を使用して推測します。

Grub-efiに切り替えるには

  1. EFIパーティションを見つけます。/boot/efiにマウントします。これを/ etc /fstab¹に追加します
  2. Grub-efiパッケージをインストールする
  3. BIOSのブート優先順位をUEFIおよびレガシーからUEFIのみに切り替えます(または同様のオプション)

どのバージョンのgrub-efiをインストールするかを決める必要があります

ioreg -l -p IODeviceTree | grep firmware-abi

EFI32と書かれている場合はgrub-efi-ia32パッケージをインストールし、EFI64と書かれている場合はgrub-efi-AMD64パッケージをインストールします。次のコマンドでパッケージをインストールできます

Sudo apt-get install <package name>

これはおそらく、EFIモードで起動した場合にのみ機能します。

動作しない場合は、grub-efiがインストールされたら これら ステップバイステップの説明(「(U)EFIシステムにGRUB2をインストール」の下)を試してください。

構成(+デュアルブート)

RAOKの指示が機能する場合、次の行を/etc/grub.d/40_customに追加できるはずです。

menuentry "Windows 7" {
        set root='(hd0,gpt1)'
        chainloader /EFI/Microsoft/bootmgfw.efi
}

WindowsはGRUBによってhd0として認識されることを前提としています。動作させるには、hd1に変更する必要がある場合があります。

今すぐ実行

update-grub

構成ファイルを更新します。

参考資料と詳細資料

いくつかのソースを使用しました。

112
Portablejim

この答えは不完全です。私はこれをテストしていません。データを食べることはほとんどありませんが、警告されています!

ここで起こっているのは、BIOSがレガシーMBRから優先的に起動しているため、貧弱な古いUEFI Windows 7が見落とされているということです。

UEFIの素晴らしい点の1つは、WindowsがGRUBを上書きすることを心配する必要がないことです。これらは両方ともEFIパーティションでうまく共存する必要があります。したがって、1つのオプションはgrub-efiに切り替えることです。 注:grub-efiがMSDOSスタイルのパーティションを理解しているかどうかわかりません。 Ithinkと思います。そうでない場合、これは起動に失敗し、LiveCDを回復する必要があります。実際、とにかくLiveCDを手元に置いてください!

grub-efiに切り替えるには、

  1. EFIパーティションを見つけます。 /boot/efiにマウントします。これを/etc/fstab¹に追加します
  2. grub-efiパッケージをインストールします
  3. BIOSのブート優先度をUEFI and LegacyからUEFI only(または同様のオプション)に切り替えます

そのshouldでUEFIブートUbuntuインストールが残ります。起動しない場合は、信頼できるLiveCD(またはUbuntu代替インストールCD-「壊れたシステムを修正する」オプションが必要です)を起動し、システムにchrootして、grub-pcを再度インストールします。


¹:このステップの詳細:LinuxカーネルがEFIシステムパーティションと呼ぶものを見つける必要があります。これは、/dev/sda2/dev/sdb3、またはsuch²のようなものになります。次に、/boot/efiディレクトリを作成し、/etc/fstabに行を追加する必要があります。 EFIパーティションが/dev/sdb3の場合、次の行を追加します。

/dev/sdb3    /boot/efi    vfat    defaults    0    1

Sudo mount /boot/efiを実行すると、/boot/efiEFIディレクトリとWindows 7のサブディレクトリが含まれていることがわかります。


²:複数のハードドライブがあるので、パーティションのUUIDを確認することをお勧めします。これは、ハードドライブの追加/削除の下では安定しますが、/dev/sda2名は変更しないことが保証されません。 。ただし、これは他のすべての設定が完了した後に行うことができます。

UUIDは、/dev/disk/by-uuidで確認できます。たとえば、次のようになります:

$ ls /dev/disk/by-uuid -lah
total 0
drwxr-xr-x 2 root root 100 Dec  5 09:12 .
drwxr-xr-x 6 root root 120 Dec  5 09:12 ..
lrwxrwxrwx 1 root root  10 Dec  5 09:12 27fae347-4c7f-45cb-92d6-5f3d410599a1 -> ../../sda3
lrwxrwxrwx 1 root root  10 Dec  5 09:12 4405-64C8 -> ../../sda1
lrwxrwxrwx 1 root root  10 Dec  5 09:12 5243e250-8da5-4fea-aa63-61466022661d -> ../../dm-0

私の場合、/dev/sda1が私のEFIシステムパーティションであることを知っているので、

UUID=4405-64C8  /boot/efi       vfat    defaults        0       1

/etc/fstabで。

9
RAOF

私はOSを別々のドライブに入れているので、GRUB2はWindowsブートローダーに置き換えられません。

これが理想的であるため、パーティションテーブルに少なくとも1つのプライマリパーティションが空いている可能性があります。

今私の質問は、MBRを使用する代わりにGPTを使用してWindowsを起動できるようにUbuntuのドライブを変更/変換するにはどうすればよいですか?

UEFIブートを実行するためにMBRをGPTに変換する必要はありません。プライマリFATパーティションを作成し、grub-efi-AMD64-binパッケージをインストールし、 Add ESPの指示に従ってくださいMBRを使用した既存のインストール これは、Ubuntuの現在のリリースで動作するはずです。

2
LiveWireBT

Portablejim's answer (MBRからGPTへの変換に本当に役立ちました、ありがとう!)を補完するために、 Boot-Repair を使用してgrubを再インストールできます。ステップ3を完了できなかった後、Windows 10のインストールでlinuxブートオプションが表示されなくなったときに、ブートを修復するのは魅力的でした。

1
John