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.
Instale o grub-efi-amd64-bin
pacote. Isso instalará apenas os recursos necessários. Ele não alternará sua instalação existente no estilo MBR para UEFI e inverterá as coisas.
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.
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_device
e $root_device
pelos dispositivos apropriados, por exemplo, /dev/sdb2
e /dev/sdb1
. Os pontos de montagem /mnt/esp
e /mnt/rootfs
sã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.
É isso aí, já terminamos, mas deixe-me tentar explicar algumas coisas.
O parâmetro --target x86_64-efi
garantirá que imagens e módulos UEFI sejam instalados nos caminhos especificados. --removable
instalará a imagem UEFI no caminho codificado permanentemente \EFI\BOOT\BOOT{arch}.EFI
para mídia removível, em vez de um caminho específico da distribuição. Seu grub.cfg
in /boot/grub/
deve funcionar com os métodos de inicialização e uma nova pasta chamada x86_64-efi
agora 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:
- Instale o
grub-efi-amd64-bin
pacote.
- Crie uma partição com um sistema de arquivos FAT32 semelhante às instruções acima, redimensionando a partição raiz e defina o
boot
sinalizador.
- Monte as partições e execute o
grub-install
comando acima, que inclui o --removable
parâ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:
Instale o grub-pc-bin
pacote.
Crie uma partição semelhante às instruções acima, redimensionando a partição raiz e defina o bios_grub
sinalizador. Escolha nenhum sistema de arquivos e deixe-o não formatado.
Edite o arquivo de configuração /etc/default/grub
com direitos administrativos e adicione GRUB_DEVICE=/dev/sdb6
até o final. Substitua /dev/sdb6
pelo 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/grub
e 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:
Instale os grub-efi-amd64-bin
, hfsprogs
, mactel-boot
e mactel-boot-logo
pacotes (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.
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.
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_device
e /mnt/esp-mac
para evitar conflitos.
Execute o grub-install
comando que inclui o --removable
parâ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.
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
).
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 parted
acordo com o manual são parted $device set partition esp on
e parted $device set partition bios_grub on
.
/boot/
não encontrado". Agrub.cfg
partição ESP aponta para o UUID certo. Alguma ideia? Eu ficaria feliz em publicar uma nova pergunta.