Comment puis-je changer / convertir un lecteur Ubuntu MBR en un GPT et faire démarrer Ubuntu à partir d'EFI?


65

J'ai récemment mis à niveau mon PC, ma nouvelle carte mère (ASUS M5A99X EVO) utilise UEFi au lieu de l'option MBR standard.

J'ai une installation Ubuntu 11.10 que j'avais faite avec mon matériel précédent (MSI MS 7267), Ubuntu seul démarre correctement, Windows 7 également. Cependant, Windows 7 utilise le démarrage UEFI (GPT) alors qu'Ubuntu utilise le MBR.

Mes systèmes d’exploitation se trouvent dans des lecteurs distincts, de sorte que GRUB2 ne soit pas remplacé par Windows Bootloader et vice-versa, comme je l’ai déjà dit, les deux systèmes d’exploitation démarrent normalement, mais pour cela, je dois déconnecter un lecteur, dans ce cas, le lecteur Ubuntu. cela empêche le chargement de Windows.

Maintenant, ma question est la suivante: comment puis-je modifier / convertir le lecteur Ubuntu afin qu’au lieu d’utiliser MBR, il utilise GPT et autorise Windows à démarrer?.

De préférence, sans réinstaller le système entier ni perdre aucune donnée.

Et si je devais effacer le lecteur, comment puis-je installer Ubuntu en mode GPT, UEFI, quel que soit son mode ?.

J'ai utilisé gdisk pour convertir du MBR en GPT, mais maintenant Ubuntu ne peut plus démarrer, il semble que grub ne démarre tout simplement pas.

J'ai ré-installé le système d'exploitation, et le lecteur est maintenant GPT par défaut mais grup-pcest toujours utilisé à la place de grub-efi.

Comment puis-je faire démarrer Ubuntu à partir de EFI?.


Espérons que cela vous aidera à rodsbooks.com/gdisk/booting.html .
One Zero

Réponses:


113

Table des matières:

  1. Terminologie
  2. Conversion
  3. Configuration (+ Dual Boot)

Terminologie

BIOS = Système d'entrée / sortie de base

(U) EFI = Interface de micrologiciel extensible (unifiée)

MBR = Master Boot Record

GPT = table de partition GUID

UEFI / EFI / BIOS = Interface du micrologiciel

MBR / GPT = Comment l'ordinateur sait (par disque dur) quelles partitions se trouvent sur le lecteur et comment démarrer à partir de celles-ci.

UEFI / BIOS

Une interface de micrologiciel est la manière dont le micrologiciel (le logiciel à l'intérieur des périphériques) et le système d'exploitation interagissent. Il initialise le matériel, puis exécute le système d'exploitation et garantit que les pilotes du système d'exploitation peuvent utiliser le matériel.

Le BIOS est l'interface de micrologiciel habituelle utilisée. UEFI est une interface plus récente dotée de plusieurs fonctionnalités, telles que la rapidité, l’interface graphique, la possibilité de démarrer la carte réseau et d’obtenir une adresse IP. UEFI remplace EFI. (Ceux qui ont développé EFI ont vu que d’autres faisaient quelque chose de similaire et les ont donc rejoints, en apportant les idées d’EFI. C’est ensuite devenu UEFI).

Un BIOS nécessite que le chargeur de démarrage se trouve au début du disque. Cependant, un UEFI utilise une partition à cet effet et peut choisir parmi plusieurs chargeurs de démarrage à utiliser.

MBR / GPT + GRUB

Le MBR est une section de code au début du disque qui contient un chargeur de démarrage (pour le BIOS), ainsi que la carte de partition et un identifiant de disque unique.

Pour installer GRUB sur un disque avec un MBR, GRUB place un petit programme dans le MBR pour charger le reste de GRUB à partir d'une autre partie du disque. (Cela est dû au fait que le MBR est trop petit pour contenir tout le GRUB). L'espace choisi est l'espace entre le MBR et la première partition, qui existe généralement.

GPT est un standard pour la façon dont les partitons sont spécifiés. Il possède un MBR «protecteur», mais ceci est uniquement destiné à permettre aux ordinateurs basés sur le BIOS de démarrer et d’arrêter des outils ne connaissant que le MBR d’essayer de supprimer GPT. Il peut avoir

(Le mode de traitement de GPT dépend de son démarrage à l'aide d'un BIOS (ou d'un système UEFI en mode d'émulation de BIOS) ou UEFI. Je vais me concentrer sur UEFI en ce qui concerne la question.)

Les chargeurs d'amorçage pour systèmes d'exploitation sont stockés dans une partition appelée EFI System Partiton, qui est formatée (généralement) avec FAT32. C'est ici que GRUB est installé.

Conversion

Première...

Nous jouons avec la table de partition, il est donc impossible de garantir la sécurité. C'est une opération risquée. Cependant, la méthode ne doit pas perdre de données.

Les autres problèmes rencontrés: ne pas utiliser sur les Macs Apple.

Maintenant...

Vous devrez le faire sur un live CD (ou une autre installation de Linux installée sur un autre disque).

Lorsque vous traitez avec des disques GPT, vous devez utiliser un programme prenant en charge GPT. 'GPT fdisk' est un bon outil à utiliser et ce que je vais utiliser. Il peut être appelé gptfdiskou en gdiskfonction de la distribution (Ubuntu l’appelle gdisk). Parted (et Gparted) est également sensible à la technologie GPT. Vous pouvez donc l'utiliser en toute sécurité avec les disques GPT.

Pour convertir, vous devez:

  1. Redimensionnez les partitions pour les adapter aux données GPT et à la partition système EFI.
  2. Convertir le disque et ajouter des partitions
  3. Installez GRUB sur la partition système EFI.

1) Redimensionner la partition

Utilisez parted(ligne de commande) ou gparted(GUI) pour redimensionner la première et la dernière partition. La première partition devrait avoir environ 200 Mo. La dernière partition devrait avoir 1 Mo à 2 Mo (soit ce sera le cas) retirée de la fin.

2) convertir le disque

Courir

gdisk /dev/sdx

changer le périphérique que vous voulez convertir est /dev/sdx.

Il devrait vous dire qu'il convertira la table de partition.

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): 

Ajoutez maintenant une nouvelle partition en la rendant de type 'Système EFI'. Il devrait trouver l’espace libre au début (je suggère un nombre de secteur bas comme 34) et utiliser automatiquement tout l’espace libre. Les exemples utilisent un lecteur flash USB de 4 Go avec 1 partition déjà redimensionnée, comme indiqué ci-dessus.

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'

Vous devriez maintenant avoir la partition 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

Puis sortir 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.

Utilisez maintenant Gparted (ou la ligne de commande mkfs.vfat) pour formater la partition en FAT32.

3) Installer GRUB

Cela vient avec moins d’assurance que la partie précédente car je ne l’ai pas essayée moi-même.

Je ne suis pas sûr de cette étape, je vais donc deviner en utilisant les instructions de RAOF :

Pour passer à grub-efi vous voudriez

  1. Trouvez votre partition EFI; montez-le dans / boot / efi. Ajoutez ceci à / etc / fstab¹
  2. Installez le paquet grub-efi
  3. Basculez votre priorité de démarrage du BIOS d'UEFI et Legacy vers UEFI uniquement (ou une option similaire)

Vous devez déterminer la version de grub-efi à installer avec

ioreg -l -p IODeviceTree | grep firmware-abi

S'il dit EFI32installer le grub-efi-ia32paquet, s'il dit EFI64 installer le grub-efi-amd64paquet. Vous pouvez installer les packages avec

sudo apt-get install <package name>

Cela ne fonctionnera probablement que si vous avez démarré en mode EFI.

Si cela ne fonctionne pas, vous pouvez essayer ces instructions étape par étape (sous "Installer GRUB2 dans des systèmes (U) EFI") une fois grub-efiinstallé.

Configuration (+ Dual Boot)

Si les instructions de RAOK fonctionnent, vous devriez pouvoir ajouter la ligne suivante à /etc/grub.d/40_custom

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

Il suppose que Windows est reconnu comme tel hd0par GRUB. Il faudra peut-être le changer hd1pour fonctionner.

Maintenant courir

update-grub

mettre à jour le fichier de configuration.

Références et lectures complémentaires

J'ai utilisé plusieurs sources.


WOah, merci! .. mais je suis toujours bloqué à installer grub-efi sur le disque, j'ai réinstallé le système d'exploitation et transformé le disque en GPT, mais c'est toujours en utilisant grub-pc pas grub-efi.
Uri Herrera

Si vous avez l'option (étant donné que je ne possède aucun périphérique UEFI, je dois être sévèrement handicapé), vous devez démarrer le live CD en mode UEFI et non en mode BIOS / MBR.
Portablejim

Que diriez-vous de supprimer grub-pcet d’installer grub-efile CD en direct (avant de l’installer peut-être?)?
Portablejim

1
Wow, cela a fonctionné sans faille, merci! Je viens de migrer une installation parallèle de Fedora 25 et Windows 10 de MBR + BIOS vers GPT + UEFI sans rien réinstaller. J'ai effectué les étapes 1 et 2 à partir d'une clé USB Fedora 25 Live démarrée avec UEFI. Pour l'étape 3, j'ai utilisé chroot pour accéder à mon système existant à partir du système Live, comme décrit sous wiki.ubuntuusers.de/GRUB_2/Reparatur/#chroot-Methode . J'ai désinstallé grub2, installé grub2-efi et grub2-efi-modules et réinstallé explicitement shim (sans réinstaller shim, le menu Grub n'apparaît pas). Enfin ...
Philipp Hartwig

2
Pour installer GRUB, je viens de démarrer une clé USB et d'utiliser la réparation de démarrage. askubuntu.com/questions/226061/… Merci pour ce post!
Jbrock le

9

Cette réponse est incomplète. Je n'ai pas testé cela. Il est peu probable que vous mangiez vos données, mais vous avez été prévenu!

Je suppose que ce qui se passe ici est que votre BIOS démarre de manière préférentielle à partir de MBR hérités, de sorte que le vieil ancien pauvre UEFI Windows 7 est négligé.

L'un des avantages de l'UEFI est que vous ne devriez plus avoir à vous soucier de Windows écrasant GRUB; ils devraient tous les deux bien coexister sur la partition EFI. Une option serait donc de passer à grub-efi. Remarque: je ne suis pas certain de grub-eficomprendre les partitions de style MS-DOS. Je pense que oui. Si ce n'est pas le cas, le démarrage échouera et vous aurez besoin d'un LiveCD pour le récupérer. En fait, ayez un LiveCD à portée de la main quand même!

Pour passer à grub-efivous voudriez

  1. Trouvez votre partition EFI; montez dedans /boot/efi. Ajoutez ceci à /etc/fstab¹
  2. Installez le grub-efipaquet
  3. Basculez votre priorité de démarrage du BIOS de UEFI and Legacyvers UEFI only(ou une option similaire)

Cela devrait vous laisser avec une installation Ubuntu à l’amorçage UEFI. Si ce n'est pas le cas, démarrez votre fidèle LiveCD (ou le CD d'installation d'Ubuntu Alternate - l'option «Réparer un système endommagé» correspond à ce que vous voulez ☺), chrootez dans votre système et réinstallez-le grub-pc.


¹: Plus de détails pour cette étape: Vous devrez trouver ce que le noyau Linux appelle votre partition système EFI. Ce sera quelque chose comme /dev/sda2, /dev/sdb3ou such². Vous devrez ensuite créer le /boot/efirépertoire et ajouter une ligne à /etc/fstab. Si votre partition EFI est /dev/sdb3, vous ajouteriez alors la ligne suivante:

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

Une fois que vous avez exécuté, sudo mount /boot/efivous devriez trouver /boot/efiun EFIrépertoire contenant un sous-répertoire pour Windows 7.


²: Puisque vous avez plusieurs disques durs, il peut être judicieux de connaître l’UUID de la partition, qui sera stable lors de l’ajout / retrait de disques durs, alors que le /dev/sda2nom n’est pas garanti. Cela peut être fait une fois que vous avez fini de tout configurer.

Vous pouvez trouver l'UUID en cherchant dans /dev/disk/by-uuid. Par exemple, je reçois:

$ 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

Dans mon cas, je connais /dev/sda1ma partition système EFI, donc je dois

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

dans mon /etc/fstab.


Si Windows 7 démarre à partir d'EFI, il aura placé son chargeur de démarrage dans la partition EFI - vous devez donc en avoir un. Cela ne sera visible nulle part dans le système de fichiers Ubuntu standard. Vous aurez besoin de le trouver avec quelque chose comme le Disk utilityprogramme. Tant que vous n'avez pas trouvé et monté votre partition EFI, vous grub-efine pourrez plus travailler. Le chargeur de démarrage doit rester dans la partition système EFI.
RAOF

Je ne peux toujours pas démarrer Ubuntu, j’ai ajouté les lignes à fstab à l’aide d’un livecd et créé le répertoire efi dans / boot, mais cela ne semble pas avoir d’effet.
Uri Herrera

Maintenant que la partition EFI est montée, vous devez exécuter sudo grub-installet sudo update-grubinstaller et configurer GRUB sur la partition EFI. Vous devrez le faire après avoir accédé à l’installation (car il faut tout savoir sur l’installation sur votre disque dur). Si vous avez besoin d’aide, je peux ajouter des détails à la réponse.
RAOF

Oui, veuillez ajouter comment chrooter dans mon installation et réinstaller grub.
Uri Herrera

J'ai suivi les instructions ici, mais j'ai eu un problème avec la nouvelle partition EFI. Lorsque j’ai essayé d’installer un aperçu de Windows 10, le programme d’installation a donné l’erreur suivante: «Windows a détecté que la partition système EFI était au format NTFS. Formatez la partition système EFI en FAT32 et redémarrez l’installation». J'ai pu résoudre le problème en utilisant l'outil diskpart fourni avec le programme d'installation Windows, en supprimant la première partition EFI et en en créant une autre avec create partition efi. Pour plus d'informations sur diskpart, voir technet.microsoft.com/en-us/library/cc766465%28WS.10%29.aspx
Pathogen le

2

J'ai mes systèmes d'exploitation dans des lecteurs distincts, de sorte que GRUB2 ne soit pas remplacé par le chargeur d'amorçage Windows et vice-versa.

C'est l'idéal, de sorte que vous avez probablement au moins une partition principale libre dans la table des partitions.

Maintenant, ma question est la suivante: comment puis-je modifier / convertir le lecteur Ubuntu afin qu’au lieu d’utiliser MBR, il utilise GPT et autorise Windows à démarrer?

Vous n'avez pas besoin de convertir MBR en GPT pour effectuer un démarrage UEFI, il vous suffit de créer une partition FAT principale, d'installer le grub-efi-amd64-binpackage et de suivre les instructions de la section Ajouter un ESP à une installation existante avec MBR, ce qui devrait fonctionner avec les versions actuelles d'Ubuntu.


1
Réponse sous-estimée. Windows exige obstinément le démarrage de GPT + UEFI ou MBR + BIOS, mais Linux autorise le mélange et la concaténation et permet à Grub de charger en chaîne un autre disque ou de démarrer directement le démarrage de Windows 7.
Tim G

@timg Cela peut être vrai par la suite, mais malheureusement, si vous configurez Windows 10 à partir de zéro, il semble que le programme d'installation ne vous laissera pas continuer sans volume GPT, si vous avez démarré EFI.
Merk

@Merk Oh, j'utilise l'installateur Windows d'une manière différente: Shift-F10 vous donne une ligne de commande et vous pouvez diskpart, dism /apply-imageensuite bcdboot(plus d'options sur ces deux éléments bien sûr) pour le faire installer mbr ou gpt indépendamment de la façon dont vous avez démarré.
Tim G

1

Pour compléter la réponse de Portablejim (ce qui m'a vraiment aidé pour la conversion de MBR en GPT, merci!), Vous pouvez utiliser Boot-Repair pour réinstaller grub. Cela a fonctionné comme un charme pour réparer mon démarrage après l’échec de l’étape 3, et une fois encore lorsque l’installation de Windows 10 a fait disparaître l’option de démarrage Linux.


J'ai un disque réservé à Ubuntu et l'utilisation de Boot-Repair comme étape 3 a fonctionné à merveille!
Rael Gugelmin Cunha le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.