Як я можу змінити / перетворити привід Ubuntu MBR в GPT і зробити завантаження Ubuntu з EFI?


65

Нещодавно я оновив свій ПК, моя нова материнська плата (ASUS M5A99X EVO) використовує UEFi замість звичайної опції MBR.

У мене є установка Ubuntu 11.10, яку я робив, коли в мене було попереднє апаратне забезпечення (MSI MS 7267), Ubuntu тільки завантажується, і так само Windows 7, однак Windows 7 використовує завантаження UEFI (GPT), тоді як Ubuntu використовує MBR.

У мене ОС на окремих накопичувачах, щоб GRUB2 не був замінений завантажувачем Windows і viceversa, як я сказав, що обидві ОС завантажуються чудово самостійно, але для цього мені потрібно відключити один диск у цьому випадку диска Ubuntu як це запобігає завантаженню Windows.

Тепер моє питання полягає в тому, як я можу змінити / перетворити привід Ubuntu, щоб замість MBR він використовував GPT і дозволяв Windows завантажуватися ?.

Переважно без перевстановлення всієї системи або втрати будь-яких даних.

І якби я стер диск, як я можу встановити Ubuntu в GPT, UEFI, у будь-якому режимі ?.

Я використовував gdisk для перетворення з MBR в GPT, але тепер Ubuntu не може завантажуватися, здається, grub просто не запускається.

Я знову встановив ОС, а привід є GPT зараз за замовчуванням, проте grup-pcвсе ще використовується замість grub-efi.

Як я можу зробити завантаження Ubuntu з EFI ?.


Сподіваємось, це допоможе вам rodsbooks.com/gdisk/booting.html .
Одна нуль

Відповіді:


113

Зміст:

  1. Термінологія
  2. Перетворення
  3. Налаштування (+ подвійне завантаження)

Термінологія

BIOS = Базова система вводу / виводу

(U) EFI = (Уніфікований) Розширюваний інтерфейс мікропрограмного забезпечення

MBR = Основний запис завантаження

GPT = Таблиця розділів GUID

UEFI / EFI / BIOS = Інтерфейс прошивки

MBR / GPT = Як комп'ютер знає (на жорсткому диску), які розділи знаходяться на диску та як їх завантажувати.

UEFI / BIOS

Інтерфейс прошивки є способом , що вбудоване програмне забезпечення (програмне забезпечення всередині пристроїв) і операційної системи взаємодіють між собою . Він ініціалізує апаратне забезпечення, потім запускає операційну систему та забезпечує, щоб драйвери операційної системи могли працювати з обладнанням.

BIOS - це звичайний інтерфейс прошивки, який використовується. UEFI - це новіший інтерфейс, який має декілька функцій, наприклад швидкість, графічний інтерфейс та можливість запустити мережеву карту та отримати ip-адресу. UEFI замінює EFI. (Ті, хто розвивав ІФІ, побачили, що є інші, які роблять щось подібне, і тому приєдналися до них, зближуючи ідеї ІФІ. Це потім стало УЄФІ).

BIOS вимагає, щоб завантажувач був на початку диска, проте UEFI використовує для цього розділ і може вибирати серед декількох завантажувачів.

MBR / GPT + GRUB

MBR є частиною коду на початку диска , який містить завантажувач (для BIOS), а також карту розділів і унікальний ідентифікатор диска.

Щоб встановити GRUB на диск з MBR, GRUB розміщує невелику програму в MBR, щоб завантажити решту GRUB з іншої частини диска. (Це робиться тому, що MBR занадто малий, щоб містити всі GRUB). Вибраний простір - це простір між MBR та першим розділом, який зазвичай існує.

GPT - це стандарт для того, як визначаються учасники. У нього є "захисний" MBR, однак це лише для того, щоб комп'ютери, засновані на BIOS, завантажували та зупиняли інструменти, які знають про MBR лише від спроби скинути GPT. Це може мати

(Як обробляється GPT, залежить від завантаження за допомогою BIOS (або системи UEFI в режимі емуляції BIOS) або UEFI. Я зупинюся на UEFI, оскільки це стосується питання).

Завантажувачі для операційних систем зберігаються в розділі під назвою EFI System Partiton, який форматується (як правило) з FAT32. Тут встановлено GRUB.

Перетворення

Спочатку...

Ми граємо з таблицею перегородок, тому гарантована безпека неможлива. Це ризикована операція. Однак метод не повинен втрачати дані.

Інші, що стикаються з цим: Не використовуйте в Apple Macs.

Тепер ...

Вам потрібно буде це зробити на живому компакт-диску (або іншої установки Linux, встановленої на іншому диску.)

Маючи справу з дисками GPT, нам потрібно використовувати програму, відому GPT. "GPT fdisk" - це хороший інструмент для використання та те, що я буду використовувати. Його можна викликати gptfdiskабо gdiskзалежно від розподілу (Ubuntu називає його gdisk). Розділений (і Gparted) також відомий як GPT, тому його можна безпечно використовувати з дисками GPT.

Для перетворення вам потрібно:

  1. Змініть розміри розділів, щоб вони відповідали даним GPT та системним розділам EFI.
  2. Перетворіть диск і додайте розділи
  3. Встановіть GRUB в системний розділ EFI.

1) Змініть розмір розділу

Використовуйте parted(командний рядок) або gparted(GUI) для зміни розміру першого та останнього розділу. Перший розділ повинен мати близько 200 Мбіт перед ним, а останній розділ повинен мати від 1 Мбіт до 2 Мбіт (або буде зроблено), знятий з кінця.

2) Перетворіть диск

Біжи

gdisk /dev/sdx

зміна пристрою, який ви хочете перетворити /dev/sdx.

Він повинен сказати вам, що він перетворить таблицю partiton.

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 system". Він повинен знайти вільний простір на початку (я пропоную деякий низький номер сектору, наприклад 34), і автоматично використовувати весь вільний простір. У прикладах використовується флеш-накопичувач 4 Гб з 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 та Legacy лише на 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.

Якщо це не працює, ви можете спробувати ці покрокові інструкції (у розділі "Встановити GRUB2 в (U) EFI-системи") після того, як 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 на накопичувач, я перевстановив ОС і зробив диск GPT, але його все ще використовується grub-pc не grub-efi.
Урі Еррера

Якщо у вас є можливість (оскільки я не маю жодних пристроїв UEFI, я сильно каліка, не можу допомогти), вам потрібно завантажувати живий компакт-диск в режимі UEFI, а не в режимі BIOS / MBR.
Portablejim

Як щодо видалення grub-pcта встановлення grub-efiв режимі живого компакт-диска (можливо, перед тим як встановити?)?
Portablejim

1
Ого, це спрацювало бездоганно, дякую! Я щойно переніс паралельну установку Fedora 25 та Windows 10 з MBR + BIOS на GPT + UEFI, нічого не встановлюючи. Я виконував кроки 1 і 2 із флешки USB Fedora 25 Live, завантаженої UEFI. На кроці 3 я використовував chroot для доступу до своєї існуючої системи з Live-системи, як описано в wiki.ubuntuusers.de/GRUB_2/Reparatur/#chroot-Methode . Я видалив grub2, встановив grub2-efi та grub2-efi-модулі та явно перевстановив shim (без перевстановлення shim, меню Grub не з’явилося б). Нарешті ...
Філіп Хартвіг

2
Для встановлення GRUB я просто завантажив живий USB і скористався ремонтом завантаження. askubuntu.com/questions/226061/… Дякую за цю публікацію!
jbrock

9

Ця відповідь неповна; Я нічого з цього не перевіряв. Навряд чи з'їсте будь-які ваші дані, але вас попередили!

Я б здогадувався, що тут відбувається те, що ваш BIOS переважним чином завантажується зі застарілого MBR, тому погані старі UEFI Windows 7 отримують поза увагою.

Одна з приємних речей про UEFI - це те, що вам більше не потрібно турбуватися про те, що Windows замінить GRUB; вони повинні прекрасно співіснувати на розділі EFI. Тому одним із варіантів було б перейти на 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 Alternate CD для встановлення - опція "Виправити порушену систему" - це те, що вам потрібно після ☺), вкажіть систему та встановіть 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/efiмістить EFIкаталог із підкаталогом для 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.


Якщо Windows 7 завантажується з EFI, він розмістить свій завантажувач у розділі EFI - значить, у вас має бути ☺. Це не буде видно ніде в стандартній файловій системі Ubuntu. Вам потрібно буде знайти його з чимось на зразок Disk utilityпрограми. Поки ви не знайдете і не змонтуєте свій EFI-розділ, grub-efiвін не зможе працювати - йому потрібно вставити завантажувач у системний розділ EFI.
RAOF

Ще не можу завантажитися в Ubuntu, я додав рядки до fstab за допомогою livecd, а також створив каталог efi в / boot, але, схоже, це не має ніякого ефекту.
Урі Еррера

Тепер, коли ви встановили розділ EFI, вам потрібно запустити sudo grub-installта sudo update-grubфактично встановити та встановити GRUB на розділі EFI. Вам потрібно буде це зробити після того, як ви ввімкнули інсталяцію (тому що вона повинна знати речі про встановлення на вашому жорсткому диску). Якщо вам потрібна допомога, я можу додати деталі до відповіді.
RAOF

Так, будь ласка, додайте як chroot до моєї установки та перевстановлення grub.
Урі Еррера

Я дотримувався тут інструкцій, але у мене виникла проблема з новим розділом EFI. Коли я намагався встановити попередній перегляд Windows 10, інсталятор видав цю помилку: "Windows виявила, що системний розділ EFI відформатована як NTFS. Форматуйте системний розділ EFI як FAT32 та перезапустіть установку." Я зміг вирішити проблему за допомогою інструмент diskpart, який постачається разом із інсталятором Windows, видаливши перший розділ EFI та створивши інший за допомогою create partition efi. Для отримання інформації про дискпарт див. Technet.microsoft.com/en-us/library/cc766465%28WS.10%29.aspx
Pathogen

2

У мене ОС на окремих накопичувачах, щоб GRUB2 не був замінений завантажувачем Windows і viceversa

Це ідеально, тому ви, ймовірно, матимете хоча б один первинний розділ безкоштовно у таблиці розділів.

Тепер моє питання полягає в тому, як я можу змінити / перетворити привід Ubuntu, щоб замість MBR він використовував GPT і дозволяв Windows завантажуватися?

Вам не потрібно конвертувати MBR в GPT, щоб виконати завантаження UEFI, просто створіть первинний розділ FAT, встановіть grub-efi-amd64-binпакет та дотримуйтесь вказівок Додавання ESP до існуючої установки з MBR, яка повинна працювати з поточними випусками Ubuntu.


1
Відповідь занижена. Windows вперто вимагає завантаження GPT + UEFI або MBR + BIOS, але Linux дозволяє змішувати відповідність, а grub може завантажувати інший диск або безпосередньо завантажувати завантажувальну систему Windows 7.
Тім Г

@timg Це може бути правдою і після цього факту, але, на жаль, якщо ви налаштовуєте Windows 10 з нуля, здається, що інсталятор не дозволить вам продовжувати без обсягу GPT, якщо ви завантажили EFI.
Мерк

@Merk О, я використовую інсталятор Windows по-іншому: Shift-F10 надає вам командний рядок, і ви можете diskpart, dism /apply-imageпотім bcdboot(більше варіантів для обох тих, звичайно), щоб змусити його встановити mbr або gpt незалежно від завантаження.
Тім Г

1

Щоб доповнити відповідь Portablejim (що дуже допомогло мені перетворити з MBR в GPT, дякую!), Ви можете використовувати Boot-Repair для перевстановлення grub. Це спрацювало як принадність для відновлення завантаження після того, як я не зміг виконати крок 3, і ще раз, коли при встановленні Windows 10 параметр завантаження Linux зник.


У мене є диск тільки для Ubuntu, і використання Boot-Repair як крок 3 працював як шарм!
Раель Гугельмін Кунья
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.