У меня был один пи, настроенный и работающий некоторое время (RPi - 1). Я хотел создать образ RPi - 1, чтобы я мог загрузить точную копию на свой второй пи (RPi - 2). SD-карта в RPi - 1 составляет 4 ГБ (фактически используется только половина), а SD-карта в RPi - 2 также составляет 4 ГБ. Я использую Win32 Disk Imager для успешного создания копии RPi - 1. Затем я отформатировал SD-карту для RPi - 2 с помощью SD Formatter 4.0 (в Windows 7). Однако, когда я использую Win32 Disk Imager для записи образа RPi - 1 на SD-карту RPi - 2, я получаю: «Недостаточно места на диске: Размер 7744512 Доступно: 7626752 сектора Размер сектора: 512»
Я знаю, что это не плохое изображение, потому что я могу отформатировать SD-карту для RPi - 1 и записать изображение обратно без проблем.
Что мне здесь не хватает? Разве не все 4 ГБ SD-карты имеют одинаковый размер или они немного отличаются? Что-то нужно сделать с новой SD-картой, которую я пропустил?
(RPi - 1 SD-карта = Sandisk 4 ГБ // RPi - 2 SD-карта = Kingston 4 ГБ)
Ответы:
Действительно, не все SD-карты имеют одинаковый точный размер. Вам придется уменьшить раздел, чтобы он поместился на меньшем SD. У меня была похожая проблема. То, что я сделал, было отдельной SD с (в моем случае) Raspbian. И я подключил свою SD-карту, которую я хотел изменить, используя устройство чтения карт USB.
Прежде чем вы сможете безопасно сжать свой раздел, вы должны убедиться, что в конце, который вы удаляете, нет данных. Вы можете сделать это с помощью
resize2fs -M -p /dev/sda2
(вам нужно заменить / dev / sda2 на правильный путь к устройству чтения USB-карт и разделу linux, размер которого вы хотите изменить). Это изменит размер файловой системы до минимально возможного. На самом деле вы можете указать точный размер, который вы хотите, но он включает в себя некоторую математику и преобразование размеров в размеры блоков и секторов, а что нет. Безопаснее и проще этого не делать.После этого вы можете уменьшить часть. Я думаю, что я использовал
fdisk
для этого. Получите точную начальную позицию раздела, удалите его и создайте заново, используя ту же начальную позицию, но с меньшим размером.Наконец, вам нужно снова увеличить файловую систему, чтобы занять весь раздел, используя
resize2fs -p /dev/sda2
источник
e2fsck -f /dev/mmcblk0p2
(я сокращаю второй раздел mmcblk0), чтобы проверить согласованность. Тогда мне разрешили бежатьresize2fs -M -p /dev/mmcblk0p2
как предложено.Я знаю, что это старая статья, однако у меня была та же проблема, и я решил ее, используя метод, описанный здесь http://www.aoakley.com/articles/2015-10-09-resizing-sd-images.php
источник
Вам лучше создать архив файловой системы, потому что, когда вы создаете полный образ диска, вы также копируете удаленные данные. Когда вы удаляете файл, индекс не связывается, но фактические данные все еще находятся на диске. Полное использование образа диска
dd
будет копировать эти старые данные (кроме случаев, когда вы сначала перезаписываете их/dev/zero
, что занимает некоторое время), но использование резервной копииtar
будет копировать только текущие данные.Или ... вы можете сделать, как это делают многие дистрибутивы: уменьшите размер вашей файловой системы до чего-то безопасного, например, 1,9 ГиБ, перед созданием образа и измените размер, чтобы заполнить диск после восстановления резервной копии.
Предостережение: я не знаком с инструментами обработки изображений Windows, я пользователь Linux.
источник
если вы используете Linux, здесь небольшой скрипт:
кредит: Sirlagz (тааак извините!)
источник
echo "$partinfo" | grep $fileSystemType | awk -F: ' { print substr($2,0,length($2) - 1) } '
", чтобы избавиться от B в parttart.