GNU/Linux >> Tutoriales Linux >  >> Linux

¿Replicar una tarjeta SD?

ANTECEDENTES

Se ha configurado una tarjeta SD para una Raspberry pi. El objetivo es replicar la tarjeta SD exactamente (SO, aplicaciones, datos) para que la réplica funcione en un rPi exactamente como la tarjeta SD maestra original.

ACTUALIZACIÓN:Asumir:

  • la replicación se realizará en una computadora portátil configurada con un sistema operativo
    similar a UNIX
  • la replicación no se realizará desde el rPi
  • la tarjeta SD objetivo es de la misma marca/modelo
  • la tarjeta SD de origen está dividida con diferentes sistemas de archivos:

Preguntas

Qué opciones de clonación de UNIX están disponibles para una computadora portátil Ubuntu HP con una ranura para tarjeta SD y un lector/escritor de tarjeta SD USB.

¿Hay alguna diferencia si la tarjeta USB SD RW es el lector o el escritor?

Un objetivo (restricción) es evitar comprar hardware adicional.

Observaciones de la solución

date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date

Lun 3 de junio 17:53:18 EDT 2019
[sudo] contraseña para el usuario:
Lun 3 de junio 23:42:17 EDT 2019

date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date

martes, 4 de junio a las 00:33:50 EDT de 2019
[sudo] contraseña para el usuario:
119GiB 6:06:12 [5,56 MiB/s] [================================>] 100%
Martes 4 de junio 06:43:05 EDT 2019

El análisis de gParted de la tarjeta SD flash muestra una partición idéntica:

Respuesta aceptada:

Los sistemas Unix hacen que los dispositivos de almacenamiento estén disponibles a través de un archivo de dispositivo. Los archivos de dispositivo se comportan como archivos ordinarios de muchas maneras. En particular, para hacer una copia exacta del dispositivo de almacenamiento, simplemente copie el contenido del dispositivo de origen en el dispositivo de destino.

Primero debe determinar el archivo del dispositivo de origen y el archivo del dispositivo de destino. El nombre depende de su variante de Unix y de cómo esté configurada, pero en la práctica, los archivos del dispositivo siempre están bajo /dev directorio. Si tiene la tarjeta SD montada, puede encontrar el archivo del dispositivo con

df /media/sdcard1/some/file/on/the/sdcard

El archivo del dispositivo está en la primera columna. Otras herramientas pueden proporcionar la misma información, por ejemplo, mensajes de registro del kernel cuando inserta la tarjeta SD o el lsblk comando en Linux.

Puede haber particiones en la tarjeta. Si es así, copie toda la tarjeta, incluso si hay una sola partición, ya que parte de la información del tiempo de arranque puede estar ubicada fuera de la partición. Por ejemplo, si df muestra /dev/sdb1 en Linux, copie /dev/sdb y no solo /dev/sdb1 .

Si extrae la tarjeta SD y la vuelve a insertar, normalmente tendrá el mismo nombre de archivo de dispositivo que antes, pero esto no está garantizado.

Antes de copiar, asegúrese de que:

  • El dispositivo de origen no está montado o solo está montado como de solo lectura.
  • El dispositivo de destino no está montado en absoluto.
  • El dispositivo de destino es al menos tan grande como el de origen. En Linux, lsblk muestra el tamaño del dispositivo.
  • Tienes el dispositivo de destino correcto. ¡Tenga en cuenta que el siguiente comando sobrescribirá su contenido sin pedir confirmación!
Relacionado:¿Qué significa ser "sh compatible"?

Suponga que ha identificado que el dispositivo de origen es /dev/sdb y el dispositivo objetivo es /dev/sdc . Para copiar el contenido, ejecute el siguiente comando como root:

cat /dev/sdb >/dev/sdc

Si usa sudo, la redirección > debe suceder como root, por lo que debe escribir algo como

sudo sh -c 'cat /dev/sdb >/dev/sdc'

Alternativamente, para asegurarse de no sobrescribir accidentalmente el dispositivo incorrecto, puede proceder en dos pasos:

  1. Proporcione al usuario (gatorback en mi ejemplo) permiso para leer desde el dispositivo fuente (dev/sdb en mi ejemplo) y escribir en el dispositivo fuente (/dev/sdc en mi ejemplo).
    sudo setfacl -m user:gatorback:r /dev/sdb
    sudo setfacl -m user:gatorback:w /dev/sdc
    
  2. Realiza la copia sin sudo.
    cat /dev/sdb >/dev/sdc
    

Puede copiar la imagen del disco en un archivo y luego copiar el archivo de imagen en el dispositivo de destino. Esto es útil si necesita hacer varias copias, o si solo tiene un lector de tarjetas SD, o para reducir el riesgo de copiar en la dirección incorrecta.

  1. sudo cat /dev/sdb >sdcard.image
  2. Extraiga la tarjeta de origen e inserte la tarjeta de destino.
  3. Opcionalmente, verifique el contenido montando la imagen, p. sudo mount -o loop -r sdcard.image /mnt .
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

Si desea ver la información de progreso convenientemente, use pv en lugar de cat (pv rara vez se instala de forma predeterminada, pero está disponible como paquete en la mayoría de las distribuciones).


Linux
  1. ¿Dd se completa con una rapidez inverosímil?

  2. ¿Utilidad Bluetooth de bajo nivel?

  3. Comando setpci:configurar el dispositivo PCI

  4. Número de dispositivo en la salida del comando stat

  5. ¿Usar un dispositivo a través de SSH?

Cómo instalar un controlador de dispositivo en Linux

Todo es archivo en Linux – Parte 1

uflash:comando no encontrado

Bash:no queda espacio en el dispositivo

no queda espacio en el dispositivo

¿Dispositivo de bucle permanente?