Como posso alterar / converter uma unidade MBR do Ubuntu em uma GPT e iniciar o Ubuntu a partir da EFI?

65

Recentemente, atualizei meu PC, minha nova placa-mãe (ASUS M5A99X EVO) usa UEFi em vez da opção MBR comum.

Eu tenho uma instalação do Ubuntu 11.10 que fiz quando tinha meu hardware anterior (MSI MS 7267), apenas o Ubuntu inicializa bem, e o Windows 7 também; no entanto, o Windows 7, no entanto, o Windows 7 está usando a inicialização UEFI (GPT), enquanto o Ubuntu está usando o MBR.

Eu tenho meus sistemas operacionais em unidades separadas, para que o GRUB2 não seja substituído pelo Windows Bootloader e vice-versa, como eu disse que os dois sistemas operacionais inicializam bem por conta própria, mas para fazer isso, preciso desconectar uma unidade, neste caso, a unidade Ubuntu como impede que o Windows seja carregado.

Agora, minha pergunta é: como posso alterar / converter a unidade do Ubuntu para que, em vez de usar o MBR, use GPT e permita que o Windows inicialize ?.

De preferência sem reinstalar o sistema inteiro ou perder dados.

E se eu limpasse a unidade, como posso instalar o Ubuntu na GPT, UEFI, qualquer que seja o modo?

Eu usei o gdisk para converter de MBR para GPT, mas agora o Ubuntu não pode inicializar parece que o grub simplesmente não inicia.

Eu reinstalei o sistema operacional e a unidade agora é GPT por padrão, mas grup-pcainda está sendo usada em vez de grub-efi.

Como posso fazer o Ubuntu inicializar a partir da EFI ?.

Uri Herrera
fonte
Espero que isso ajude você a rodsbooks.com/gdisk/booting.html .
Um Zero

Respostas:

113

Índice:

  1. Terminologia
  2. Convertendo
  3. Configurando (+ Inicialização dupla)

Terminologia

BIOS = Sistema básico de entrada / saída

(U) EFI = Interface de firmware extensível (unificada)

MBR = Registro mestre de inicialização

Tabela de partição GPT = GUID

UEFI / EFI / BIOS = Interface de Firmware

MBR / GPT = Como o computador sabe (por disco rígido) quais partições estão na unidade e como inicializá-las.

UEFI / BIOS

Uma interface de firmware é a maneira como o firmware (o software dentro dos dispositivos) e o sistema operacional interagem. Inicializa o hardware, executa o sistema operacional e garante que os drivers do sistema operacional possam operar o hardware.

O BIOS tem sido a interface de firmware usual usada. O UEFI é uma interface mais nova que possui vários recursos, como ser mais rápido, ter uma GUI e poder iniciar a placa de rede e obter um endereço IP. UEFI substitui EFI. (Aqueles que desenvolviam a EFI viram que havia outras pessoas fazendo algo semelhante e, assim, juntaram-se a elas, trazendo as idéias da EFI com elas. Isso se tornou a UEFI).

Um BIOS exige que o carregador de inicialização esteja no início do disco, no entanto, um UEFI usa uma partição para isso e pode escolher entre vários carregadores de inicialização para usar.

MBR / GPT + GRUB

O MBR é uma seção de código no início do disco que contém um carregador de inicialização (para o BIOS), além do mapa da partição e um identificador de disco exclusivo.

Para instalar o GRUB em um disco com um MBR, o GRUB coloca um pequeno programa no MBR para carregar o restante do GRUB de outra parte do disco. (Isso é feito porque o MBR é muito pequeno para conter todo o GRUB). O espaço escolhido é o espaço entre o MBR e a primeira partição, que geralmente existe.

GPT é um padrão para como as partições são especificadas. Ele possui um MBR 'protetor', no entanto, isso é apenas para permitir que computadores baseados no BIOS inicializem e parem ferramentas que apenas conhecem o MBR de tentarem lixeira na GPT. Pode ter

(O modo como o GPT é tratado depende se está inicializando usando um BIOS (ou sistema UEFI no modo de emulação de BIOS) ou UEFI. Vou me concentrar no UEFI no que se refere à questão).

Os carregadores de inicialização para sistemas operacionais são armazenados em uma seção chamada EFI System Partiton, que é formatada (geralmente) com FAT32. É aqui que o GRUB está instalado.

Convertendo

Primeiro...

Estamos brincando com a tabela de partições, portanto, segurança garantida não é possível. É uma operação arriscada. No entanto, o método não deve perder dados.

Outros que se deparam com isso: Não use em Apple Macs.

Agora...

Você precisará fazer isso em um CD ao vivo (ou em outra instalação do linux instalada em um disco diferente.)

Ao lidar com discos GPT, precisamos usar um programa compatível com GPT. 'GPT fdisk' é uma boa ferramenta para usar e o que vou usar. Pode ser chamado gptfdiskou gdiskdependendo da distribuição (o Ubuntu chama gdisk). O Parted (e o Gparted) também reconhece a GPT, portanto, pode 'ser usado com segurança' com discos da GPT.

Para converter você precisa:

  1. Redimensione as partições para ajustar os dados da GPT e a partição do sistema EFI.
  2. Converta o disco e adicione partições
  3. Instale a partição do sistema GRUB para EFI.

1) Redimensionar partição

Use parted(linha de comando) ou gparted(GUI) para redimensionar a primeira e a última partição. A primeira partição deve ter cerca de 200MiB antes e a última partição deve ter 1MiB a 2MiB (qualquer um servirá) retirado do final.

2) Converta o disco

Corre

gdisk /dev/sdx

alterar o dispositivo que você deseja converter é /dev/sdx.

Ele deve informar que ele converterá a tabela de partições.

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

Agora adicione uma nova partição, tornando-a do tipo 'sistema EFI'. Ele deve encontrar o espaço livre no início (sugiro um número baixo de setor como 34) e usar automaticamente todo o espaço livre. Os exemplos usam uma unidade flash USB de 4 GB com uma partição já existente, redimensionada conforme acima.

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'

Agora você deve ter a partição 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

Então saia 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.

Agora use Gparted (ou linha de comando mkfs.vfat) para formatar a partição como FAT32.

3) Instale o GRUB

Isso vem com menos garantias de que a parte anterior, como eu ainda não tentei.

Não tenho certeza sobre esta etapa, portanto, acho que usando as instruções do RAOF :

Para mudar para o grub-efi, você deseja

  1. Encontre sua partição EFI; monte-o em / boot / efi. Adicione isso ao / etc / fstab¹
  2. Instale o pacote grub-efi
  3. Alterne sua prioridade de inicialização do BIOS de UEFI e Legacy para somente UEFI (ou uma opção semelhante)

Você deve descobrir qual versão do grub-efi instalar com

ioreg -l -p IODeviceTree | grep firmware-abi

Se ele diz EFI32instalar o grub-efi-ia32pacote, se ele diz EFI64 instalar o grub-efi-amd64pacote. Você pode instalar os pacotes com

sudo apt-get install <package name>

Provavelmente, isso só funcionará se você inicializou no modo EFI.

Se não funcionar, você pode tentar estas instruções passo a passo (em "Instalar o GRUB2 em sistemas (U) EFI") depois de grub-efiinstalado.

Configurando (+ Dual Boot)

Se as instruções do RAOK funcionarem, você poderá adicionar a seguinte linha ao /etc/grub.d/40_custom

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

Parte do princípio que o Windows é reconhecido hd0pelo GRUB. Pode ser necessário mudar para hd1para funcionar.

Agora corra

update-grub

para atualizar o arquivo de configuração.

Referências e leituras adicionais

Eu usei várias fontes.

Portablejim
fonte
Bem, obrigado! .. mas ainda estou preso na instalação do grub-efi na unidade, reinstalei o SO e fiz o GPT da unidade, mas ele ainda está usando o grub-pc e não o grub-efi.
Uri Herrera
Se você tiver a opção (como eu não possuo nenhum dispositivo UEFI, estou gravemente comprometido em poder ajudar), será necessário inicializar o CD ao vivo no modo UEFI e não no modo BIOS / MBR.
Portablejim
Que tal remover grub-pce instalar grub-efienquanto estiver no CD ao vivo (antes de instalar, talvez?)?
Portablejim
11
Uau, isso funcionou perfeitamente, obrigado! Acabei de migrar uma instalação paralela do Fedora 25 e Windows 10 do MBR + BIOS para o GPT + UEFI sem reinstalar nada. Eu executei as etapas 1 e 2 de um pendrive Fedora 25 Live USB inicializado com UEFI. Na etapa 3, usei o chroot para acessar meu sistema existente no sistema Live, conforme descrito em wiki.ubuntuusers.de/GRUB_2/Reparatur/#chroot-Methode . Eu desinstalei o grub2, instalei o grub2-efi e o grub2-efi-modules e reinstalei explicitamente o shim (sem reinstalar o shim, o menu Grub não apareceria). Finalmente ...
Philipp Hartwig
2
Para instalar o GRUB, eu apenas inicializei um USB ativo e usei o reparo de inicialização. askubuntu.com/questions/226061/… Obrigado por este post!
jbrock 7/01
9

Esta resposta está incompleta; Eu não testei nada disso. É improvável que você coma seus dados, mas você foi avisado!

O que eu acho que está acontecendo aqui é que o BIOS está inicializando preferencialmente a partir do MBR herdado, de modo que o velho UEFI Windows 7 está ficando esquecido.

Uma das coisas boas do UEFI é que você não precisa mais se preocupar com a substituição do GRUB pelo Windows; ambos devem coexistir bem na partição EFI. Uma opção seria, portanto, mudar para grub-efi. Nota: Não tenho certeza se grub-efientende partições no estilo MSDOS; Eu acho que sim. Caso contrário, isso falhará na inicialização e você precisará de um LiveCD para se recuperar. De fato, tenha um LiveCD à mão de qualquer maneira!

Para mudar para o que grub-efivocê deseja

  1. Encontre sua partição EFI; montá-lo em /boot/efi. Adicione isto a /etc/fstab¹
  2. Instale o grub-efipacote
  3. Alterne sua prioridade de inicialização do BIOS de UEFI and Legacypara UEFI only(ou uma opção semelhante)

Isso deve deixar você com uma instalação do Ubuntu inicializando com UEFI. Caso contrário, inicialize o seu LiveCD confiável (ou o CD de instalação alternativa do Ubuntu - a opção “Corrigir um sistema quebrado” é o que você procura ☺), faça o chroot no sistema e instale grub-pcnovamente.


Nota: Mais detalhes para esta etapa: você precisará encontrar o que o kernel do Linux chama de partição do sistema EFI. Isso vai ser algo como /dev/sda2, /dev/sdb3ou such². Você precisará criar o /boot/efidiretório e adicionar uma linha a /etc/fstab. Se a sua partição EFI for /dev/sdb3, adicione a seguinte linha:

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

Depois de executar, sudo mount /boot/efivocê deve descobrir que /boot/eficontém um EFIdiretório, com um subdiretório para Windows 7.


²: Como você possui vários discos rígidos, pode ser uma boa idéia descobrir o UUID da partição, pois ele será estável com a adição / remoção de discos rígidos, enquanto o /dev/sda2nome não garante que não mude. Isso pode ser feito depois que você terminar de configurar todo o resto.

Você pode encontrar o UUID olhando /dev/disk/by-uuid. Por exemplo, eu recebo:

$ 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

No meu caso, eu sei que /dev/sda1é a minha partição do sistema EFI, então eu tenho

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

no meu /etc/fstab.

RAOF
fonte
Se o Windows 7 estiver inicializando a partir da EFI, ele terá colocado seu carregador de inicialização na partição EFI - portanto, você deve ter um ☺. Isso não será visível em nenhum lugar do sistema de arquivos padrão do Ubuntu. Você precisará encontrá-lo com algo parecido com o Disk utilityprograma. Até que você encontre e monte sua partição EFI, grub-efinão será capaz de funcionar - ele precisa colocar seu carregador de inicialização na partição do sistema EFI.
RAOF 04/12/11
Ainda não consigo inicializar no Ubuntu, adicionei as linhas ao fstab usando um livecd e também criei o diretório efi no / boot, mas ele não parece ter nenhum efeito.
Uri Herrera
Agora que você montou a partição EFI, é necessário executar sudo grub-installe sudo update-grubpara realmente instalar e configurar o GRUB na partição EFI. Você precisará fazer isso após fazer o chroot na sua instalação (porque precisa saber coisas sobre a instalação no disco rígido). Se você precisar de ajuda para fazer isso, posso adicionar detalhes à resposta.
RAOF
Sim, adicione como fazer o chroot na minha instalação e reinstalar o grub.
Uri Herrera
Segui as instruções aqui, mas tive um problema com a nova partição EFI. Quando tentei instalar uma visualização do Windows 10, o instalador deu o seguinte erro: "O Windows detectou que a partição do sistema EFI estava formatada como NTFS. Formate a partição do sistema EFI como FAT32 e reinicie a instalação" Consegui resolver o problema usando a ferramenta diskpart que acompanha o instalador do Windows, excluindo a primeira partição EFI e criando outra com create partition efi. Para obter informações sobre diskpart, consulte technet.microsoft.com/en-us/library/cc766465%28WS.10%29.aspx
Pathogen
2

Eu tenho meus sistemas operacionais em unidades separadas, para que o GRUB2 não seja substituído pelo Windows Bootloader e vice-versa

Isso é ideal, então é provável que você tenha pelo menos uma partição primária livre na tabela de partições.

Agora, minha pergunta é: como posso alterar / converter a unidade do Ubuntu para que, em vez de usar o MBR, use GPT e permita que o Windows inicialize?

Você não precisa converter MBR para GPT para fazer a inicialização UEFI, basta criar uma partição FAT primária, instalar o grub-efi-amd64-binpacote e siga as instruções em Adicionar um ESP a uma instalação existente com MBR, que deve funcionar com as versões atuais do Ubuntu.

LiveWireBT
fonte
11
Resposta sub-classificada. O Windows exige obstinadamente a inicialização GPT + UEFI ou MBR + BIOS, mas o Linux permite que o mix-and-match e o grub possam carregar em cadeia outro disco ou inicializar diretamente o bootmgr do Windows 7.
Tim G
@timg Isso pode ser verdade depois do fato, mas, infelizmente, se você estiver configurando o Windows 10 do zero, parece que o instalador não permitirá que você continue sem um volume GPT, se você inicializou o EFI.
Merk
@Merk Oh, eu uso o instalador do Windows uma maneira diferente: Shift-F10 lhe dá uma linha de comando e você pode diskpart, dism /apply-imagee depois bcdboot(mais opções em ambos os aqueles, claro) para torná-lo instalar mbr ou GPT, independentemente de como você iniciou.
Tim G
1

Para complementar a resposta do Portablejim (o que realmente me ajudou a converter do MBR para o GPT, obrigado!), Você pode usar o Boot-Repair para reinstalar o grub. Funcionou como um encanto para reparar minha inicialização depois que não consegui concluir a etapa 3 e mais uma vez quando a instalação do Windows 10 fez a opção de inicialização do linux desaparecer.

John
fonte
Eu tenho um disco somente do Ubuntu e, usando o Reparo de inicialização, o passo 3 funcionou como um encanto!
Rael Gugelmin Cunha