Ainda é possível instalar o Ubuntu em um disco rígido externo com UEFI?

9

Parece que instalar o Ubuntu em um disco rígido externo não é possível com UEFI, onde, como no MBR, não havia uma grande diferença entre externo e interno. Isso é verdade ou ainda é possível?

É possível combinar os dois métodos de inicialização?

LiveWireBT
fonte

Respostas:

12

Na verdade é possível .

Antes de continuar, essas instruções destinam-se a ESP (Partições de sistema EFI) em branco e provavelmente substituirão os arquivos existentes ou não funcionarão conforme o esperado. Pelo menos faça backups!

Adicionando partições necessárias para diferentes plataformas

Plataformas: PC legado, computador Windows baseado em UEFI, computador Apple

Adicionar um ESP a uma instalação existente com MBR

Você precisa seguir estas instruções em outra instalação ou mídia ao vivo.

  1. Instale o grub-efi-amd64-binpacote. Isso instalará apenas os recursos necessários. Ele não alternará sua instalação existente no estilo MBR para UEFI e inverterá as coisas.

  2. Reduza sua partição Ubuntu no GParted para liberar espaço para um ESP. Os tamanhos recomendados para ESPs variam de 100 MB a 500 MB, mas os arquivos criados seguindo estas instruções aqui não exigirão mais de 2 a 5 megabytes.

    Nota: Não importa onde o seu ESP está localizado no disco e diminuir a partição do Ubuntu em alguns megabytes no final deve ser rápido e seguro. Encolher no início não é seguro . Porém, uma ressalva: seu ESP deve ser uma partição primária e não fazer parte de uma partição estendida ou de um volume lógico; os números de partição de 1 a 4 são bons; os números acima indicam uma partição estendida nas tabelas de partição MBR.

    Escolha FAT32 como sistema de arquivos e defina o sinalizador de inicialização.

  3. Monte o ESP que você acabou de criar e o sistema de arquivos raiz que você encolheu:

    mkdir -p /mnt/esp
    mount $esp_device /mnt/esp
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    Nota: Substitua $esp_devicee $root_devicepelos dispositivos apropriados, por exemplo, /dev/sdb2e /dev/sdb1. Os pontos de montagem /mnt/esp e /mnt/rootfssão apenas exemplos escolhidos para trabalhar com a parte restante desta resposta.

    Instale a imagem EFI do GRUB e um arquivo de configuração mínimo com:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    Observe que $deviceé o dispositivo inteiro, por exemplo /dev/sdb, não uma partição.

  4. É isso aí, já terminamos, mas deixe-me tentar explicar algumas coisas.

    O parâmetro --target x86_64-efigarantirá que imagens e módulos UEFI sejam instalados nos caminhos especificados. --removableinstalará a imagem UEFI no caminho codificado permanentemente \EFI\BOOT\BOOT{arch}.EFIpara mídia removível, em vez de um caminho específico da distribuição. Seu grub.cfgin /boot/grub/deve funcionar com os métodos de inicialização e uma nova pasta chamada x86_64-efiagora deve existir ao lado de i386-pc.

    Para completar, este é o comando para mídia não removível que grava e se baseia nas entradas da NVRAM na plataforma:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --bootloader-id "Ubuntu" $device
    

    As instalações UEFI adequadas incluem uma linha semelhante à abaixo /etc/fstab, mas a configuração é funcional sem e a imagem UEFI (semelhante ao carregador de inicialização MBR) geralmente é gravada / atualizada apenas durante a instalação do sistema operacional.

    UUID=1234-567F /boot/efi vfat defaults 0 1
    

Adicionando um ESP ou GRUB-BBP a uma instalação com GPT

Adicionar um ESP a uma instalação herdada em uma unidade particionada GPT é muito semelhante ao acima:

  1. Instale o grub-efi-amd64-binpacote.
  2. Crie uma partição com um sistema de arquivos FAT32 semelhante às instruções acima, redimensionando a partição raiz e defina o bootsinalizador.
  3. Monte as partições e execute o grub-installcomando acima, que inclui o --removableparâmetro

Isso também funciona se você deseja apenas inicializar a instalação UEFI existente em outro computador.

Criar uma partição inicializável por BIOS (BBP) para GRUB é um pouco diferente:

  1. Instale o grub-pc-binpacote.

  2. Crie uma partição semelhante às instruções acima, redimensionando a partição raiz e defina o bios_grubsinalizador. Escolha nenhum sistema de arquivos e deixe-o não formatado.

  3. Edite o arquivo de configuração /etc/default/grubcom direitos administrativos e adicione GRUB_DEVICE=/dev/sdb6até o final. Substitua /dev/sdb6pelo nome real do dispositivo do seu BBP. Você pode usar o editor de linha de comando nano para simplificar as coisas.

    Instale a imagem do GRUB MBR no BBP com:

    grub-install --boot-directory /mnt/test/boot/ --target i386-pc $device
    

    Você pode remover ou comentar a linha /etc/default/grube adicioná-la à instalação real.

Bônus: adicione uma partição para Macs em uma instalação com GPT

Eu descobri que o Mac muito novo (Mac Mini A1347 EMC 2840) com o qual eu estava testando podia inicializar a partir de um ESP FAT32 padrão, mesmo da MBR! De qualquer forma, aqui vamos nós:

  1. Instale os grub-efi-amd64-bin, hfsprogs, mactel-boote mactel-boot-logopacotes (opcional). Você precisa habilitar os repositórios Universe ( como habilito o repositório "Universe" na linha de comando? ) E adicionar o PPA de suporte Mactel atual (consulte a equipe da Comunidade de Suporte Mactel para obter mais detalhes) para instalar todos eles.

  2. Crie uma partição com um sistema de arquivos HFS + semelhante às instruções acima, redimensionando a partição raiz. Dessa vez, precisamos de alguns megabytes a mais de espaço; portanto, duplique o tamanho do ESP, se você tivesse apenas 5 megabytes ou menos antes. Nenhuma sinalização é necessária.

  3. Monte as partições:

    mkdir -p /mnt/esp-mac
    mount $esp-mac_device /mnt/esp-mac
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    Nota: eu escolhi $esp-mac_devicee /mnt/esp-macpara evitar conflitos.

    Execute o grub-installcomando que inclui o --removableparâmetro:

    grub-install --efi-directory /mnt/esp-mac --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    Por fim, configure a partição da maneira que um Mac espera que seja:

    sudo hfs-bless /mnt/esp-mac/EFI/BOOT/bootx64.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/bootx64.efi /mnt/esp-mac/System/Library/CoreServices/boot.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/grub.cfg /mnt/esp-mac/System/Library/CoreServices/grub.cfg
    sudo cp -v /usr/share/mactel-boot/SystemVersion.plist /mnt/esp-mac/System/Library/CoreServices/SystemVersion.plist
    sudo cp -v /usr/share/mactel-boot-logo/ubuntu.icns /mnt/esp-mac/.VolumeIcon.icns
    echo "Dummy kernel for booting" | sudo tee /mnt/esp-mac/mach_kernel
    

    Para inicializar o Ubuntu a partir de mídia externa em um Mac, basta pressionar a tecla de opção ou Alto teclado do Windows e selecionar o disco correto.

    Mac Startup Manager mostrando volumes e logotipo do Ubuntu

Sobre sinalizadores de partição, códigos de tipo e GUIDs

Para ser o mais preciso possível, o sinalizador de inicialização não é importante para o GRUB; por padrão, o GRUB pesquisa por UUIDs para encontrar o sistema de arquivos certo para inicializar. A configuração do sinalizador de inicialização ou do bios_grub no GParted geralmente define um tipo (MBR) ou GUID (GPT) para a partição.

O benefício de definir o tipo ou GUID correto, além de ter uma configuração adequada, é que essas partições serão ocultadas no gerenciador de arquivos. A maneira mais fácil de verificar e alterar tipos e GUIDs é através de Disks ( gnome-disks).

captura de tela mostrando unidades e partições em discos gnome

captura de tela mostrando o diálogo de edição da partição em discos gnome

Como alternativa, você pode usar o parted ou o gdisk:

  • 0xef é o código de tipo para ESP no MBR para uso com o fdisk
  • ef00 é o código de tipo abreviado para ESP na GPT para uso com o gdisk
  • ef02 é o código de tipo abreviado para BBP na GPT para uso com o gdisk

A Wikipedia possui uma grande lista de GUIDs para GPT .

Os equivalentes da linha de comando de partedacordo com o manual são parted $device set partition esp one parted $device set partition bios_grub on.

LiveWireBT
fonte
Não documentei detalhes. Mas foi capaz de particionar minha unidade flash para gpt, criar uma partição efi e copiar arquivos de inicialização efi na partição efi. O grub-mkimage cria um grubx64.efi que espera certos caminhos para os arquivos, então eu apenas copiei a estrutura do arquivo da minha instalação em um / boot / grub e adicionei um grub.cfg com uma entrada configfile para outro grub.cfg no meu / iso pasta para montar em loop meus ISOs. Provavelmente, é mais correto criar seu próprio grubx64.efi com a imagem make, mas a cópia funcionou.
oldfred
Pesquisei alto e baixo tentando descobrir como fazer a parte "Adicionar um ESP a uma instalação existente com MBR". Eu estava nervoso com isso, mas funcionou na primeira tentativa! Ótima resposta!
Mark E. Haase
Estou tentando adicionar o recurso de inicialização EFI a uma instalação completa do BIOS / MRR do Ubuntu no USB usando a parte da resposta Adicionar um ESP a uma instalação existente com MBR . Recebo um "Erro: arquivo /boot/não encontrado". A grub.cfgpartição ESP aponta para o UUID certo. Alguma ideia? Eu ficaria feliz em publicar uma nova pergunta.
user68186
@ user68186 você conseguiu?
precisa saber é o seguinte
Consegui instalar o Ubuntu na minha unidade externa a partir de um Mac. Quando conectado ao Mac, ele inicializa corretamente no Ubuntu. No entanto, quando conectado a uma máquina Windows10 (xps 15 9560) nos dispositivos de inicialização, o disco rígido externo não aparece. Meu palpite é que isso se deve ao UEFI. Alguém pode confirmar se meu palpite está correto e também se esse segmento é o que talvez eu precise para inicializar a partir de uma máquina Windows?
precisa saber é o seguinte