1 votos

Creación de una imagen de tarjeta SD FAT32 (.img) a partir de un directorio utilizando herramientas de línea de comandos

Estoy escribiendo un programa que se supone que se carga y ejecuta exclusivamente desde una tarjeta SD FAT32. Necesito crear una imagen de tarjeta SD para distribución, así como para probar el almacenamiento y la recuperación de archivos a través de este programa (también exclusivamente en la tarjeta SD).

Quiero usar un script de BASH para automatizar la creación de este archivo IMG que contiene los binarios de mi programa. ¿Qué programa de línea de comandos puedo usar para lograr esto y cómo lo utilizo?

1voto

David Anderson Puntos 2189

El script a continuación crearía el archivo de imagen de disco myimage.img, luego copiaría el contenido de la carpeta del Escritorio MyFolder a un volumen formateado en FAT32 almacenado en esta imagen de disco.

#!/bin/bash
# Create the empty disk image file,
dd if=/dev/zero of=myimage.img bs=1m count=100
# Assign a /dev entry to the disk image file,
devEntry="$(hdiutil attach -nomount myimage.img)"
# Show ouput from hdiutil.
echo "$devEntry"
# Remove whitespace from variable devEntry.
devEntry="$(echo $devEntry)"
# Create a MBR partition table and mount the newly created FAT32 volume.
diskutil erasedisk fat32 MYSD mbr "$devEntry"
# Copy files from the folder to FAT32 volume.
cp -R ~/Desktop/MyFolder/ /Volumes/MYSD
# Remove all ._* files.
dot_clean /Volumes/MYSD
# Eject the disk image.
hdiutil detach "$devEntry"

A continuación se presentan algunos comentarios.

  • El tamaño de la imagen de disco es de 100 MiB. Puedes cambiar esto editando count=100.
  • Se asume que el tamaño de sector de la tarjeta SD es de 512 bytes.
  • Puedes usar el comando dd para transferir la imagen a una tarjeta SD. La capacidad de la tarjeta SD debe ser al menos la del tamaño del archivo de imagen de disco.
  • El uso de dot_clean es opcional.
  • Si la tarjeta SD no requiere una tabla de particiones, entonces puedes reemplazar el comando diskutil erasedisk fat32 MYSD mbr "$devEntry" con el comando que se muestra a continuación.

    diskutil erasevolume fat32 MYSD "$devEntry"

0voto

Jose Chavez Puntos 645

Podrías usar la herramienta de línea de comandos diskutil para lograr lo que deseas. Permite montar un archivo como un tipo de dispositivo de bucle de retroalimentación, y es capaz de realizar el formato FAT32.

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