Предупреждение: это очень чувствительная операция. Вы можете очень легко повредить вашу систему и потерять данные. То, что сработало для меня, может не сработать для вас. Было бы разумно сделать любые необходимые резервные копии, прежде чем продолжить.
Мой опыт и этот сайт являются источником этой информации: http://fds-team.de/cms/articles/2013-12/use-a-real-windows-7-partition-in-virtualbox-kvm-vmware- player-u.html Этот сайт также содержит другие подробности, которые могут быть полезны.
Эти инструкции предназначены для Linux Mint 17.1, но шаги должны быть аналогичными для других дистрибутивов Linux, особенно на основе Ubuntu. Я рекомендую использовать KVM вместо VirtualBox, VMware Player или других продуктов VMware. Инструкции по настройке этой функции для чего-то другого, кроме KVM, см. По ссылке.
Почему КВМ? Судя по исследованию, которое я провел, в настоящее время в этой категории, похоже, есть три основных игрока. KVM, VirutalBox и несколько различных продуктов VMware. Продукты VMware не имеют открытого исходного кода, и ни один из них не является бесплатным для коммерческого использования. VirtualBox является бесплатным и открытым исходным кодом, но если вам нужно добавить поддержку USB 2.0, вам необходимо установить пакет расширения, который вы не должны использовать для коммерческого / коммерческого использования. Несмотря на то, что USB 3.0 поддерживается без этого пакета расширения, поддержка USB в VirtualBox более проблематична, чем в продуктах VMware или KVM. KVM является открытым исходным кодом и может свободно использоваться как для личного, так и для коммерческого / коммерческого использования. KVM позволяет избежать накладных расходов, используя модуль ядра, добавленный в Linux, что повышает производительность и совместимость: http://blog.scalecomputing.com/kvm-or-vmware-why-kvm-is-right-for-the-times-part- 1-из-2 /
В следующих инструкциях я объясню, как использовать virt-manager, который будет использовать KVM под капотом, чтобы вы могли использовать графический интерфейс вместо настройки всего в KVM через терминал.
Установите Linux и Windows 7 на одном жестком диске в разных разделах, если они еще не установлены. Если вы устанавливаете их на отдельных дисках, обратитесь к инструкциям в ссылке. Установите их так, чтобы между ними можно было выполнять двойную загрузку. Перед продолжением настройте разделы так, как вы хотите. Примечание. Некоторые установки Windows создают отдельный раздел для режима гибернации. Если вы хотите удалить этот раздел сейчас самое время это сделать. Вам придется искать инструкции для этого, но я знаю, что вы можете сделать это изнутри Windows. Если вы не сделаете это правильно / полностью, раздел может воссоздать сам себя. Поэтому, если вы решите удалить этот раздел, перезагрузите компьютер и снова загрузитесь в Windows, чтобы увидеть, воссоздает ли он раздел.
Загрузиться в Linux.
Определите путь к жесткому диску, который содержит как Linux, так и Windows. Обычно это /dev/sda
В Linux Mint 17.1 вы можете запустить Диски из главного меню, чтобы увидеть путь к вашим жестким дискам. Выберите свой жесткий диск из списка дисководов. Теперь информация о вашем жестком диске займет остальную часть окна. В верхней части этой информации он должен показывать размер вашего жесткого диска жирным шрифтом с нужным вам путем в небольшом тексте под ним.
ПРИМЕЧАНИЕ. С этого момента я буду использовать /dev/sda
для указания пути к жесткому диску, содержащему разделы для Windows 7 и Linux. Вы должны заменить это правильным путем.
Запустите sudo fdisk -l /dev/sda
чтобы получить необходимую информацию о разделах на вашем жестком диске с Windows 7. Скорее всего, вы увидите два NTFS-раздела, используемых в Windows 7. Первый довольно маленький. Содержит загрузчик и систему восстановления. Другой раздел NTFS должен быть намного больше, поскольку он содержит фактическую установку Windows 7. Оба раздела NTFS будут необходимы для виртуальной машины.
Цель: Теперь ваша цель - создать виртуальный жесткий диск. Это позволит вам настроить MBR и оставаться верным независимо от того, загружаете ли вы Windows 7 с виртуальной машины или напрямую. Это избавит вас от необходимости запускать утилиту восстановления каждый раз, когда вы переключаетесь между загрузкой Windows 7 напрямую и с виртуальной машины. Я использую device-mapper для создания линейно отображаемого виртуального жесткого диска, сопоставленного с устройством обратной связи и двумя моими разделами Windows 7. На веб-сайте, с которого я получил большинство из этих шагов, вы используете RAID, однако у меня возникли проблемы с его настройкой. При использовании RAID виртуальный диск был слишком мал из-за округления размера куска. https://unix.stackexchange.com/questions/217078/raid-mdadm-virtual-disk-too-small Настройка линейного сопоставления устройства-сопоставления выглядит более подходящей и позволяет избежать проблемы округления размера куска. Я имел успех с устройством отображения.
Изучите вывод fdisk из предыдущего шага. Определите, сколько байтов занимает один сектор. Если ваши сектора имеют размер 512 байт, как у меня, это облегчит задачу.
Проверьте ваш вывод fdisk еще раз. Определите, сколько секторов не используется до начала первого раздела. В моем случае первый раздел начинается с сектора 2048, что означает, что первые 2048 секторов не используются никаким разделом (0-2047). Содержит загрузчик GRUB.
Создайте изображение байтов из предыдущего шага, используя следующую команду. Вам нужно будет заменить 2048 на правильное количество секторов. Если ваши сектора не 512 байт, вам также нужно указать параметр bs = bytes_per_sector:
dd if=/dev/zero of=boot.mbr count=2048
Теперь у вас должен быть файл образа с именем boot.mbr в вашем текущем каталоге.
Проверьте ваш вывод fdisk еще раз. Определите путь к разделам Windows 7. Для меня они - первые два перечисленных раздела, и они оба используют NTFS. Мои два пути это /dev/sda1
и /dev/sda2
ПРИМЕЧАНИЕ. С этого момента я буду использовать /dev/sda1
и /dev/sda2
для обозначения разделов Windows 7. Вам нужно будет изменить их на правильный путь в вашей системе.
Создайте устройство с обратной связью из файла изображения:
sudo losetup /dev/loop0 boot.mbr
Это позволяет настроить отображение устройства loop0 на виртуальный диск.
Создайте где-нибудь файл, который определит, что будет отображаться на виртуальном диске. Этот файл будет использоваться устройством-картографом. Я поставил мой в ~ / vm / virtual_windows_disk_def.
Внутри ~ / vm / virtual_windows_disk_def создайте линию для каждого сопоставления. Каждая строка должна иметь форму "логический_старт_сектор num_sectors linear destination_device 0". линейный просто означает, что мы делаем линейную карту. destination_device должен быть путем к устройству. 0 означает, что отображение начнется в первом секторе устройства назначения. Первая строка должна отобразить boot.mbr на начало виртуального диска. Вам понадобится дополнительная строка для каждого раздела Windows 7. Это содержимое моего файла:
0 2048 линейный / dev / loop0 0
2048 3072000 линейный / dev / sda1 0
3074048 447886719 линейный / dev / sda2 0
Вот как я получил правильное количество секторов для каждой строки:
blockdev --getsize / dev / loop0
blockdev --getsize / dev / sda1
blockdev --getsize / dev / sda2
Проверьте, присутствует ли / dev / mapper / control. Если нет, попробуйте загрузить модуль ядра dm_mod:
modprobe dm_mod
sudo dmsetup create virtual_windows_disk ~/vm/virtual_windows_disk_def
Убедитесь, что / dev / mapper / virtual_windows_disk имеет правильный размер.
Запустите fdisk в интерактивном режиме, чтобы настроить два раздела на диске / dev / mapper / virtual_windows_disk, чтобы они точно и точно соответствовали двум разделам Windows на диске / dev / sda. Вы можете использовать экранную справку и инструкции для завершения этого процесса. Если вы не можете настроить разделы идеально, выйдите вместо записи / сохранения этих разделов. Насколько я знаю, это то, что должно соответствовать каждому разделу: начальный сектор, конечный сектор, является ли он загрузочным или нет, и тип файловой системы. Замените 512 числом байтов на сектор для вашего диска / dev / sda (это запустит fdisk в интерактивном режиме):
sudo fdisk -b 512 /dev/mapper/virtual_windows_disk
sudo chown your_username:group /dev/mapper/virtual_windows_disk
- Из главного меню запустите Virtual Machine Manager (это virt-manager).
- Внутри virt-manager выберите Файл-> Добавить соединение.
- Убедитесь, что для Hypervisor установлено значение QEMU / KVM.
- Убедитесь, что флажок Подключиться к удаленному хосту снят.
- Убедитесь, что Autoconnect проверен.
- Нажмите "Подключиться", чтобы создать соединение.
- Щелкните правой кнопкой мыши по соединению (localhost (QEMU)) и выберите New.
- Введите имя
- В поле "Выберите способ установки операционной системы" выберите "Импортировать существующий образ диска".
- Нажмите кнопку "Вперед".
- В разделе "Укажите существующий путь хранения" нажмите "Обзор" и выберите / dev / md-0 (в моей системе это автоматически настраивалось как псевдоним / dev / mapper / virtual_windows_disk)
- Продолжайте идти вперед, пока не запустится виртуальная машина. Это должно указывать на проблему, которую необходимо устранить. Windows не должна загружаться из-за этой проблемы, но, по крайней мере, если вы получите эти результаты, вы на правильном пути.
- Выключите виртуальную машину.
- Прикрепите установочный / восстановительный DVD / образ Windows к виртуальной машине. На моем компьютере уже была установлена Windows, но Toshiba предоставила способ создания установочных / ремонтных DVD-дисков. Для меня мне нужно использовать диск 4, так как это диск с Windows Recovery Environment на нем. Я смог создать ISO-образ этого диска изнутри Linux. Я предпочитаю просто подключать ISO-образ к виртуальной машине в качестве CD-привода, а не помещать диск в дисковод, но в любом случае это работает.
- В области сведений о виртуальной машине выберите "Параметры загрузки". Убедитесь, что "Включить загрузочное меню" отмечен. Убедитесь, что Hard Disk и CDROM отмечены, указывая, что они будут опциями загрузки. Переместите жесткий диск на верх с CDROM чуть ниже, используя кнопки со стрелками. Нажмите кнопку "Применить", чтобы сохранить изменения. Теперь, когда виртуальная машина загружается, она должна немного подождать, чтобы дать вам возможность нажать F12, чтобы выбрать устройство для загрузки.
- Запустите виртуальную машину и нажмите F12 для доступа к меню загрузки.
- Загрузитесь с привода DVD / CDROM. Это должно начать ваш диск установки / восстановления Windows.
- В инструкциях с другого сайта говорится, что нужно нажать Shift + F10 для доступа к командной строке, но для меня это ничего не значит. Мне пришлось выбрать параметры восстановления системы (вместо параметров восстановления Toshiba). Следующий.
- В моей системе автоматически запускается диагностика, и компьютер предлагает устранить обнаруженную проблему. Не позволяйте ему делать ремонт, выберите другой вариант.
- Убедитесь, что выбрано «Использовать инструменты восстановления ...» вместо «Восстановить компьютер с помощью образа системы ...». Вы должны увидеть Windows 7 в списке операционных систем. Убедитесь, что выбрано и нажмите "Далее". Нажмите на ссылку «Просмотреть дополнительные параметры ...»
- Выберите Открыть командную строку.
Введите эту команду в командной строке:
bootrec /FixMbr
Теперь ваша виртуальная машина должна быть загрузочной, но пока не делайте этого.
Определите, какая буква диска была назначена вашей установке Windows, введя в командной строке следующие команды:
dir C:
dir D:
Один из них должен указывать, что буква диска не пуста и содержит ваши файлы. Это правильная буква диска, которая понадобится вам для следующего шага. Для меня это был диск С.
Теперь вам нужно найти подпись вашего диска в реестре. Введите эти команды в командной строке:
reg load HKLM\Computer_System D:\Windows\system32\config\system
regedit
- Перейдите к HKEY_LOCAL_MACHINE\Computer_System\ MountingDevices. Найдите запись \ DosDevices \ X: где X соответствует букве диска два шага назад. Вам нужно будет сослаться на данные из этой записи для следующего шага.
Не закрывая редактор реестра, активируйте окно командной строки. Введите следующие команды:
diskpart
DISKPART> select disk 0
Для следующего шага вам нужно будет заменить буквы в конце на первые четыре набора символов, которые в настоящее время отображаются в значении для этой записи в редакторе реестра. Тем не менее, вам нужно будет изменить порядок наборов. Например, если вы видите ab cd ef gh, вам понадобится ghefcdab в конце команды:
DISKPART> уникальный uniqueid disk id=ghefcdab
- Введите эту команду:
exit
. Программа diskpart должна выйти, оставив вас в обычной командной строке.
- Закройте редактор реестра.
- Введите это в командной строке:
reg unload HKLM\Computer_System
- Закройте командную строку.
- Если вы видите возможность перезагрузки или выключения, сделайте это сейчас. В противном случае дайте команду VM выключиться. Если это не сработает, выключите виртуальную машину. Если ваша виртуальная машина выключена, оставьте это так. Если он перезапустился, либо выключите его вручную, либо, если это невозможно, принудительно выключите его.
- В подробностях вашей виртуальной машины проверьте стрелку "конфигурации", чтобы показать больше опций. Нажмите кнопку "Копировать конфигурацию центрального процессора". Нажмите кнопку "Применить". Вы закончили! Следующие шаги помогут вам подтвердить, что все работает правильно.
- Запустите ВМ. Он должен нормально загружаться в Windows без каких-либо проблем или необходимости ремонта. Выключите ВМ.
- Не отводите глаз от экрана во время этого следующего шага. Завершите работу системы, выбрав Hibernate (в противном случае вам придется повторить некоторые шаги при повторной загрузке Linux). Запустите компьютер, а затем загрузитесь в Windows напрямую. Внимательно смотрите на экран, чтобы увидеть, если какой-либо ремонт происходит или требуется. Если все правильно, он должен загрузиться в Windows без необходимости или ремонта. В моей системе, когда все настроено неправильно, она автоматически восстанавливает Windows, а затем загружается в Windows, как будто ничего плохого не произошло, поэтому вы должны внимательно следить за экраном. Если требуется ремонт, что-то пошло не так с изменением подписи, которое вы сделали в diskpart. Загрузитесь в Linux и повторите соответствующие шаги, соблюдая осторожность, чтобы получить правильную подпись.
Предложение
Шаги, включающие создание устройства с обратной связью и настройку виртуального диска /dev /dm-0 с помощью device-mapper, будут повторяться при каждой загрузке Linux. Вы должны написать скрипт так, чтобы вы могли просто запустить скрипт перед запуском virt-manager. Пока этот сценарий выходит за рамки этого ответа, но я могу добавить его позже, после того, как создам его для своей системы.
подсказки
- Поскольку вы пытаетесь заставить все работать, если вам нужно перезагрузить компьютер во время работы Linux с целью загрузки непосредственно в Windows, я предлагаю перейти в спящий режим и затем запустить компьютер. Таким образом, когда вы в конечном итоге запустите Linux снова, вы не потеряете работу, которую сделали. Это поможет вам, пока вы не получите настройку скрипта, но это не постоянное решение, так как вам в конечном итоге потребуется полностью перезапустить Linux для реального использования.
- Если вы застряли где-то из-за проблем с virt-manager или KVM, вы можете попробовать другие варианты, такие как VirtualBox или VMware Player. Поскольку это решение создает виртуальный диск, вы можете переключаться между различными программами виртуальной машины без потери прогресса. Даже после того, как все работает, это часть красоты этого решения. В любое время вы можете запустить ту же установку Windows из обычной загрузки Windows или из любой программы виртуальной машины по вашему выбору. Только не запускайте более одной виртуальной машины одновременно.
- Веб-сайт, на котором появилась большая часть этой информации, предполагает, что вы, вероятно, получите гораздо лучшую производительность KVM, если вы установите драйверы VirtIO в вашей установке Windows. Я еще не пробовал это.