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


65

最近、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のドライブを変更/変換するにはどうすればよいですか?

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

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

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

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

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


これがrodsbooks.com/gdisk/booting.htmlに役立つことを願っています。
1つのゼロ

回答:


113

目次:

  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」は使用に適したツールであり、今後使用するものです。呼び出すgptfdiskgdisk、ディストリビューションに応じて呼び出すことができます(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モードで起動した場合にのみ機能します。

動作しない場合は、一度インストールしたらこれらの手順を(「(U)EFIシステムにGRUB2をインストール」の下で)試すことができますgrub-efi

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

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

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

Windowsがhd0GRUBによって認識されていることを前提としています。動作するように変更する必要があるかもしれませんhd1

今すぐ実行

update-grub

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

参考資料と詳細資料

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


ああ、ありがとう!..しかし、私はまだドライブにgrub-efiをインストールすることにこだわっています。OSを再インストールしてドライブをGPTにしましたが、grub-efiではなくgrub-pcを使用しています。
ウリエレーラ

オプションがある場合(UEFIデバイスを所有していないので、私は助けられないので非常に不自由です)、BIOS / MBRモードではなくUEFIモードでライブCDを起動する必要があります。
Portablejim

ライブCDでの削除grub-pcとインストールはどうgrub-efiでしょうか(インストールする前に?)?
Portablejim

1
うわー、これは完璧に機能しました、ありがとう!何も再インストールせずに、Fedora 25とWindows 10の並行インストールをMBR + BIOSからGPT + UEFIに移行しました。UEFIで起動したFedora 25 Live USBスティックからステップ1と2を実行しました。ステップ3では、wiki.ubuntuusers.de / GRUB_2 / Reparatur /#chroot-Methodeで説明されているように、chrootを使用してLiveシステムから既存のシステムにアクセスしました。grub2をアンインストールし、grub2-efiおよびgrub2-efi-modulesをインストールし、shimを明示的に再インストールしました(shimを再インストールしないと、Grubメニューは表示されません)。最後に...
フィリップ・ハートウィッグ

2
GRUBをインストールするために、ライブUSBをブートし、ブート修復を使用しました。askubuntu.com/questions/226061/…この投稿をありがとう!
jbrock

9

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

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

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

あなたに切り替えるにgrub-efi

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

それはすべきである Ubuntuのインストール・起動UEFIを残します。起動しない場合は、信頼できる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すると、Windows 7のサブディレクトリを/boot/efi含むEFIディレクトリが含まれていることがわかります。


²:複数のハードドライブがあるので、パーティションの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/sda1EFIシステムパーティションがわかっているので、

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

私の/etc/fstab


Windows 7がEFIから起動している場合、EFIパーティションにブートローダーが配置されているため、1つ必要です。これは、標準のUbuntuファイルシステムのどこにも表示されませんDisk utilityプログラムのようなものでそれを見つける必要があります。EFIパーティションを見つけてマウントするまでgrub-efiは動作しません。ブートローダーをEFIシステムパーティションに固定する必要があります。
RAOF

それでもUbuntuを起動できません。livecdを使用してfstabに行を追加し、/ bootにefiディレクトリを作成しましたが、効果はないようです。
ウリエレーラ

今、あなたはEFIパーティションがマウント持っていることを、あなたが実行する必要があるsudo grub-installsudo update-grub、実際にインストールして、EFIパーティションにGRUBを設定するために。インストールにchrootした後、これを行う必要があります(ハードドライブへのインストールに関する情報を知る必要があるため)。支援が必要な場合は、回答に詳細を追加できます。
RAOF

はい、インストールにchrootする方法を追加し、grubを再インストールしてください。
ウリヘレラ

ここの指示に従いましたが、新しいEFIパーティションに問題がありました。Windows 10プレビューをインストールしようとすると、インストーラーは次のエラーを出しました:「WindowsはEFIシステムパーティションがNTFSとしてフォーマットされていることを検出しました。EFIシステムパーティションをFAT32としてフォーマットし、インストールを再開します」 Windowsインストーラーに付属するdiskpartツールcreate partition efi。最初のEFIパーティションを削除し、で別のパーティションを作成します。diskpartの詳細については、technet.microsoft.com
病原体

2

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

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

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

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


1
過小評価された答え。WindowsはGPT + UEFIまたはMBR + BIOSブートを固執する必要がありますが、Linuxはミックスアンドマッチを許可し、grubは別のディスクをチェーンロードするか、Windows 7のbootmgrを直接起動できます。
ティムG

@timgこれは事実の後に当てはまるかもしれませんが、残念ながらWindows 10をゼロからセットアップしている場合、EFIを起動した場合、インストーラーはGPTボリュームなしで先に進むことはできません。
メルク

ああ@Merk、私は、Windowsインストーラに別の方法を使用します。Shiftキーを押しながらF10はあなたのコマンドラインを与え、次のことができdiskpartdism /apply-image場合、bcdboot(当然のものとの両方でより多くのオプションが)、それはMBRをインストールするかにかかわらず、あなたがブートする方法のはgptにします。
ティムG

1

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


Ubuntu専用のディスクを使用しており、ステップ3としてBoot-Repairを使用するのは魅力的でした!
ラエルグゲルミンクーニャ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.