1 votos

Creación de imágenes de disquetes a partir de carpetas de archivos de datos para VirtualBox

VirtualBox es capaz de pasar imágenes de disquetes (en un formato llamado IMA) a las máquinas virtuales. Para un proyecto de conservación de datos, necesito crear muchas de esas imágenes.

Mi sistema anfitrión es MacOS 11.6 Big Sur, y tengo las herramientas Homebrew disponibles.

Mis archivos de datos están en mi disco APFS, en una jerarquía de carpetas donde cada carpeta contiene los archivos que estaban originalmente en el disquete correspondiente. Esas carpetas parecen haber sido creadas simplemente copiando el contenido del disquete en una vieja máquina DOS/Win311. Ejemplo:

disk1
  file1.ext
  file2.ext
disk2
  another1.txt
  another2.txt

No es necesario que ninguno de los discos sea de arranque, por lo que la creación del sector de arranque es irrelevante en este contexto.

Intenté crear las imágenes simplemente con hdiutil, pero los archivos de imagen resultantes no funcionaban:

hdiutil create -size 1440k -fs "MS-DOS FAT12" -layout NONE -srcfolder disk2 -format UDRW -ov diskimage2.ima

Entonces, ¿podrías sugerir una forma (con guión, no interactiva) de recorrer una jerarquía de carpetas y convertir cada carpeta en una imagen de disco para VirtualBox que contenga los archivos de esa carpeta?

1voto

David Anderson Puntos 2189

He ejecutado el comando de su pregunta, que también se muestra a continuación.

hdiutil create -size 1440k -fs "MS-DOS FAT12" -layout NONE -srcfolder disk2 -format UDRW -ov diskimage2.ima

Un volcado hexadecimal/ASCII del Bloque de parámetros de la BIOS en el diskimage2.ima.dmg muestra lo siguiente.

hexdump -s 0xb -n 51 -Cv diskimage2.ima.dmg
0000000b  00 02 01 01 00 02 00 02  40 0b f0 09 00 20 00 10  |........@.... ..|
0000001b  00 00 00 00 00 00 00 00  00 00 00 29 fd 0c e6 34  |...........)...4|
0000002b  44 49 53 4b 32 20 20 20  20 20 20 46 41 54 31 32  |DISK2      FAT12|
0000003b  20 20 20

Utilicé VirtualBox para crear un disquete formateado almacenado en el archivo Windows_3.1_1.img . Un volcado hexadecimal/ASCII del Bloque de parámetros de la BIOS en el Windows_3.1_1.img muestra lo siguiente.

hexdump -s 0xb -n 51 -Cv Windows_3.1_1.img 
0000000b  00 02 01 01 00 02 e0 00  40 0b f0 09 00 12 00 02  |........@.......|
0000001b  00 00 00 00 00 00 00 00  00 00 00 29 16 55 c8 ea  |...........).U..|
0000002b  20 20 20 20 20 20 20 20  20 20 20 46 41 54 31 32  |           FAT12|
0000003b  20 20 20                                          |   |
0000003e

Al comparar los dos resultados, se encontraron los siguientes problemas posibles.

  • Número máximo de entradas de directorio root FAT12 o FAT16 en el offset del sector 0x11. Su valor es 512. Yo esperaba 224.
  • Sectores físicos por pista en el offset 0x18. Su valor es 32. Yo esperaba 18.
  • Número de cabezas de los discos en el sector 0x1a. Su valor es 16. Yo esperaba 2.

Se puede hacer una imagen de un disquete no formateado utilizando el siguiente comando.

dd if=/dev/zero of=myfloppy.img bs=512 count=2880

Cualquiera de los siguientes comandos puede formatear el disquete con la etiqueta MYFLOPPY . Este formato coincide con el utilizado por VirtualBox.

newfs_msdos -v MYFLOPPY -f 1440 -b 512 -S 512 -r 1 -F 12 ./myfloppy.img 

o simplemente

newfs_msdos -v MYFLOPPY -f 1440 ./myfloppy.img

Nota: Ambos comandos producirán el siguiente mensaje de advertencia.

newfs_msdos: warning: ./myfloppy.img is not a character device
ioctl(DKIOCGETPHYSICALBLOCKSIZE) not supported

Yo sugeriría usar estos comandos o VirtualBox para crear una imagen de disquete. Adjunte la imagen, copie algunos archivos a la imagen, expúlsela y luego vea si su máquina virtual puede leer la imagen como un disquete.

Referencias

Diseño del sistema de archivos FAT
Creación de un archivo IMG de disquete FreeDOS DOS de arranque para V86 en OSX

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X