Как создать образ жесткого диска без незанятого пространства?

542
maxwhere

Мне нужно преобразовать этот жесткий диск с установкой Windows в * .vdi, чтобы создать загрузочный * .img БЕЗ нераспределенного пространства.

this HDD

Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 718847 716800 350M 7 HPFS/NTFS/exFAT  /dev/sdb2 718848 105582591 104863744 50G 7 HPFS/NTFS/exFAT 

Тем не менее, использование VBoxManage convertfromraw /dev/sdb2создает VDI динамического размера, но с неизменным максимумом 223 ГБ. VBoxManage modifyhd --resizeне может уменьшить размер вообще, VBoxManage modifymedium --compactи не меняет его. Запись нулей с помощью sdelete, как это часто предлагается, неприменима, поскольку это нераспределенное пространство.

Использование ddв соответствии с предложением в этой теме сообщения об ошибке сервера, создание двух образов и их последующее объединение приводит к тому, что образ не загружается.

Так как же исключить это нераспределенное пространство исходного HDD?

1
У вас есть место для хранения изображения размером ~ 50,35 ГиБ? Если это так, вы можете использовать `dd` для создания образа ~ 50,35 ГБ диска и создать из него VDI. Вам нужно перенести все данные от начала диска до конца раздела 2 ... т.е. 105 582 591 секторов или (обычно x 512) 54 058 286 592 байт - `dd if = / dev / sdb of = image.dd bs = 4M count = 54058286592 iflag = count_bytes` Attie 6 лет назад 1
Спасибо тебе за помощь! Я не думал идти по дороге ДД. Что касается вашего предложения, то единственный флаг, который я использовал, был count = 10582591, так как при установке для параметра blocksize значения 4M размер полученного изображения удвоился. Не стесняйтесь вставить свой пост как ответ, и я отмечу его как решенный. Приветствия. maxwhere 6 лет назад 2

1 ответ на вопрос

1
Attie

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

Попробуйте использовать dd:

dd if=/dev/sdb of=image.dd bs=4M count=54058286592 iflag=count_bytes 

Здесь countравно количеству байтов для изображения - конец раздела 2, × 512 (размер сектора).

Чтобы затем разрешить больший размер блока (увеличить скорость передачи), вы должны указать, что ваш countаргумент находится в « байтах », а не « входных блоках » (как это было бы по умолчанию) - используйте iflag=count_bytes.