Как использовать команду DD для копирования файлов VHD на физический жесткий диск



Попробуйте наш инструмент устранения неполадок

Файлы виртуального жесткого диска (VHD) - это гигантские файлы, имитирующие использование физических носителей в VirtualBox и некоторых других виртуальных эмуляторах x86 / x86_64. Это позволяет запускать Windows, OS X, MS-DOS, FreeBSD, OpenBSD, OS / 2 или даже другие версии Linux внутри вашего дистрибутива Linux. Эти файлы не позволяют напрямую записывать их содержимое на физический диск с помощью команды dd, которая позволяет делать то же самое с ISO, но есть способ сделать это. Хотя в некоторых руководствах требуется преобразовать файл VHD в ISO, вам не нужно этого делать, если вы используете VirtualBox в любой современной версии Linux. У пользователей QEMU тоже есть выход, хотя он требует дополнительных экспериментов.



Вам необходимо убедиться, что ни один из дисков или разделов, с которыми вы собираетесь работать, не является тем, с которого вы загружаетесь. В этом примере мы просто использовали часть разделенной памяти NAND, но вы можете использовать Live DVD или загрузку с USB, если иначе вы не сможете это сделать. Независимо от того, каким способом вы загрузили рассматриваемую машину, запустите программу терминала, удерживая клавиши Ctrl, Alt и T, выполнив поиск в Ubuntu Dash или открыв ее из подменю System Tools в Xfce4 или LXDE.



Метод 1. Использование VBoxManage из командной строки

Безусловно, самый простой способ сделать это - использовать традиционную установку VirtualBox. Прежде всего, убедитесь, что вы создали резервную копию всех данных, которые беспокоят вас потерять, потому что вы собираетесь уничтожить все данные на физическом оборудовании места назначения, в то время как вы также можете что-то сделать с файлом VHD или VHDX в процессе. Это касается и другого метода, а также всего, что связано с такими деструктивными командами.



Как только вы убедитесь, что все в безопасности и целевой диск отключен, но все еще подключен к машине, скажем, внешний жесткий диск, который вы все еще подключили, но не смонтирован или даже может быть сырым, поскольку вы потеряете все на нем. в процессе запустить VBoxManage clonehd freeBSD.VHDX –формат RAW freeBSD.RAW при замене freeBSD.VHDX своим виртуальным жестким диском. У нас был файл виртуального жесткого диска с несколько умеренной установкой FreeBSD для тестирования, отсюда и название.

Как только эта команда будет завершена, запустите sudo dd if = freeBSD.RAW of = / dev / sde , заменив имя файла RAW на только что созданный RAW, а блочное устройство sde - на устройство, которое вам действительно интересно. Если вы не уверены, вы всегда можете запустить sudo fdisk -l чтобы убедиться, что вы знаете правильное имя раздела. Как и при использовании dd для чего-либо еще, вы не хотите писать не на то устройство.

Вы можете получить сообщение об отсутствии свободного места на устройстве, как если бы вы пытались записать большой файл на меньшее устройство, но это не вызвало проблем в тестах. Кажется, этот процесс добавляет лишние нули. В противном случае вы могли скопировать виртуальный диск на физический всего за два шага с минимальным количеством дурацких действий.



Метод 2: с помощью команды сервера блочного устройства QEMU Disk Network

Пользователи, которые имеют доступ только к системе виртуализации Quick Emulator (QEMU), будут иметь дело с несколько более сложной процедурой, чем те, у которых есть доступ к команде VBoxManage. В командной строке запустите sudo modprobe nbd с последующим qemu-nbd -r -c / dev / ndb0 -f vpc ourTest.vhd , при этом имя файла изменено в соответствии с фактическим именем файла, с которым вы работаете. Для запуска qemu-nbd может потребоваться sudo, в зависимости от того, как вы настроили установку. Если вы копируете команды отсюда и вставляете их, обязательно измените их перед запуском. В большинстве случаев вам придется беспокоиться только об устройстве ndb0, поэтому у вас не должно возникнуть никаких проблем.

Как только это будет сделано, вы можете записать раздел с помощью qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd с последующим sudo ddrescure -v -f / dev / nbd2 / dev / sde2 , но не забудьте заменить файлы устройства теми, которые вам действительно нужны. Если вы копируете и вставляете их в свой собственный терминал, обязательно замените эти имена файлов и номера разделов на те, в которые вы пытаетесь писать. Наше устройство / dev / sde было просто использованной картой SDHC, которую мы использовали для безопасного тестирования, ничего не повредив. Вам может потребоваться sudo для запуска qemu-nbd, но он вам не нужен. Точно так же вам, возможно, придется отказаться от номеров разделов в зависимости от вашей конфигурации. По этим причинам процесс QEMU не такой интуитивно понятный.

Пользователи Hyper-V могут иметь образ VHDX вместо файла VHD. В этом случае вам нужно будет запустить qemu-nbd -c / dev / nbd0 -f VHDX ourTest.vhd при повторной замене имени файла. Хотя этот формат был дополнением к Windows Server 2012 с целью увеличения емкости хранилища для виртуализированных машин, все больше и больше пользователей Linux обращаются к нему, чтобы избежать ограничения в 2 ТБ, которое имеет VHD. В противном случае эти инструкции должны работать независимо от фактического размера рассматриваемого файла. Утилита GNU ddrescue должна работать как dd, хотя сначала копирует лучшие блоки.

После запуска пользователям, работающим с образами VHDX, потребуется запустить sudo ddrescue -v -f / dev / nbd2 / dev / sde2 , снова заменяя файлы выше. В противном случае любой, у кого есть все типы образов VirtualBox, может использовать qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd чтобы смонтировать рассматриваемый раздел, как если бы это был любой старый диск. Вам нужно будет использовать sudo mount / dev / nbd2 / cdrom или же sudo mount / dev / nbd2 / mnt смонтировать его. Перед тем, как попробовать, убедитесь, что у вас больше ничего не смонтировано в каталогах / cdrom или / mnt.

Метод 3: размонтирование, а затем отключение файла

Чтобы размонтировать образ, вам просто нужно использовать sudo umount / mnt или же sudo umount / cdrom отсоединить его. В конце концов, само ядро ​​Linux было занято обращением с ним, как с любым другим томом.

Однако вам все равно придется отключить его от системы QEMU, поэтому введите qemu-ndb -d / dev / nbd2 отключить его.

4 минуты на чтение