Чи можу я використовувати дд, щоб клонувати більшу SD-карту на меншу SD-карту, якщо фактичні розділи підійдуть?


9

У мене є SD-карта на 16 Гб, на якій є кілька розділів (це насправді карта для Raspberry Pi). У мене є кілька інших карток 4 Гб, на які я хочу клонувати основну карту. 3 розділи на основній картці:

  • Роздільний завантажувальний розділ, FAT, 60MB
  • Розділ Linux, ext2, 1 Гб
  • Додатковий розділ "зберігання", FAT, 1 Гб

Якщо я використовую ddдля створення зображення карти за допомогою:

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

то отриманий .bin розміром 16 ГБ. Чи є спосіб ddскопіювати лише те, що використовується, тобто <4 Гб, щоб потім я міг ddце зробити на новій 4 Гб картці? Або є краще рішення, яке я повинен використовувати?


Я в кінцевому підсумку створив точний вміст на новій картці 4 Гб і клонував її ddдо кількості інших карт. Все ж хотілося б знати, чи можна вирішити початкову проблему.

Відповіді:


9

Я припускаю, що ви використовуєте комп'ютер під керуванням Linux або Mac для копіювання, а не малинового пі. Можливо, вам потрібно буде додати розмір блоку.

Я бачив один і чотири меги, які використовуються для дисків Raspberry pi, вказавши bs = 1M або bs = 4M. Я думаю, що розмір блоку важливіший під час запису диска, оскільки великі передачі швидші, ніж менші. Це не встановлює розмір блоку для диска, він просто впливає на розмір передач, які використовує ДД. Однією з причин встановлення великого розміру блоку є необхідність стерти спалах перед його написанням. Це робиться автоматично, але швидше для передач, що перевищують мінімальний розмір стирання.

Ви можете обмежити загальну кількість даних, скопійованих компанією dd, використовуючи "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 . Не знаєте, як знайти кінець останнього розділу або загальний розмір карт. Однак якщо ви відформатували диски, ви, ймовірно, будете знати, як це зробити.


Дякую за інформацію. Я не знав варіанту підрахунку. Я спробую.

@charlie, це буде захоплююче, якщо ви можете спробувати це з і без варіанту підрахунку і повідомити про це. не забудьте перевірити, як повідомляється розмір диска, і чи можете ви додати до нього файли та зміни розміру. 'Тому що, коли DD виходить з ладу з різними розмірами дисків, у вас виникають такі проблеми. Ось приклад, коли я переплутався з dd з двома різними розмірами накопичувачів. superuser.com/questions/538583/difficffic-resizing-a-partition Зрештою, я не використовував dd, щоб зробити клон.
барлоп

3

Розширюючи відповідь Вільяма , можна було обчислити кінець останнього розділу за 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).

Загальний використаний простір у ГБ = загальний використаний простір у байтах / 1024 3 (тут це 1,749023 ГБ).

Зазвичай не важливо створювати зображення, яке було б спарене аж до останнього корисного біта даних, тому у наведеному вище прикладі я створив би зображення в 2 ГБ методом, описаним Вільямом у тій самій попередній відповіді :

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

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

Цей метод працював на мене на десяток клонів. Якщо в цьому методі є якісь фатальні вади, вони ще не з'явилися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.