Я хотел подготовить дистрибутив для некоторых друзей.
Поскольку у меня больше ничего не лежало, я использовал SD-карту 16 Гб.
Я начал с изображения Debian Weezy 2Gb по умолчанию и не менял размеры.
Теперь, когда я закончил, я хотел создать образ того, что я сделал, но я получил файл размером 16 ГБ, содержащий 14 ГБ неразделенного (не разделенного и свободного) пространства в конце.
[Я использовал Windows // Win32DiskImager, так как сейчас у меня нет ничего, что можно было бы вставить в RPI]
Могу ли я просто обрезать файл изображения сразу за разделенным пространством и перенести ведущую часть на меньшую карту, тогда?
dd if=/dev/path/to/SD/card of=~/SpecialImage.img
, затем установите GParted и запуститеgparted ~/SpecialImage.img
. Как только GParted откроет ваш.img
файл, просто измените размер разделов по своему вкусу! (Обе команды должны запускаться с правами root, они должны датьsudo su
вам то, что вам нужно. Когда вы$
переключаетесь на a#
, вы - Root. Будьте осторожны, это Linux-эквивалент Бога.) GParted - это, в основном, GUI-интерфейс для управления тайными разделами. инструменты вам понадобятся Использование GParted просто делает все намного проще и более успешным.Ответы:
Я наконец нашел ресурс, который объясняет мой вопрос.
Короткий:
Да, усечение возможно!
Краткое описание процесса:
Извлечение информации о разделе из изображения с помощью
fdisk
:Мы видим, что раздел имеет размер около 2,8 Гб (5872026 * 512), остальное разделено .
Итак, все после окончания раздела можно удалить.
Это будет сделано с помощью инструмента
truncate
. Не забудьте добавить 1 к числу секторов, так как номера блоков начинаются с 0.Редактировать:
Для тех , кто слишком ленив , чтобы перейти на Linux:
Также работает на Windows , с Cygwin «s
fdisk.exe
иtruncate.exe
!Что такое Cygwin?
Я могу процитировать: «Cygwin: почувствуй себя в Linux - под Windows» ( https://www.cygwin.com/ ).
Это набор исполняемых файлов, которые могут работать под Windows, но предоставляют все программы командной строки, которые вы обычно знаете из Linux. Установка Cygwin может занять очень много времени, если вы выбираете каждый пакет во время установки, но, следуя этому примеру, просто убедитесь, что помимо конфигурации по умолчанию, также выбраны пакеты
util-linux
(fdisk) иcoreutils
(truncate).В зависимости от вашего окружения, вам нужно добавить
/usr/bin
и/usr/sbin
своего$PATH
.источник
fdisk.exe
иtruncate.exe
?Я знаю, что это старый вопрос, но я хотел бы показать, как выполнить этот процесс на Mac, потому что это не так просто:
fdisk
не имеет-l
опции иtruncate
не устанавливается по умолчанию:1. Шаг 1. Установите усечение в Mac OS X:
Для этого вам нужны MacPorts или Homebrew. Я использую MacPorts. Если у вас нет ни одного из них, сначала установите их. Ссылка на MacPorts
Теперь мы можем установить усечение . Откройте свой терминал и введите:
Для варки:
Это должно сделать это.
2. С помощью Дисковых утилит смонтируйте наш IMG так, чтобы он был виден команде терминала diskutil .
Вскоре вы поймете, почему нам нужен этот шаг. Откройте приложение Дисковая утилита. Нажмите Файл (на верхней панели) -> Открыть образ диска и выберите файл IMG.
3. Проверьте размер раздела IMG и где он установлен.
В терминале введите:
И это должно показать что-то вроде этого где-то в конце:
Итак, мы видим, что около 12 ГБ не разделены. Нам нужно их укоротить.
Эта команда нужна нам для того, чтобы проверить, где смонтирован образ диска. В моем случае он находится под: / dev / disk3
4. Узнайте фактический размер раздела.
3,9 ГБ и 62,9 МБ - это значения, которые не будут работать с усечением. Нам нужно найти размеры разделов в байтах.
5. Запустите fdisk .
В вашем терминале выполните эту команду:
Где X - это число, которое вы узнали на предыдущем шаге. Это должно привести к чему-то вроде этого:
6. Время усекать !
На вашем терминале,
cd
в каталог, в котором находится ваше изображение. Затем написать:ФАЙЛ твой файл, конечно.
РАЗМЕР - это размер в байтах. Что я сделал, так это добавил к столбцу размера
fdisk
команды, начальному столбцу и умножил на 512. Итак, в моем случае SIZE будет: 512 * (7553024 + 131072) = 3934257152 , что составляет примерно 3,9 ГБ.Вам потребуется начало и размер этого последнего раздела , что проявляется
fdisk
. (Не обязательно самый большой, но тот, что в конце файла IMG)7. (Необязательно) Легко проверьте, не повреждено ли IMG.
Зайдите еще раз в Дисковую утилиту и попробуйте открыть новый файл IMG, как и раньше. Если он монтируется, вы также можете увидеть новый (меньший) размер. Если это не повышается, что-то пошло не так. (Возможно попробуйте увеличить размер в
truncate
команде)Я надеюсь, что кто-то найдет это полезным!
источник
512*(Size+1)
не работает. Как видите, я использовалEnd
и нетSize
, так как вы должны сохранить оба раздела, если их более одного. Таким образом, использование7553024 + 131072
(+1
) на 100% правильно!Недавний Win32DiskImager фактически имеет возможность включать только выделенные разделы в образ диска. Это сделает обрезку в один клик.
источник
Это то, что я недавно заметил, когда выполняю множество операций Win32diskimg для резервного копирования образов RPI для развертывания. Недавно я начал тестировать SD-триммер для очистки частей SD-карты, которые не используются для теоретического выравнивания износа. Не уверен насчет того, какой эффект он будет иметь, но один побочный эффект был, когда я представил образ 16-Гбайт SD-раздела, а затем использовал 7zip для его сжатия. Я перешел с обычных 16 ГБ до 9,5 ГБ, теперь файл размером 2,5 ГБ. Сейчас я проверяю, чтобы убедиться, что все в порядке, но кажется, что использование TRIM для обозначения неиспользуемого пространства как 0 делает сжатие изображения намного более эффективным (что имеет смысл). Просто хотел сообщить, что это было очень легко сделать, и не было нескольких шагов.
источник