Как скопировать содержимое VDI VirtualBox в раздел и выполнить двойную загрузку ОС?

Я пользователь Linux, но я держу сжатый Windows XP ISO со мной на ручном диске для случая, когда я абсолютно нуждаюсь в Windows, чтобы что-то сделать. Это работает в VirtualBox большую часть времени.

Но теперь я хочу играть в некоторые игры, поэтому я хотел бы запустить образ Windows изначально. На моем компьютере нет дисковода для компакт-дисков, поэтому он не может просто записывать ISO и нормально устанавливать.

То, что я пытаюсь сделать, – это перемещать установленный образ Windows в физический раздел NTFS на моем жестком диске и настроить GRUB, чтобы позволить мне его дважды загружать.

Я нашел много учебников, которые касаются создания VDI на физическом диске. Но они предполагают, что я хочу перезаписать весь мой диск. Перемещение образа необработанного диска с dd в раздел привело к поврежденному разделу.

Я также попробовал трюк VMDK использовать этот пустой раздел и установить на него Windows. Хотя фаза текстового режима установки завершается без проблем, виртуальная машина не будет работать, либо сбой, либо перезагрузка, либо сразу же зависает (в зависимости от того, как я создал VMDK, с -rawdisk /dev/sda3 или -rawdisk /dev/sda -partition 3 ).

2 Solutions collect form web for “Как скопировать содержимое VDI VirtualBox в раздел и выполнить двойную загрузку ОС?”

Я провел весь вчера с исследованиями и, наконец, смог сделать загрузку Windows XP. Он должен быть несколько схожим для других ОС. Но операция – это все, но не тривиально.

Поскольку это опасная операция, я рекомендую резервировать ваши драгоценные данные.

Вот шаги:

подготовка

В случае Windows XP вам необходимо забыть текущую букву диска и параметры раздела, поэтому перед миграцией необходимо удалить все значения из ключа HKEY_LOCAL_MACHINE / MountedDevices на виртуальной машине. Ядро восстановит его при следующей перезагрузке. На виртуальных машинах Linux это означает фиксирование fstab после миграции.

Установка изображения VDI

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

Вам нужен драйвер nbd и команда qemu-nbd . На Ubuntu он находится в пакете qemu-kvm .

Сначала загрузите драйвер nbd:

 # modprobe nbd 

Это должно сделать некоторые nbd устройства в /dev .

Затем установите VDI:

 # qemu-nbd -c /dev/nbd0 path_to.vdi 

Это должно сделать /dev/nbd0p1 , /dev/nbd0p2 , /dev/nbd0p3 т. Д. Для всех виртуальных разделов. Они могут монтироваться как обычные устройства.

Миграция раздела

Используйте dd для этого, отключите оба раздела до операции:

 # dd -if=<nbd_device> -of=<real_partition> 

например.:

 # dd -if=/dev/nbd0p3 -of=/dev/sda4 

Работа dd работает, это может занять несколько минут, даже полчаса. Во время операции вы можете открыть терминал и использовать fdisk -l чтобы увидеть, что все идет хорошо.

ОБНОВИТЬ:

По-видимому, nbd не является надежным решением. Это может привести к ошибке ввода-вывода и сбою dd. Более того, следующая попытка не срабатывает немедленно. Вы также можете попробовать сделать необработанный диск VMDK с помощью этой команды (под Linux):

 $ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda 

Вы должны быть в группе disk чтобы заставить его работать. Затем добавьте этот vmdk на виртуальную машину в качестве дополнительного жесткого диска, затем используйте Live Linux ISO для раздела.

Фиксирование загрузочного сектора раздела NTFS

Это хакерская часть.

Мы почти готовы, но Windows XP не загружается, потому что нам нужно установить количество скрытых секторов файловой системы на смещение 0x1C . Это в основном несколько секторов перед секцией NTFS. Мы можем получить это число из команды fdisk -ul . Поле start вывода определяет, в каком секторе начинается данный раздел, который представляет собой в основном число секторов перед разделом. Так что получите номер оттуда, преобразуйте его в шестнадцатеричный, например, с помощью gcalctool.

Откройте раздел с hexedit , например:

 # hexedit /dev/sda4 

Затем напишите количество скрытых секторов в маленьком концевом порядке при смещении 1C . Маленький endiean означает: 0xABCDEFGH будет GH EF CD AB . Если номер гексагона короче, чем 8 цифр, перед ним следует ноль.

По завершении сохраните его и выйдите (Ctrl + X).

Настройка GRUB

Вы должны сказать GRUB, чтобы загружать непосредственно этот раздел, поскольку GRUB добавляет следующую запись в меню:

 title Microsoft Windows XP Professional root (hd0,3) savedefault makeactive chainloader +1 

Где (hdX, Y) идентифицирует раздел. X – 0 для стандартного жесткого диска, 1 для /dev/sda , 2 для /dev/sdb и т. Д. Y – номер раздела. 0 для /dev/sda1 , 1 для /dev/sda2 и т. Д.

Это также должно быть аналогично для GRUB2, но для записей меню используется немного другой синтаксис.

Заключительные штрихи

Новый раздел NTFS готов к загрузке. Но вам все равно нужно взломать доступ к рабочему столу Windows XP. Другие системы могут нуждаться в разных хаках. Сначала необходимо установить boot.ini.

 [boot loader] timeout=1 default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect - [boot loader] timeout=1 default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect по [boot loader] timeout=1 default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect 

Установите соответствующий номер. Я установил его на / dev / sda4. Поэтому номер раздела должен быть 3.

Возможно, вам придется исправить запись MountedDevices в реестре, если Windows зависает прямо перед экраном входа в систему.

Реестр находится в <path to windows>/system32/config/system вы можете просмотреть с помощью chntpw . Это может быть проблемой, если письмо с системным диском не является C. Поскольку возможности записи реестра chntpw весьма ограничены, вам нужно отступить и использовать hexeditor, например ghex2, чтобы исправить это. Вам нужно найти \DosDevices\C: и заменить C на другую букву диска F в моем случае.

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

источники

Перемещение Windows XP в другой раздел

Установите VDI под Linux

Вы можете попробовать использовать partimage и gdisk, чтобы сделать taht. Возьмите gdisk или другую программу раздела и измените размер вашего текущего диска / настройте раздел на диске где-нибудь. Идеально это будет первичный раздел. Обычно я использую раздел 1 для Windows и 2+ для данных linux.

Как только раздел настроен, вы можете использовать gdisk или другой клон-призрак для создания файлов резервных копий или прямого изображения на другом диске. Можно настроить сетевое подключение к хосту, если вам нужно отбросить файл таким образом, или вы можете сделать img-файлы, а затем скопировать из файла vmdk в вашу хост-систему … затем использовать программное обеспечение для восстановления для восстановления раздела К местоположению, которое вы создали в главной системе

Сконфигурируйте grub по мере необходимости, чтобы добавить загрузку в этот раздел ntfs.

Давайте будем гением компьютера.