syslinux criando partições inesperadas na imagem do disco

syslinux criando partições inesperadas na imagem do disco

Estou encontrando um comportamento estranho ao tentar instalar um bootloader em uma imagem de disco. Aqui está o processo que segui:

$ dd if=/dev/zero of=test.img status=progress bs=200M count=1
1+0 records in
1+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 0.190117 s, 1.1 GB/s

$ mkfs.ext2 test.img
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 204800 1k blocks and 51200 inodes
Filesystem UUID: f6442813-7b8c-4636-b69e-334696e0840b
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

$ sudo mount test.img mount-point/ -o loop

$ fdisk -l test.img
Disk test.img: 200 MiB, 209715200 bytes, 409600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

$ sudo extlinux -i mount-point/
mount-point/ is device /dev/loop0
Warning: unable to obtain device geometry (defaulting to 64 heads, 32 sectors)
         (on hard disks, this is usually harmless.)

$ fdisk -l test.img
Disk test.img: 200 MiB, 209715200 bytes, 409600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x20ac7dda

Device     Boot      Start        End    Sectors   Size Id Type
test.img1       3224498923 3657370039  432871117 206.4G  7 HPFS/NTFS/exFAT
test.img2       3272020941 5225480974 1953460034 931.5G 16 Hidden FAT16
test.img3                0          0          0     0B 6f unknown
test.img4         50200576  974536369  924335794 440.8G  0 Empty

Partition table entries are not in disk order.

Não consigo entender por que o extlinux -icomando criaria novas partições na imagem do disco. Suspeito que possa estar modificando alguns metadados do sistema de arquivos, mas gostaria de receber alguns esclarecimentos sobre os detalhes. Além disso, é possível instalar o Syslinux em uma imagem de disco não particionada?

Responder1

A tabela de partição MBR é uma estrutura muito simples no final do primeiro bloco de 512 bytes do disco. Ele não contém somas de verificação, hashes ou outros recursos de proteção contra erros.

Ao executar fdisk -la imagem do sistema de arquivos/partição que você criou, você está efetivamente forçando-o a interpretar mal seu primeiro bloco (o Partition Boot Record, ou PBR, para abreviar) como um MBR. Isso resulta em resultados sem sentido, como você demonstrou.

Se bem me lembro, o PBR criado por extlinuxconteriacódigo de inicializaçãonos locais ocupados pela tabela de partição real em um MBR. O mesmo fdiskaconteceria lendo partes do extlinuxcódigo de inicialização do PBR e tentando exibi-lo como conteúdo do MBR. Não é de admirar que o resultado não faça sentido!

informação relacionada