Diseñar una imagen de disco y copiar archivos en ella

Diseñar una imagen de disco y copiar archivos en ella

Antes de preguntar aquí, intenté buscar en SU/SE y Google sin éxito.Esto es lo más parecido que tengo.

Básicamente, intento hacer lo siguiente:
- crear una imagen de disco de aproximadamente 128 MB;
- crear un GPT;
- crear una partición FAT32 en los primeros 32 MB (la llamaré UEFI);
- crear una partición FAT32 en los bytes restantes (la llamaré SISTEMA);
- cree el siguiente subdirectorio en la partición UEFI: /EFI/BOOT/;
- copiar un archivo en el subdirectorio;
- copiar otro archivo en la partición del SISTEMA.


Esto es lo que he hecho hasta ahora:

dd if=/dev/zero of=disk.img bs=1M recuento=128

disk.img separado
(partido) mktable gpt
(partido) mkpart primario fat32 2048s 65535s
(partido) mkpart primario fat32 65536s 100%
(partido) align-check óptimo 1
(partido) align-check óptimo 2
(partido) nombre 1 UEFI
(partido ) ) nombre 2 SISTEMA

Esta es mi salida:

Disco disk.img: 134MB  
Tamaño del sector (lógico/físico): 512B/512B  
Tabla de particiones: gpt  
Banderas de disco:  

Número Inicio Fin Tamaño Sistema de archivos Nombre Banderas  
 1 1049kB 33,6MB 32,5MB datos msft UEFI
 2 33,6MB 134MB 101MB SISTEMA msftdata



La forma alternativa es crear dos particiones diferentes y luego fusionarlas:

dd if=/dev/zero of=uefi.img bs=1M recuento=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 recuento=100
mformat -i system.img -v UEFI -f 1440 -c 1 ::
mcopy -i system.img myawesomeOS ::



De la forma anterior no puedo entender por qué la columna "Sistema de archivos" está vacía (debería decir fat32) y cómo crear subdirectorios y copiar archivos.
De esta última manera no puedo crear un sistema de archivos FAT32 adecuado para las dos imágenes, si agrego -F a mformat obtengo

Muy pocos racimos para este tamaño de grasa. Elija un archivo fat de 16 bits en su archivo /etc/mtools.conf o .mtoolsrc

Si logro hacerlo, todavía no sé cómo configurar el GPT y fusionar las dos imágenes en un solo archivo.

¿Cómo puedo conseguir esto? Se agradece cualquier ayuda o sugerencia.

Respuesta1

Después de luchar durante un par de horas, lo resolví yo solo. Publicaré la solución aquí, por si acaso:

# Crea una imagen de disco vacía de 256 MB, crea su GPT y luego crea
# dos particiones: la primera de aproximadamente 60 MB, la segunda se llena
# los bytes restantes. Ambas particiones están alineadas.
dd if=/dev/zero of=disk.img bs=1M recuento=256
disco partido.img
gpt mktable
mkpart primario fat32 2048s 131071s
mkpart grasa primaria32 131072s 100%
alinear-comprobar óptimo 1
alinear-comprobar óptimo 2
nombre 1 UEFI
nombre 2 SISTEMA
abandonar

# Crea una imagen de disco vacía de 33 MB.
dd if=/dev/zero of=uefi.img bs=1M recuento=33
# Formatea la imagen del disco como FAT32
mkfs.vfat uefi.img -F 32
# Crea los subdirectorios solicitados.
mmd -i uefi.img ::/EFI
mmd -i uefi.img ::/EFI/BOOT
# Copia el archivo de arranque.
mcopy -i uefi.img BOOTX64.EFI ::/EFI/BOOT

# Crea una imagen de disco vacía de 100 MB.
dd if=/dev/zero of=system.img bs=1M recuento=100
# Formatea la imagen del disco como FAT32
mkfs.vfat system.img -F 32
# Copia el archivo del sistema operativo.
mcopy -i sistema.img SISTEMA.EFI ::

# Habilita el módulo del kernel solicitado por kpartx, por si acaso.
sudo modprobe dm-mod
# Asigna y monta las dos particiones en disk.img en /dev/mapper/loop0p1 y
# /dev/mapper/loop0p2
sudo kpartx -av disk.img
# Copia la partición UEFI en la imagen del disco.
sudo dd if=uefi.img of=/dev/mapper/loop0p1 bs=1M
# Copia la partición del SISTEMA en la imagen del disco.
sudo dd if=system.img of=/dev/mapper/loop0p2 bs=1M
# Desmonta las dos particiones
sudo kpartx -dv disk.img

información relacionada