Eu tenho um dispositivo com uma CPU AMD64, mas um bootloader UEFI que suporta apenas i386.
Eu fiz um instalador ISO personalizado do Ubuntu 19.04 usando o Cubic e o atualizei para um USB usando usb-creator-gtk (Startup Disk Creator).
Isso cria duas partições no USB:
A primeira partição formatada como ISO9660 e contém o conteúdo ISO, a segunda é uma partição FAT32 que contém apenas os arquivos de inicialização .EFI.
A segunda partição é a partir da qual o tablet será inicializado. Seu conteúdo vem de um arquivo efi.img armazenado em /boot/grub na ISO. Este originalmente continha apenas arquivos AMD64 EFI.:
Eu criei meu próprio arquivo img.efi de substituição e inseri um arquivo bootia32.efi usando estes comandos:
dd if=/dev/zero of=efi.img bs=1M count=5
mkfs.fat efi.img
sudo mount -o loop,rw efi.img /media/efi
sudo cp -r <files> /media/efi
Isso cria com sucesso um USB inicializável, mas não carrega o instalador Grub, apenas carrega uma linha de comando do Grub.
Eu usei este bootia32.efi
arquivo para carregar o grub com sucesso antes, se eu formatar manualmente o USB como FAT32, copiar os arquivos ISO e colocar o arquivo EFI personalizado dentro de /EFI/BOOT, o dispositivo inicializará no Grub como eu esperaria .
Mas eu gostaria de fazer um ISO que possa ser exibido normalmente e inicializar bem.
Minha pergunta é: qual é o objetivo de criar uma partição separada para manter os arquivos EFI de inicialização como o usb-creator-gtk faz? Como faço para que essa partição carregue a configuração do Grub do instalador em vez de apenas a linha de comando do Grub?
obrigada
Obrigado a @oldfred por explicar que as partições separadas devem superar o limite de tamanho de arquivo de 4 GB para FAT32.
Consegui criar o ISO inicializável colocando a
boot
pasta e asEFI
pastas do ISO na partição FAT32 (efi.img).Modifiquei o grub.cfg para iniciar a partir de uma partição diferente daquela em que está.
Isso não me parece certo porque o arquivo efi.img original tinha apenas três arquivos:
Mas, funciona, então estou feliz.
A estrutura exata do meu arquivo efi.img é esta:
Alguns deles provavelmente não são necessários, mas não estou preocupado com os 10 MB extras de espaço que ele usa.
Este é o meu grub.cfg dentro do arquivo img.efi, observe o
set root=(hd0)
:Se alguém puder esclarecer mais sobre o que deve estar dentro do arquivo efi.img, por favor me avise.