Jak mogę zmienić / przekonwertować dysk Ubuntu MBR na GPT i uruchomić Ubuntu z EFI?

65

Niedawno zaktualizowałem swój komputer, moja nowa płyta główna (ASUS M5A99X EVO) używa UEFi zamiast zwykłej opcji MBR.

Mam instalację Ubuntu 11.10, którą zrobiłem, gdy miałem poprzedni sprzęt (MSI MS 7267), sam Ubuntu uruchamia się dobrze, podobnie jak Windows 7, jednak Windows 7 używa rozruchu UEFI (GPT), podczas gdy Ubuntu używa MBR.

Mam swoje systemy operacyjne na osobnych dyskach, więc GRUB2 nie zostanie zastąpiony przez Windows Bootloader i viceversa, ponieważ powiedziałem, że oba systemy działają poprawnie same, ale aby to zrobić, muszę w tym przypadku odłączyć jeden dysk Ubuntu jako zapobiega ładowaniu systemu Windows.

Teraz moje pytanie brzmi: jak mogę zmienić / przekonwertować dysk Ubuntu, aby zamiast MBR korzystał z GPT i pozwalał na uruchomienie systemu Windows ?.

Najlepiej bez ponownej instalacji całego systemu lub utraty danych.

A jeśli miałbym wyczyścić dysk, jak mogę zainstalować Ubuntu w GPT, UEFI, cokolwiek to jest tryb ?.

Użyłem gdisk do konwersji z MBR na GPT, ale teraz Ubuntu nie może się uruchomić, wygląda na to, że grub po prostu się nie uruchamia.

Ponownie zainstalowałem system operacyjny, a dysk jest teraz domyślnie GPT, jednak grup-pcnadal jest używany grub-efi.

Jak mogę uruchomić system Ubuntu z EFI ?.

Uri Herrera
źródło
Mam nadzieję, że pomoże ci to rodsbooks.com/gdisk/booting.html .
One Zero

Odpowiedzi:

113

Spis treści:

  1. Terminologia
  2. Konwersja
  3. Konfiguracja (+ Podwójny rozruch)

Terminologia

BIOS = Podstawowy system wejścia / wyjścia

(U) EFI = (Unified) Extensible Firmware Interface

MBR = główny rekord rozruchowy

GPT = Tabela partycji GUID

UEFI / EFI / BIOS = Interfejs oprogramowania wewnętrznego

MBR / GPT = Skąd komputer wie (na dysk twardy), jakie partycje znajdują się na dysku i jak się z nich uruchomić.

UEFI / BIOS

Firmware Interface to sposób, że firmware (oprogramowanie wewnątrz urządzenia) i system operacyjny interakcji. Inicjuje sprzęt, a następnie uruchamia system operacyjny i zapewnia, że ​​sterowniki systemu operacyjnego mogą obsługiwać sprzęt.

BIOS był zwykłym interfejsem oprogramowania układowego, który został użyty. UEFI to nowszy interfejs, który ma kilka funkcji, takich jak szybsze działanie, posiadanie GUI oraz możliwość uruchomienia karty sieciowej i uzyskania adresu IP. UEFI zastępuje EFI. (Ci, którzy rozwijali EFI, zauważyli, że inni robili coś podobnego, więc dołączyli do nich, niosąc ze sobą pomysły EFI. To stało się wtedy UEFI).

BIOS wymaga, aby bootloader znajdował się na początku dysku, jednak UEFI używa do tego partycji i może wybierać spośród wielu programów ładujących.

MBR / GPT + GRUB

MBR jest fragment kodu na początku dysku, który zawiera program ładujący (dla BIOS), a także mapę partycji oraz unikalny identyfikator dysku.

Aby zainstalować GRUB na dysku z MBR, GRUB umieszcza mały program w MBR, aby załadować resztę GRUB z innej części dysku. (Dzieje się tak, ponieważ MBR jest zbyt mały, aby pomieścić cały GRUB). Wybrane miejsce to odstęp między MBR a pierwszą partycją, która zwykle istnieje.

GPT jest standardem określania partitonów. Ma „ochronny” MBR, ale służy to tylko do umożliwienia komputerom z systemem BIOS uruchamiania i zatrzymywania narzędzi, które wiedzą tylko o MBR przed próbą wyrzucenia GPT. Może mieć

(Sposób obsługi GPT zależy od tego, czy uruchamia się przy użyciu systemu BIOS (lub systemu UEFI w trybie emulacji BIOS), czy UEFI. Skoncentruję się na UEFI, ponieważ odnosi się do pytania).

Programy ładujące dla systemów operacyjnych są przechowywane w części o nazwie Partio systemu EFI, która jest sformatowana (zwykle) za pomocą FAT32. Tutaj instalowany jest GRUB.

Konwersja

Pierwszy...

Bawimy się tabelą partycji, więc zagwarantowane bezpieczeństwo nie jest możliwe. To ryzykowna operacja. Jednak metoda nie powinna tracić danych.

Inni spotykają się z tym: nie używaj na komputerach Apple Mac.

Teraz...

Musisz to zrobić na Live CD (lub innej instalacji Linuksa zainstalowanej na innym dysku).

W przypadku dysków GPT musimy używać programu obsługującego GPT. „GPT fdisk” to dobre narzędzie do użycia i tego, czego będę używać. Można go wywołać gptfdisklub w gdiskzależności od dystrybucji (Ubuntu nazywa to gdisk). Parted (i Gparted) jest również świadomy GPT, więc można go bezpiecznie używać z dyskami GPT.

Aby dokonać konwersji, musisz:

  1. Zmień rozmiar partycji, aby dopasować dane GPT i partycję systemową EFI.
  2. Konwertuj dysk i dodaj partycje
  3. Zainstaluj GRUB na partycji systemowej EFI.

1) Zmień rozmiar partycji

Użyj parted(wiersza polecenia) lub gparted(GUI), aby zmienić rozmiar pierwszej i ostatniej partycji. Pierwsza partycja powinna mieć około 200 MB przed nią, a ostatnia partycja powinna mieć od 1 MB do 2 MB (każda z nich zrobi) zdjęta z końca.

2) Konwertuj dysk

Biegać

gdisk /dev/sdx

zmienia się urządzenie, które chcesz przekonwertować /dev/sdx.

Powinien ci powiedzieć, że przekształci tabelę 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): 

Teraz dodaj nową partycję, czyniąc ją typu „system EFI”. Powinien znaleźć wolne miejsce na początku (sugeruję niski numer sektora, np. 34) i automatycznie wykorzystać całe wolne miejsce. W przykładach wykorzystano dysk flash USB o pojemności 4 GB z już zainstalowaną 1 partycją, o zmienionym rozmiarze zgodnie z powyższym opisem.

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'

Powinieneś teraz mieć partycję 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

Następnie wyjdź 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.

Teraz użyj Gparted (lub wiersza polecenia mkfs.vfat), aby sformatować partycję jako FAT32.

3) Zainstaluj GRUB

Daje to mniej pewności, że poprzednia część, ponieważ sam tego nie próbowałem.

Nie jestem pewien co do tego kroku, więc zgaduję, używając instrukcji RAOF :

Aby przełączyć się na grub-efi, chcesz

  1. Znajdź swoją partycję EFI; zamontuj go w / boot / efi. Dodaj to do / etc / fstab¹
  2. Zainstaluj pakiet grub-efi
  3. Zmień priorytet rozruchu systemu BIOS z UEFI i Legacy tylko na UEFI (lub podobną opcję)

Powinieneś dowiedzieć się, z którą wersją grub-efi zainstalować

ioreg -l -p IODeviceTree | grep firmware-abi

Jeśli mówi, EFI32zainstaluj grub-efi-ia32pakiet, jeśli mówi, EFI64 zainstaluj grub-efi-amd64pakiet. Możesz zainstalować pakiety za pomocą

sudo apt-get install <package name>

Prawdopodobnie zadziała to tylko wtedy, gdy uruchomiłeś system w trybie EFI.

Jeśli to nie działa, możesz wypróbować te instrukcje krok po kroku (w sekcji „Zainstaluj GRUB2 w systemach (U) EFI”) po grub-efizainstalowaniu.

Konfiguracja (+ Dual Boot)

Jeśli instrukcje RAOK działają, powinieneś być w stanie dodać następujący wiersz /etc/grub.d/40_custom

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

Zakłada się, że system Windows jest rozpoznawany hd0przez GRUB. Może wymagać zmiany na hd1, aby działał.

Teraz biegnij

update-grub

zaktualizować plik konfiguracyjny.

Referencje i dalsze czytanie

Użyłem kilku źródeł.

Portablejim
źródło
O tak, dziękuję! .. ale nadal utknąłem w instalacji grub-efi na dysku, przeinstalowałem system operacyjny i utworzyłem dysk GPT, ale nadal używam grub-pc, a nie grub-efi.
Uri Herrera,
Jeśli masz taką opcję (ponieważ nie posiadam żadnych urządzeń UEFI, jestem poważnie sparaliżowany mogąc pomóc), musisz uruchomić Live CD w trybie UEFI, a nie w BIOS / MBR.
Portablejim,
Co powiesz na usunięcie grub-pci instalację grub-efina płycie CD na żywo (może przed instalacją?)?
Portablejim,
1
Wow, działało bezbłędnie, dziękuję! Właśnie przeprowadziłem migrację równoległej instalacji Fedory 25 i Windows 10 z MBR + BIOS do GPT + UEFI bez ponownej instalacji. Wykonałem kroki 1 i 2 z pamięci USB Live Fedory 25 uruchomionej za pomocą UEFI. W kroku 3 użyłem chroot, aby uzyskać dostęp do mojego istniejącego systemu z systemu Live, jak opisano w wiki.ubuntuusers.de/GRUB_2/Reparatur/#chroot-Methode . Odinstalowałem grub2, zainstalowałem grub2-efi i grub2-efi-moduły i jawnie ponownie zainstalowałem podkładkę (bez ponownej instalacji podkładki, menu Grub nie pojawiłoby się). Wreszcie ...
Philipp Hartwig
2
Aby zainstalować GRUB, właśnie uruchomiłem live USB i użyłem naprawy bootowania. askubuntu.com/questions/226061/... Dzięki za ten post!
jbrock
9

Ta odpowiedź jest niepełna; Nie testowałem tego. Jest mało prawdopodobne, aby zjadł twoje dane, ale zostałeś ostrzeżony!

Zgaduję, że dzieje się tutaj to, że twój BIOS preferencyjnie uruchamia się ze starszego MBR, więc biedny stary UEFI Windows 7 jest pomijany.

Jedną z fajnych rzeczy w UEFI jest to, że nie powinieneś już martwić się nadpisaniem GRUB-a przez Windows; oba powinny ładnie współistnieć na partycji EFI. Jedną z opcji byłoby zatem przejście na grub-efi. Uwaga: Nie jestem pewien, czy grub-efirozumie partycje w stylu MSDOS; Myślę , że tak. Jeśli tak się nie stanie, uruchomienie się nie powiedzie i będziesz potrzebować LiveCD do odzyskania. Tak czy inaczej, miej pod ręką LiveCD!

Aby przełączyć się na grub-efito, co chcesz

  1. Znajdź swoją partycję EFI; zamontuj to /boot/efi. Dodaj to do /etc/fstab¹
  2. Zainstaluj grub-efipakiet
  3. Zmień priorytet rozruchu systemu BIOS z UEFI and Legacyna UEFI only(lub podobną opcję)

To powinno dać ci instalację Ubuntu z systemem UEFI. Jeśli tak się nie stanie, uruchom ponownie zaufaną płytę LiveCD (lub alternatywną płytę instalacyjną Ubuntu Alternative CD - szukasz opcji „Napraw uszkodzony system”), chroot w systemie i zainstaluj grub-pcponownie.


¹: Więcej szczegółów dla tego kroku: Musisz znaleźć to, co jądro Linux nazywa twoją partycją systemową EFI. To będzie coś /dev/sda2, /dev/sdb3lub such². Następnie musisz utworzyć /boot/efikatalog i dodać wiersz /etc/fstab. Jeśli twoja partycja EFI to /dev/sdb3, dodaj następujący wiersz:

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

Po uruchomieniu sudo mount /boot/efipowinieneś znaleźć, który /boot/efizawiera EFIkatalog z podkatalogiem dla Windows 7.


²: Ponieważ masz wiele dysków twardych, dobrym pomysłem może być znalezienie identyfikatora UUID partycji, ponieważ będzie on stabilny podczas dodawania / usuwania dysków twardych, podczas gdy /dev/sda2nazwa nie może się zmienić. Można to jednak zrobić po zakończeniu konfiguracji wszystkiego innego.

Możesz znaleźć UUID, zaglądając do /dev/disk/by-uuid. Na przykład otrzymuję:

$ 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

W moim przypadku wiem, że /dev/sda1to moja partycja systemowa EFI, więc mam

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

w moim /etc/fstab.

RAOF
źródło
Jeśli Windows 7 uruchamia się z EFI, to umieścił swój bootloader na partycji EFI - więc musisz mieć jeden ☺. Będzie to nie być widoczne w każdym miejscu standardowego systemu plików Ubuntu. Musisz to znaleźć w Disk utilityprogramie takim jak program. Dopóki nie znajdziesz i nie zainstalujesz partycji EFI, grub-efinie będzie ona w stanie działać - musi ona włożyć bootloader na partycję systemową EFI.
RAOF,
Nadal nie mogę uruchomić się z Ubuntu, dodałem linie do fstab za pomocą livecd, a także utworzyłem katalog efi w / boot, ale wydaje się, że nie ma to żadnego wpływu.
Uri Herrera,
Teraz, gdy masz już zamontowaną partycję EFI, musisz uruchomić sudo grub-installi sudo update-grubaby faktycznie zainstalować i skonfigurować GRUB na partycji EFI. Musisz to zrobić po chrootowaniu w instalacji (ponieważ musi wiedzieć o instalacji na dysku twardym). Jeśli potrzebujesz pomocy, mogę dodać szczegóły do ​​odpowiedzi.
RAOF,
Tak, dodaj sposób chroot do mojej instalacji i zainstaluj ponownie grub.
Uri Herrera,
Postępowałem zgodnie z instrukcjami tutaj, ale miałem problem z nową partycją EFI. Kiedy próbowałem zainstalować podgląd systemu Windows 10, instalator dał następujący błąd: „System Windows wykrył, że partycja systemowa EFI została sformatowana jako NTFS. Sformatuj partycję systemową EFI jako FAT32 i uruchom ponownie instalację” Udało mi się rozwiązać problem za pomocą narzędzie diskpart, które jest dostarczane z instalatorem systemu Windows, poprzez usunięcie pierwszej partycji EFI i utworzenie innej za pomocą create partition efi. Aby uzyskać informacje na temat diskpart, zobacz technet.microsoft.com/en-us/library/cc766465%28WS.10%29.aspx
Pathogen
2

Mam swoje systemy operacyjne na osobnych dyskach, więc GRUB2 nie zostanie zastąpiony przez Windows Bootloader i viceversa

To idealne rozwiązanie, więc prawdopodobnie będziesz mieć przynajmniej jedną partycję podstawową wolną w tabeli partycji.

Teraz moje pytanie brzmi: jak mogę zmienić / przekonwertować dysk Ubuntu, aby zamiast MBR używać GPT i pozwalać na uruchomienie systemu Windows?

Nie musisz konwertować MBR na GPT, aby uruchomić UEFI, po prostu utwórz podstawową partycję FAT, zainstaluj grub-efi-amd64-binpakiet i postępuj zgodnie z instrukcjami w Dodaj ESP do istniejącej instalacji z MBR, która powinna współpracować z aktualnymi wersjami Ubuntu.

LiveWireBT
źródło
1
Niedoceniana odpowiedź. Windows uparcie wymaga rozruchu GPT + UEFI lub MBR + BIOS, ale Linux pozwala na mieszanie i dopasowywanie, a grub może załadować inny dysk lub bezpośrednio uruchomić bootmgr Windows 7.
Tim G
@timg Może to być prawda po fakcie, ale niestety, jeśli konfigurujesz system Windows 10 od zera, wygląda na to, że instalator nie pozwoli ci kontynuować bez woluminu GPT, jeśli uruchomiłeś EFI.
Merk
@Merk Aha, używam Instalator Windows inny sposób: Shift-F10 daje wiersz polecenia i można diskpart, dism /apply-image, a następnie bcdboot(więcej opcji na obu tych oczywiście), aby zainstalować MBR lub GPT niezależnie od sposobu rozruchu.
Tim G
1

Aby uzupełnić odpowiedź Portablejim (która naprawdę pomogła mi w konwersji z MBR na GPT, dzięki!), Możesz użyć Boot-Repair do ponownej instalacji grub. Naprawienie rozruchu działało jak urok, gdy nie udało mi się ukończyć kroku 3 i jeszcze raz, gdy instalacja systemu Windows 10 spowodowała zniknięcie opcji rozruchu systemu Linux.

Jan
źródło
Mam dysk tylko do Ubuntu i korzystam z Boot-Repair, ponieważ krok 3 działał jak urok!
Rael Gugelmin Cunha