J'ai une carte SD de 16 Go qui a quelques partitions (c'est en fait la carte pour un Raspberry Pi). J'ai plusieurs autres cartes de 4 Go sur lesquelles je veux cloner la carte principale. Les 3 partitions sur la carte principale sont:
- Partition de démarrage Rasp, FAT, 60 Mo
- Partition Linux, ext2, 1 Go
- Partition de stockage supplémentaire, FAT, 1 Go
Si j'utilise dd
pour créer une image de la carte via:
dd if=/dev/sdb of=~/sd-card.bin
puis le .bin résultant est de 16 Go. Existe-t-il un moyen d'utiliser dd
pour copier exactement ce qui est réellement utilisé, c'est-à-dire <4 Go pour que je puisse ensuite le faire dd
sur une nouvelle carte de 4 Go? Ou existe-t-il une meilleure solution que je devrais utiliser?
sd-card
raspberry-pi
dd
Charlie Schliesser
la source
la source
dd
une quantité d'autres cartes. J'aimerais quand même savoir s'il est possible de résoudre le problème initial.Réponses:
Je suppose que vous utilisez un ordinateur PC Linux ou Mac pour effectuer la copie, pas le Raspberry Pi lui-même. Vous devrez probablement ajouter une taille de bloc.
J'ai vu un et quatre mégaoctets utilisés pour les disques Raspberry pi en spécifiant bs = 1M ou bs = 4M. Je pense que la taille des blocs est plus importante lors de l'écriture du disque car les gros transferts sont plus rapides que les plus petits. Cela ne définit pas la taille du bloc pour le disque, cela affecte seulement la taille des transferts utilisés par dd. L'une des raisons pour définir une taille de bloc importante est la nécessité d'effacer le flash avant de l'écrire. Cela se fait automatiquement mais plus rapidement pour les transferts supérieurs à la taille d'effacement minimale.
Vous pouvez limiter la quantité totale de données copiées par dd à l'aide de "count". "count" est en unités de blocs. Si la fin de la dernière partition sur le disque source est antérieure à la taille de la destination, vous pouvez faire ce que vous voulez.
Quelque chose comme
dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000
va créer une image de 4000 Mo.Voir http://en.wikipedia.org/wiki/Dd_(Unix) et http://elinux.org/RPi_Easy_SD_Card_Setup pour plus d'informations. Vous ne savez pas comment trouver la fin de la dernière partition ou la taille totale des cartes. Cependant, si vous avez formaté les disques, vous saurez probablement comment procéder.
la source
En développant la réponse de William , on pourrait calculer la fin de la dernière partition en utilisant
fdisk
et une calculatrice:Espace total utilisé en octets = secteur final de la dernière taille de secteur de la partition X (ici c'est 3667967 x 512).
Espace total utilisé en Go = espace total utilisé en octets / 1024 3 (ici, c'est 1,749023 Go).
Habituellement, il n'est pas essentiel de créer une image qui soit ramenée jusqu'au dernier bit de données utile, donc dans l'exemple ci-dessus, je créerais une image de 2 Go en utilisant la méthode décrite par William dans cette même réponse précédente :
À la fin de l'image se trouvera une petite partie du guff inutile après vos dernières données utiles, mais ce n'est pas différent en principe du guff inutile qui sera écrasé lorsque vous réécrirez l'image sur votre support.
Cette méthode a fonctionné pour moi sur une dizaine de clones. S'il y a des défauts fatals dans cette méthode, ils n'ont pas encore fait surface.
la source