
Antes de perguntar aqui, tentei pesquisar no SU/SE e no Google sem sucesso.Esta é a coisa mais próxima que consegui.
Basicamente, estou tentando fazer o seguinte:
- criar uma imagem de disco de cerca de 128MB;
- criar um GPT;
- crie uma partição FAT32 nos primeiros 32MB(vou chamá-la de UEFI);
- crie uma partição FAT32 nos bytes restantes(vou chamá-la de SYSTEM);
- crie o seguinte subdiretório na partição UEFI: /EFI/BOOT/;
- copie um arquivo no subdiretório;
- copie outro arquivo na partição SYSTEM.
Isto é o que eu fiz até agora:
dd if=/dev/zero of=disk.img bs=1M contagem=128
parted disk.img
(parted) mktable gpt
(parted) mkpart primário fat32 2048s 65535s
(parted) mkpart primário fat32 65536s 100%
(parted) alinhamento-verificação ideal 1
(parted) alinhamento-verificação ideal 2
(parted) nome 1 UEFI
(parted ) nome 2 SISTEMA
Esta é a minha saída:
Disco disk.img: 134 MB Tamanho do setor (lógico/físico): 512B/512B Tabela de partição: gpt Sinalizadores de disco: Número Início Fim Tamanho Sistema de arquivos Nome Sinalizadores 1 1049kB 33,6MB 32,5MB UEFI msftdata 2 33,6 MB 134 MB 101 MB SISTEMA msftdata
A maneira alternativa é criar duas partições diferentes e depois mesclá-las:
dd if=/dev/zero of=uefi.img bs=1M contagem=32 mformat -i uefi.img -v UEFI -f 1440 -c 1 :: mmd -i uefi.img ::/EFI mmd -i uefi.img ::/EFI/BOOT mcopy -i uefi.img BOOTX64.EFI ::/EFI/BOOT
dd if=/dev/zero of=system.img bs=1M contagem=100 mformat -i sistema.img -v UEFI -f 1440 -c 1 :: mcopy -i system.img myawesomeOS ::
Da primeira maneira, não consigo entender por que a coluna "Sistema de arquivos" está vazia (deveria dizer fat32) e como criar subdiretórios e copiar arquivos.
Desta última forma, não consigo criar um sistema de arquivos FAT32 adequado para as duas imagens. Se eu acrescentar -F ao mformat, obtenho
Poucos clusters para esse tamanho de gordura. Escolha um fat de 16 bits em seu arquivo /etc/mtools.conf ou .mtoolsrc
Se eu conseguir, ainda não sei como configurar o GPT e mesclar as duas imagens em um único arquivo.
Como posso conseguir isso? Qualquer ajuda ou dica é apreciada.
Responder1
Depois de lutar por algumas horas, resolvi sozinho. Vou postar a solução aqui, por precaução:
# Cria uma imagem de disco vazia de 256MB, cria seu GPT e então faz #duas partições: a primeira de aproximadamente 60MB, a segunda preenche # os bytes restantes. Ambas as partições estão alinhadas. dd if=/dev/zero of=disk.img bs=1M contagem=256 disco separado.img mktable gpt mkpart primário fat32 2048s 131071s mkpart primário fat32 131072s 100% alinhar-verificar ideal 1 alinhar-verificar ideal 2 nome 1 UEFI nome 2 SISTEMA desistir # Cria uma imagem de disco vazia de 33 MB. dd if=/dev/zero of=uefi.img bs=1M contagem=33 # Formata a imagem do disco como FAT32 mkfs.vfat uefi.img -F 32 # Cria os subdiretórios solicitados. mmd -i uefi.img ::/EFI mmd -i uefi.img ::/EFI/BOOT # Copia o arquivo de inicialização. mcopy -i uefi.img BOOTX64.EFI ::/EFI/BOOT # Cria uma imagem de disco vazia de 100 MB. dd if=/dev/zero of=system.img bs=1M contagem=100 # Formata a imagem do disco como FAT32 mkfs.vfat sistema.img -F 32 # Copia o arquivo do sistema operacional. mcopy -i sistema.img SYSTEM.EFI :: # Habilita o módulo do kernel solicitado pelo kpartx, apenas por precaução. sudo modprobe dm-mod # Mapeia e monta as duas partições em disk.img para /dev/mapper/loop0p1 e # /dev/mapper/loop0p2 sudo kpartx -av disco.img # Copia a partição UEFI para a imagem do disco. sudo dd if=uefi.img of=/dev/mapper/loop0p1 bs=1M # Copia a partição SYSTEM na imagem do disco. sudo dd if=system.img of=/dev/mapper/loop0p2 bs=1M # Desmonta as duas partições sudo kpartx -dv disco.img