12

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

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

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

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

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

2 ответа2

4

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

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

Вот шаги:

подготовка

В случае Windows XP вы должны забыть о текущих настройках буквы диска и раздела, поэтому перед переносом вам необходимо удалить все значения из ключа HKEY_LOCAL_MACHINE/ MountingDevices на виртуальной машине. Ядро перестроит его при следующей перезагрузке. На виртуальных машинах 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 в виртуальную машину как вторичный жесткий диск, а затем использовать Linux на ISO для dd раздела.

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

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

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

Откройте раздел с помощью hexedit , вот так:

# hexedit /dev/sda4

Затем запишите число скрытых секторов в порядке с прямым порядком байтов со смещением 1C . Little 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

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

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

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

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

источники

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

Смонтировать VDI под Linux

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .