У меня есть 16 ГБ SD-карта, на которой есть несколько разделов (на самом деле это карта для Raspberry Pi). У меня есть несколько других карт на 4 ГБ, к которым я хочу клонировать основную карту. 3 раздела на основной карте:
- Загрузочный раздел Rasp, FAT, 60 МБ
- Раздел Linux, ext2, 1 ГБ
- Дополнительный раздел для хранения, FAT, 1 ГБ
Если я использую dd
для создания изображения карты с помощью:
dd if=/dev/sdb of=~/sd-card.bin
тогда результирующий .bin имеет размер 16GB. Есть ли способ использовать dd
для копирования только то, что на самом деле используется, то есть <4 ГБ, чтобы я мог затем dd
это на новую карту 4 ГБ? Или есть лучшее решение, которое я должен использовать?
sd-card
raspberry-pi
dd
Чарли Шлиссер
источник
источник
dd
количеством других карт. Тем не менее, хотелось бы узнать, возможно ли решить начальную проблему.Ответы:
Я полагаю, что вы используете для копирования копию Linux, или Mac, а не сам Raspberry Pi. Вам, вероятно, нужно будет добавить размер блока.
Я видел один и четыре мегабайта, используемые для дисков Raspberry pi, указав bs = 1M или bs = 4M. Я думаю, что размер блока важнее при записи на диск, поскольку большие передачи выполняются быстрее, чем меньшие. Это не устанавливает размер блока для диска, а только влияет на размер передач, используемых dd. Одной из причин установки большого размера блока является необходимость стирания вспышки перед ее записью. Это делается автоматически, но быстрее для передач, размер которых превышает минимальный размер стирания.
Вы можете ограничить общий объем данных, скопированных 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 для получения дополнительной информации. Не уверен, как найти конец последнего раздела или общий размер карты. Однако, если вы отформатировали диски, вы, вероятно, знаете, как это сделать.
источник
Разобравшись с ответом Уильяма , можно вычислить конец последнего раздела, используя
fdisk
калькулятор:Общее использованное пространство в байтах = конечный сектор последнего раздела X размер сектора (здесь это 3667967 x 512).
Общее использованное пространство в ГБ = общее использованное пространство в байтах / 1024 3 (здесь это 1,749023 ГБ).
Обычно нет необходимости создавать образ, который сравнивается с последним полезным битом данных, поэтому в приведенном выше примере я бы создал образ размером 2 ГБ, используя метод, описанный Уильямом в том же предыдущем ответе :
В конце изображения будет добавлена небольшая часть бесполезной болтовни после ваших последних полезных данных, но в принципе она ничем не отличается от бесполезной болтовни, которая будет перезаписана при записи изображения обратно на носитель.
Этот метод работал для меня на дюжине или около того клонов. Если в этом методе есть какие-либо фатальные недостатки, они еще не всплыли.
источник