GNU/Linux >> Tutoriels Linux >  >> Linux

Répliquer une carte SD ?

CONTEXTE

Une carte SD a été configurée pour un Raspberry pi. L'objectif est de répliquer exactement la carte SD (système d'exploitation, applications, données) afin que la réplique fonctionne dans un rPi exactement comme la carte SD principale d'origine.

MISE À JOUR :Supposons :

  • la réplication sera effectuée sur un ordinateur portable configuré avec un
    système d'exploitation de type UNIX
  • la réplication ne doit pas être effectuée à partir du rPi
  • la carte SD cible est de la même marque/modèle
  • la carte SD source est partitionnée avec différents systèmes de fichiers :

Questions

Quelles options de clonage UNIX sont disponibles pour un ordinateur portable Ubuntu HP avec un emplacement pour carte SD et un lecteur/enregistreur de carte SD USB.

Cela fait-il une différence si la carte SD USB RW est le lecteur ou l'enregistreur ?

Un objectif (contrainte) est d'éviter d'acheter du matériel supplémentaire.

Observation des solutions

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

Lun 3 juin 17:53:18 EDT 2019
[sudo] mot de passe pour l'utilisateur :
Lun 3 juin 23:42:17 EDT 2019

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

Mar 4 juin 00:33:50 EDT 2019
[sudo] mot de passe pour l'utilisateur :
119 Gio 6:06:12 [5,56 MiB/s] [================================>] 100 %
Mar 4 juin 06:43:05 EDT 2019

gL'analyse partielle de la carte SD flashée montre un partitionnement identique :

Réponse acceptée :

Les systèmes Unix rendent les périphériques de stockage disponibles via un fichier de périphérique. Les fichiers de périphérique se comportent comme des fichiers ordinaires à bien des égards. En particulier, pour faire une copie exacte du périphérique de stockage, il vous suffit de copier le contenu du périphérique source dans le périphérique cible.

Vous devez d'abord déterminer le fichier de périphérique source et le fichier de périphérique cible. Le nom dépend de votre variante Unix et de la façon dont il est configuré, mais en pratique, les fichiers de périphérique sont toujours sous le /dev annuaire. Si la carte SD est montée, vous pouvez trouver le fichier de l'appareil avec

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

Le fichier de périphérique se trouve dans la première colonne. D'autres outils peuvent fournir les mêmes informations, par exemple les messages du journal du noyau lorsque vous insérez la carte SD, ou le lsblk commande sous Linux.

Il peut y avoir des partitions sur la carte. Si c'est le cas, copiez toute la carte, même s'il n'y a qu'une seule partition, car certaines informations de démarrage peuvent se trouver en dehors de la partition. Par exemple, si df affiche /dev/sdb1 sous Linux, copiez /dev/sdb et pas seulement /dev/sdb1 .

Si vous retirez la carte SD et la réinsérez, elle aura généralement le même nom de fichier de périphérique qu'auparavant, mais cela n'est pas garanti.

Avant de copier, assurez-vous que :

  • Le périphérique source n'est pas monté ou n'est monté qu'en lecture seule.
  • L'appareil cible n'est pas monté du tout.
  • L'appareil cible est au moins aussi grand que la source. Sous Linux, lsblk affiche la taille de l'appareil.
  • Vous avez le bon appareil cible. Notez que la commande ci-dessous écrasera son contenu sans demander de confirmation !
En relation :Que signifie être "compatible sh" ?

Supposons que vous ayez identifié que le périphérique source est /dev/sdb et le périphérique cible est /dev/sdc . Pour copier le contenu, exécutez la commande suivante en tant que root :

cat /dev/sdb >/dev/sdc

Si vous utilisez sudo, la redirection > doit se produire en tant que root, vous devez donc écrire quelque chose comme

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

Alternativement, pour vous assurer de ne pas écraser accidentellement le mauvais appareil, vous pouvez procéder en deux étapes :

  1. Donnez à l'utilisateur (gatorback dans mon exemple) autorisation de lecture à partir du périphérique source (dev/sdb dans mon exemple) et d'écrire sur le périphérique source (/dev/sdc dans mon exemple).
    sudo setfacl -m user:gatorback:r /dev/sdb
    sudo setfacl -m user:gatorback:w /dev/sdc
    
  2. Effectuer la copie sans sudo.
    cat /dev/sdb >/dev/sdc
    

Vous pouvez copier l'image disque dans un fichier, puis copier le fichier image sur le périphérique cible. Ceci est utile si vous devez faire plusieurs copies, ou si vous n'avez qu'un seul lecteur de carte SD, ou pour réduire le risque de copier dans le mauvais sens.

  1. sudo cat /dev/sdb >sdcard.image
  2. Retirez la carte source et insérez la carte cible.
  3. Facultatif, vérifiez le contenu en montant l'image, par ex. sudo mount -o loop -r sdcard.image /mnt .
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

Si vous voulez voir les informations de progression facilement, utilisez pv au lieu de cat (pv est rarement installé par défaut, mais il est disponible sous forme de package sur la plupart des distributions).


Linux
  1. Pci-stub Vs Vfio-pci?

  2. Utilitaire Bluetooth de bas niveau ?

  3. Comment créer un périphérique de bloc virtuel (périphérique de boucle/système de fichiers) sous Linux

  4. Numéro d'appareil dans la sortie de la commande stat

  5. Créer un périphérique bloc dans la RAM

Tout est un fichier sous Linux - Partie 1

Pas d'espace disponible sur le périphérique

Utiliser un appareil via SSH ?

Comment créer un périphérique de carte son factice sur un serveur Linux ?

Dispositif à boucle permanente ?

Comment monter un appareil sous Linux ?