¿Cómo puedo cambiar / convertir una unidad MBR de Ubuntu a una GPT y hacer que Ubuntu arranque desde EFI?

65

Recientemente he actualizado mi PC, mi nueva placa base (ASUS M5A99X EVO) usa UEFi en lugar de la opción MBR normal.

Tengo una instalación de Ubuntu 11.10 que hice cuando tenía mi hardware anterior (MSI MS 7267), Ubuntu solo arranca bien, y también Windows 7, sin embargo, Windows 7 usa el arranque UEFI (GPT) mientras que Ubuntu usa MBR.

Tengo mis sistemas operativos en unidades separadas, por lo que GRUB2 no será reemplazado por el cargador de arranque de Windows y viceversa, como dije que ambos sistemas operativos arrancan bien por sí mismos, pero para hacerlo tengo que desconectar una unidad en este caso, la unidad Ubuntu como evita que Windows se cargue.

Ahora mi pregunta es, ¿cómo puedo cambiar / convertir la unidad de Ubuntu para que en lugar de usar MBR use GPT y permita que Windows arranque?

Preferiblemente sin reinstalar todo el sistema ni perder ningún dato.

Y si tuviera que borrar el disco, ¿cómo puedo instalar Ubuntu en GPT, UEFI, sea cual sea el modo?

He usado gdisk para convertir de MBR a GPT, pero ahora Ubuntu no puede arrancar parece que grub simplemente no se inicia.

He reinstalado el sistema operativo, y la unidad es GPT ahora de forma predeterminada, sin embargo, grup-pctodavía se está utilizando en lugar de grub-efi.

¿Cómo puedo hacer que Ubuntu arranque desde EFI?

Uri Herrera
fuente
Esperemos que esto te ayude a rodsbooks.com/gdisk/booting.html .
One Zero

Respuestas:

113

Tabla de contenido:

  1. Terminología
  2. Mudado
  3. Configuración (+ arranque dual)

Terminología

BIOS = Sistema básico de entrada / salida

(U) EFI = (Unificado) Interfaz de firmware extensible

MBR = Registro de arranque maestro

GPT = Tabla de particiones GUID

UEFI / EFI / BIOS = interfaz de firmware

MBR / GPT = Cómo la computadora sabe (por disco duro) qué particiones hay en el disco y cómo arrancar desde ellas.

UEFI / BIOS

Una interfaz de firmware es la forma en que interactúan el firmware (el software dentro de los dispositivos) y el sistema operativo. Inicializa el hardware, luego ejecuta el sistema operativo y garantiza que los controladores del sistema operativo puedan operar el hardware.

El BIOS ha sido la interfaz de firmware habitual que se ha utilizado. La UEFI es una interfaz más nueva que tiene varias características, como ser más rápida, tener una GUI y poder iniciar la tarjeta de red y obtener una dirección IP. UEFI reemplaza a EFI. (Los que desarrollaron EFI vieron que había otros haciendo algo similar y se unieron a ellos, trayendo las ideas de EFI con ellos. Esto se convirtió en UEFI).

Un BIOS requiere que el cargador de arranque esté al inicio del disco, sin embargo, un UEFI usa una partición para esto y puede elegir entre múltiples cargadores de arranque para usar.

MBR / GPT + GRUB

El MBR es una sección de código al comienzo del disco que contiene un cargador de arranque (para el BIOS), así como el mapa de partición y un identificador de disco único.

Para instalar GRUB en un disco con un MBR, GRUB coloca un pequeño programa en el MBR para cargar el resto de GRUB desde otra parte del disco. (Esto se hace porque el MBR es demasiado pequeño para contener todo GRUB). El espacio que se elige es el espacio entre el MBR y la primera partición, que generalmente existe.

GPT es un estándar sobre cómo se especifican las particiones. Tiene un MBR 'protector', sin embargo, esto es solo para permitir que las computadoras basadas en BIOS arranquen y detengan herramientas que solo saben acerca de MBR al intentar destruir la GPT. Puede tener

(La forma en que se maneja GPT depende de si se está iniciando utilizando un BIOS (o un sistema UEFI en modo de emulación de BIOS) o UEFI. Me centraré en UEFI en lo que respecta a la pregunta).

Los cargadores de arranque para sistemas operativos se almacenan en una partición llamada EFI System Partiton, que está formateada (generalmente) con FAT32. Aquí es donde está instalado GRUB.

Mudado

Primero...

Estamos jugando con la mesa de partición, por lo que la seguridad garantizada no es posible. Es una operación arriesgada. Sin embargo, el método no debe perder datos.

Otros se encuentran con esto: no lo use en Apple Macs.

Ahora...

Deberá hacer esto en un CD en vivo (u otra instalación de Linux instalada en un disco diferente).

Cuando se trata de discos GPT, necesitamos usar un programa compatible con GPT. 'GPT fdisk' es una buena herramienta para usar y lo que usaré. Se puede llamar gptfdisko gdiskdependiendo de la distribución (Ubuntu lo llama gdisk). Parted (y Gparted) también es compatible con GPT, por lo que se puede usar de forma 'segura' con discos GPT.

Para convertir necesitas:

  1. Cambie el tamaño de las particiones para que se ajusten a los datos GPT y a la partición del sistema EFI.
  2. Convierte el disco y agrega particiones
  3. Instale GRUB en la partición del sistema EFI.

1) Cambiar el tamaño de la partición

Use parted(línea de comando) o gparted(GUI) para cambiar el tamaño de la primera y la última partición. La primera partición debe tener aproximadamente 200MiB antes que ella, y la última partición debe tener 1MiB a 2MiB (cualquiera de las dos tendrá) al final.

2) Convertir el disco

correr

gdisk /dev/sdx

cambiar el dispositivo que quieres convertir es /dev/sdx.

Debería decirle que convertirá la tabla de partición.

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

Ahora agregue una nueva partición, haciéndola del tipo 'sistema EFI'. Debería encontrar el espacio libre al principio (sugiero un número de sector bajo como 34) y usar automáticamente todo el espacio libre. Los ejemplos utilizan una unidad flash USB de 4 GB con 1 partición ya allí, redimensionada según lo anterior.

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'

Ahora debería tener la partición 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

Luego salga 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.

Ahora use Gparted (o línea de comandos mkfs.vfat) para formatear la partición como FAT32.

3) Instalar GRUB

Esto viene con menos garantías de que la parte anterior ya que no lo he probado yo mismo.

No estoy seguro de este paso, así que supongo que usaré las instrucciones de RAOF :

Para cambiar a grub-efi, querrás

  1. Encuentra tu partición EFI; móntelo en / boot / efi. Agregue esto a / etc / fstab¹
  2. Instale el paquete grub-efi
  3. Cambie la prioridad de arranque de su BIOS de UEFI y Legacy a UEFI solamente (o una opción similar)

Debe averiguar con qué versión de grub-efi instalar

ioreg -l -p IODeviceTree | grep firmware-abi

Si dice EFI32instalar el grub-efi-ia32paquete, si dice EFI64 instalar el grub-efi-amd64paquete. Puedes instalar los paquetes con

sudo apt-get install <package name>

Esto probablemente solo funcionará si ha arrancado en modo EFI.

Si no funciona, puede probar estas instrucciones paso a paso (en "Instalar GRUB2 en sistemas (U) EFI") una vez que grub-efiesté instalado.

Configuración (+ arranque dual)

Si las instrucciones de RAOK funcionan, debería poder agregar la siguiente línea a /etc/grub.d/40_custom

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

Se supone que Windows es reconocido hd0por GRUB. Es posible que deba cambiarse para hd1que funcione.

Ahora corre

update-grub

para actualizar el archivo de configuración.

Referencias y lecturas adicionales

Usé varias fuentes.

Portablejim
fuente
¡Ay, gracias! ... pero todavía estoy atascado en la instalación de grub-efi en la unidad, he reinstalado el sistema operativo e hice la unidad GPT, pero todavía está usando grub-pc, no grub-efi.
Uri Herrera
Si tiene la opción (ya que no soy propietario de ningún dispositivo UEFI, no puedo ayudarlo), debe iniciar el CD en vivo en modo UEFI y no en modo BIOS / MBR.
Portablejim
¿Qué tal quitar grub-pce instalar grub-efimientras está en el Live CD (quizás antes de instalar?)
Portablejim
1
Wow, esto funcionó a la perfección, ¡gracias! Acabo de migrar una instalación paralela de Fedora 25 y Windows 10 de MBR + BIOS a GPT + UEFI sin reinstalar nada. He realizado los pasos 1 y 2 desde una memoria USB Live de Fedora 25 arrancada con UEFI. Para el paso 3, utilicé chroot para acceder a mi sistema existente desde el sistema Live como se describe en wiki.ubuntuusers.de/GRUB_2/Reparatur/#chroot-Methode . Desinstalé grub2, instalé grub2-efi y grub2-efi-modules y reinstalé explícitamente shim (sin reinstalar shim, el menú Grub no aparecería). Finalmente ...
Philipp Hartwig
2
Para instalar GRUB, acabo de arrancar un USB en vivo y utilicé la reparación de arranque. askubuntu.com/questions/226061/… ¡ Gracias por esta publicación!
jbrock
9

Esta respuesta es incompleta; No he probado nada de esto. Es poco probable que comas ninguno de tus datos, ¡pero te han advertido!

Lo que supongo que está sucediendo aquí es que su BIOS se está iniciando preferentemente desde MBR heredado, por lo que el viejo UEFI Windows 7 se está pasando por alto.

Una de las cosas buenas de UEFI es que ya no debería tener que preocuparse de que Windows sobrescriba GRUB; ambos deberían coexistir bien en la partición EFI. Por lo tanto, una opción sería cambiar a grub-efi. Nota: No estoy seguro si grub-efientiende particiones de estilo MSDOS; Yo creo que lo hace. Si no es así, esto no se iniciará y necesitará un LiveCD para recuperarse. De hecho, ¡tenga un LiveCD a mano de todos modos!

Para cambiar a grub-efidesearías

  1. Encuentra tu partición EFI; montarlo en /boot/efi. Agrega esto a /etc/fstab¹
  2. Instala el grub-efipaquete
  3. Cambie la prioridad de arranque de su BIOS de UEFI and Legacya UEFI only(o una opción similar)

Eso debería dejarte con una instalación de Ubuntu con arranque UEFI. Si no es así, inicie su LiveCD de confianza (o el CD de instalación alternativo de Ubuntu: la opción "Arreglar un sistema roto" es lo que está buscando ☺), inicie sesión en su sistema e instálelo grub-pcnuevamente.


¹: Más detalles para este paso: necesitará encontrar lo que el kernel de Linux llama su partición del sistema EFI. Esto será algo así como /dev/sda2, /dev/sdb3o such². Luego deberá crear el /boot/efidirectorio y agregarle una línea /etc/fstab. Si su partición EFI es /dev/sdb3, entonces agregaría la siguiente línea:

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

Una vez que ejecute sudo mount /boot/efi, debería encontrar que /boot/eficontiene un EFIdirectorio, con un subdirectorio para Windows 7.


²: Dado que tiene varios discos duros, puede ser una buena idea averiguar el UUID de la partición, ya que será estable si se agregan o quitan discos duros, mientras /dev/sda2que no se garantiza que el nombre no cambie. Sin embargo, esto se puede hacer una vez que haya terminado de configurar todo lo demás.

Puede encontrar el UUID buscando /dev/disk/by-uuid. Por ejemplo, obtengo:

$ 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

En mi caso, sé que /dev/sda1es mi partición del sistema EFI, así que tengo

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

en mi /etc/fstab.

RAOF
fuente
Si Windows 7 se inicia desde EFI, habrá colocado su gestor de arranque en la partición EFI, por lo que debe tener uno ☺. Esto no será visible en ninguna parte del sistema de archivos estándar de Ubuntu. Tendrá que encontrarlo con algo como el Disk utilityprograma. Hasta que haya encontrado y montado su partición EFI, grub-efino podrá funcionar: debe pegar su gestor de arranque en la partición del sistema EFI.
RAOF
Todavía no puedo arrancar en Ubuntu, agregué las líneas a fstab usando un livecd y también creé el directorio efi en / boot, pero no parece tener ningún efecto.
Uri Herrera
Ahora que tiene la partición EFI montada, debe ejecutar sudo grub-instally sudo update-grubpara poder instalar y configurar GRUB en la partición EFI. Tendrá que hacer esto después de iniciar la instalación (porque necesita saber cosas sobre la instalación en su disco duro). Si necesita ayuda para hacerlo, puedo agregar detalles a la respuesta.
RAOF
Sí, por favor agregue cómo hacer chroot en mi instalación y reinstale grub.
Uri Herrera
Seguí las instrucciones aquí, pero tuve un problema con la nueva partición EFI. Cuando intenté instalar una vista previa de Windows 10, el instalador me dio este error: "Windows detectó que la partición del sistema EFI estaba formateada como NTFS. Formatee la partición del sistema EFI como FAT32 y reinicie la instalación" Pude resolver el problema usando la herramienta diskpart que viene con el instalador de Windows, eliminando la primera partición EFI y creando otra con create partition efi. Para obtener información sobre diskpart, consulte technet.microsoft.com/en-us/library/cc766465%28WS.10%29.aspx
Pathogen el
2

Tengo mis sistemas operativos en unidades separadas, por lo que GRUB2 no será reemplazado por Windows Bootloader y viceversa

Eso es ideal, por lo que es probable que tenga al menos una partición primaria libre en la tabla de particiones.

Ahora mi pregunta es, ¿cómo puedo cambiar / convertir la unidad de Ubuntu para que en lugar de usar MBR use GPT y permita que Windows arranque?

No tiene que convertir MBR a GPT para iniciar UEFI, solo cree una partición FAT primaria, instale el grub-efi-amd64-binpaquete y siga las instrucciones en Agregar un ESP a una instalación existente con MBR que debería funcionar con las versiones actuales de Ubuntu.

LiveWireBT
fuente
1
Respuesta subestimada. Windows requiere obstinadamente GPT + UEFI o MBR + BIOS de arranque, pero Linux permite mezclar y combinar y grub puede cargar en cadena otro disco o iniciar bootmgr de Windows 7 directamente.
Tim G
@timg Esto puede ser cierto después del hecho, pero desafortunadamente si está configurando Windows 10 desde cero, parece que el instalador no le permitirá continuar sin un volumen GPT, si inició EFI.
Merk
@Merk Oh, yo uso el programa de instalación de Windows de una manera diferente: Shift-F10 le da una línea de comandos y se puede diskpart, dism /apply-imagey luego bcdboot(más opciones en ambas cosas, por supuesto) para que sea instalar MBR o GPT, independientemente de cómo se ha arrancado.
Tim G
1

Para complementar la respuesta de Portablejim (que realmente me ayudó a convertir de MBR a GPT, ¡gracias!), Puede usar Boot-Repair para reinstalar grub. Funcionó de maravilla para reparar mi arranque después de que no pude completar el paso 3, y una vez más cuando la instalación de Windows 10 hizo que la opción de arranque de Linux desapareciera.

John
fuente
¡Tengo un disco solo para Ubuntu y usar Boot-Repair como paso 3 funcionó de maravilla!
Rael Gugelmin Cunha