Вопрос Могу ли я использовать dd для клонирования более крупной SD-карты на более мелкую SD-карту, если соответствующие разделы будут соответствовать?


У меня есть SD-карта на 16 ГБ, на которой есть несколько разделов (это на самом деле карта для малины Pi). У меня есть еще несколько 4GB-карт, к которым я хочу клонировать основную карту. 3 раздела на основной карте:

  • Загрузочный раздел Rasp, FAT, 60 МБ
  • Раздел Linux, ext2, 1GB
  • Дополнительный раздел «хранения», FAT, 1 ГБ

Если я использую dd для создания изображения карты через:

dd if=/dev/sdb of=~/sd-card.bin

то получившийся .bin имеет размер 16 ГБ. Есть ли способ использовать dd чтобы скопировать только то, что на самом деле используется, т. е. <4 ГБ, чтобы затем я мог dd это на новую карту 4 ГБ? Или есть лучшее решение, которое я должен использовать?


9
2018-03-18 15:42


происхождения


Я закончил тем, что создал точное содержимое на новой карте 4 ГБ и клонировал это с помощью dd к количеству других карт. Тем не менее, хотелось бы знать, можно ли решить начальную проблему.


ответы:


Я предполагаю, что вы используете компьютер для ПК или Mac для выполнения копии, а не самого малинового pi. Вам, вероятно, потребуется добавить размер блока.

Я видел одну и четыре мегабайта, используемые для дисков papleberry, указав bs = 1M или bs = 4M. Я думаю, что размер блока более важен при записи диска, поскольку большие передачи быстрее, чем меньшие. Это не устанавливает размер блока для диска, он просто влияет на размер использования dd. Одной из причин для установки большого размера блока является необходимость стирания вспышки перед ее записью. Это делается автоматически, но быстрее для передач, размер которых меньше минимального размера стирания.

Вы можете ограничить общий объем данных, скопированных с помощью dd, с помощью «count». «count» находится в единицах блоков. Если конец последнего раздела на исходном диске находится до размера адресата, вы можете делать то, что хотите.

Что-то вроде dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000 создаст изображение размером 4000 МБ.

Видеть http://en.wikipedia.org/wiki/Dd_(Unix) а также http://elinux.org/RPi_Easy_SD_Card_Setup Чтобы получить больше информации. Не знаете, как найти окончание последнего раздела или общий размер карт. Однако, если вы отформатировали диски, вы, вероятно, знаете, как это сделать.


8
2018-03-18 23:46



Спасибо за информацию. Я не знал о параметре count. Я попробую.
@charlie было бы увлекательно, если вы можете попробовать его с и без опции count и отчитаться. будьте уверены, хотя проверьте, как сообщается размер диска, и если вы можете добавлять к нему файлы и изменять размер. 'cos, когда dd не подходит к разным размерам дисков, вы получаете такие проблемы. Вот пример, когда я перепутал dd с двумя дисками различного размера. superuser.com/questions/538583/difficulty-resizing-a-partition   В конце концов я не использовал dd для создания клона. - barlop


Расширение Ответ Уильяма, можно было бы вычислить конец последнего раздела, используя fdisk и калькулятор:

$ fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00057540

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        2048  186367  184320   90M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      186368 3667967 3481600  1.7G  5 Extended
/dev/mmcblk0p5      188416 3667967 3479552  1.7G 83 Linux

Общее используемое пространство в байтах = конечный сектор последнего раздела сектора сектора X (здесь это 3667967 x 512).

Общее используемое пространство в GB = общее используемое пространство в байтах / 10243 (здесь это 1,749023 ГБ).

Как правило, не важно создать изображение, которое находится прямо до последнего полезного бита данных, поэтому в приведенном выше примере я бы создал изображение 2 ГБ, используя метод, описанный Уильямом в этом прежний ответ:

dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048

В конце изображения будет небольшая часть бесполезного guff после ваших последних полезных данных, но это принципиально не отличается от бесполезного guff, который будет перезаписан, когда вы напишете изображение обратно на свои медиа.

Этот метод работает для меня на дюжине или около того клонов. Если в этом методе есть какие-то фатальные недостатки, они еще не всплыли.


2
2017-11-13 14:10