FONDO

FONDO

FONDO

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: Supongamos:

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

ingrese la descripción de la imagen aquí

Preguntas

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

¿Hace 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 00:33:50 EDT 2019 [sudo] contraseña para usuario: 119GiB 6:06:12 [5.56MiB/s] [==================== ============>] 100%
martes 4 de junio 06:43:05 EDT 2019

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

ingrese la descripción de la imagen aquí

MacOS\OSX

Para encontrar la ubicación de la tarjeta SD:

diskutil list

Asegúrese de desmontar la tarjeta SD cuando escriba en ella:

sudo diskutil unmount /dev/disk#

donde # es 1,2,3...

Respuesta1

Si solo desea copiar una tarjeta SD exactamente de una a otra, puede hacerlo condden la línea de comando.

NO debes hacer esto desde tu raspberry pi desde su propio sistema operativo. Esto se debe a que el sistema operativo puede escribir en la tarjeta SD mientras copia y dañar la copia.

Para copiar una tarjeta SD, conecta ambas a tus dos lectores (no importa si son USB o no). Luego verifique el contenido de /dev. Las tarjetas deberían aparecer como /dev/sd*. P.ej /dev/sdb. Tenga cuidado porque es posible que su disco duro interno ya esté encendido /dev/sda.

Asegúrese de que ninguna tarjeta SD esté montada, lea el resultado al escribir esto en el símbolo del sistema:

mount | grep /dev/sd

También verifique el resultado de para saber qué tarjeta tiene qué nombre de archivo (como raíz):

sudo blkid

Para copiar realmente (por ejemplo, de /dev/sdb a /dev/sdc) escriba (como root):

dd if=/dev/sdb of=/dev/sdc bs=4096 status=progress

Respuesta2

Los sistemas Unix hacen que los dispositivos de almacenamiento estén disponibles a través de unarchivo de dispositivo. Los archivos de dispositivo se comportan como archivos normales en muchos sentidos. 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é configurado, pero en la práctica los archivos del dispositivo siempre están en el /devdirectorio. Si tiene la tarjeta SD montada, puede encontrar con qué está el archivo del dispositivo

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 lsblkcomando en Linux.

Es posible que haya particiones en la tarjeta. Si es así, copie la tarjeta completa, incluso si hay una sola partición, porque parte de la información del tiempo de arranque puede estar ubicada fuera de la partición. Por ejemplo, si dfse muestra /dev/sdb1en Linux, copie /dev/sdby no solo /dev/sdb1.

Si saca 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, lsblkmuestra 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.

Supongamos que ha identificado que el dispositivo de origen es /dev/sdby el dispositivo de destino es /dev/sdc. Para copiar el contenido, ejecute el siguiente comando como root:

cat /dev/sdb >/dev/sdc

Si usas sudo, la redirección >debe realizarse como root, por lo que debes escribir algo como

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

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

  1. Otorgue al usuario ( gatorbacken mi ejemplo) permiso para leer desde el dispositivo de origen ( dev/sdben mi ejemplo) y escribir en el dispositivo de origen ( /dev/sdcen 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 a un archivo y luego copiar el archivo de imagen al 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. Saque la tarjeta de origen e inserte la tarjeta de destino.
  3. Opcionalmente, verifique el contenidomontando la imagen, p.ej sudo mount -o loop -r sdcard.image /mnt.
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

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

información relacionada