Как использовать реальный раздел с установленной Windows 7 в virtualbox vm?


37

Моя Ubuntu 12.04 установлена /dev/sda5 и Windows 7 включена /dev/sda1. Когда я запускаю Ubuntu, я хотел бы использовать Virtualbox для запуска Windows 7 на виртуальной машине. Раздел Windows 7 занимает 1 ТБ и наполовину заполнен, то есть большой, поэтому я не хочу копировать его на виртуальный жесткий диск.

Я читал, что для виртуальной машины Virtualbox можно использовать настоящий жесткий диск, но различные инструкции, которые я нашел, отличаются друг от друга, и я не могу заставить его работать. Кто-нибудь знает способ заставить его работать в Ubuntu 12.04 и Virtualbox 2.1.12_Ubuntu r77245 (последняя версия Ubuntu установила репозитории)?

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


Почему ваш MSWIN раздел 1TiB? Хотя это не полное решение: если возможно, переместите туда все, что не нужно (данные ... медиа-файлы?), А затем измените размер раздела, что облегчит любой подход. Если вы хотите пойти по пути изображения, очистка, а затем уменьшение этого раздела оставит вам достаточно места для создания полного изображения нового меньшего раздела. :-)
Аластер

Ответы:


27

Команда, которую вы хотите

VBoxManage internalcommands createrawvmdk -filename Win7.vmdk -rawdisk /dev/sda -partitions 1

Это создаст специальный файл виртуального диска VMDK (Win7.vmdk), который фактически является указателем на раздел диска хоста /dev/sda1.

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

  • (а) Я никогда не пробовал это, поэтому не знаю, насколько это надежно
  • (b) у вас могут возникнуть проблемы с активацией Windows в зависимости от вашего лицензионного ключа и от того, решит ли Windows, что обнаруженное «оборудование» значительно изменилось

Спасибо. Я даже не думал о проблеме активации. Это обязательно положит конец моим планам.
Джаз

1
Кроме того, даже если это сработало (в чем я сомневаюсь), вы можете серьезно повредить Windows при запуске как из-за загрузки, так и из виртуальной машины.
Таккат

@ ubnewbie2: Вероятно, я бы попробовал это только в качестве эксперимента и / или при использовании какого-либо ключа корпоративного лицензирования, и я бы, вероятно, рассматривал его как одностороннюю операцию; то есть у вас будет больше трудностей, пытаясь изменить это. На самом деле я использую Windows 7 и использую виртуальную машину VirtualBox с Ubuntu, часто в полноэкранном режиме, поэтому на ПК, похоже, работает только Linux, и я был бы уверен в том, что Ubuntu будет работать с разделом сырого диска.
StarNamer

К вашему сведению, я уже попробовал это, наоборот. Мне нужно было сменить машину с Ubuntu на Win 7, поэтому освободил место, изменив размеры разделов и создав новый, и установив Win 7. Это заменило grub2 на загрузчик Windows, поэтому я установил VirtualBox и создал новую виртуальную машину, минимальный виртуальный диск для бронирования, который затем использует существующие «сырые» разделы для запуска. Он работает нормально, хотя и немного вяло из-за уменьшения памяти и просмотра только 1 ядра процессора (вместо 4).
StarNamer

-partitions в конце список разделов, которые вы хотите, чтобы виртуальный блок «видел» (не раздел #, который вы хотите использовать) VBoxManage internalcommands --help, покажет вам другие вещи, которые вы можете делать с внутренними командами, а также значение этих опций.
кодек

16

Да , вы можете сделать это с внутренней createrawvmdkкомандой, которая не создать весь образ диска, но указатель на имеющееся оборудование.

Есть два способа сделать это

  • A. Полный образ диска (из / dev / sdb)

    sudo VBoxManage internalcommands createrawvmdk -filename sdb.vmdk -rawdisk /dev/sdb
    
  • B. Разделение изображения

    Как показывает @StarNamer, вы можете использовать только один или несколько разделов.

    Чтобы создать образ только одного (/ dev / sda1) раздела:

    sudo VBoxManage internalcommands createrawvmdk -filename sda1.vmdk -rawdisk /dev/sda -partitions 1
    

    Чтобы создать пользовательскую таблицу разделов, которая будет отображать / dev / sda2 и / dev / sda1 в следующем порядке:

    sudo VBoxManage internalcommands createrawvmdk -filename sda2_1.vmdk -rawdisk /dev/sda -partitions 2,1
    

Наиболее поразительным отличием будет то, что полный образ диска будет использовать загрузчик и таблицу разделов в точности так, как они находятся на вашем диске, поэтому теоретически (я делал это ранее только в qemu) вы сможете настроить ОС с вашей виртуальной машины. И из своего ограниченного опыта могу сказать, что полный образ диска будет работать точно так же qemu -hda /dev/sdb.

Примечание: Если вы используете пользователь для доступа к диску, необходимо добавить его diskи vboxusersгруппу, например ,

sudo usermod -aG disk,vboxusers ubuntu

затем убедитесь, что вы повторно вошли в систему или перезагрузите компьютер.

Дальнейшее чтение:


«полный образ диска будет использовать загрузчик и таблицу разделов в точности так, как они есть на вашем диске» - при каком сценарии, первый (/ dev / sdb) или второй (с указанными разделами)?
naught101

1
Кроме того, virtualbox должен быть запущен с правами суперпользователя, в противном случае вы получите Permission problem accessing the file for the medium '/home/naught101/sda2_windows.vmdk'
naught101

3
Msgstr "Кроме того, виртуальный ящик должен быть запущен от имени пользователя root". На самом деле нет, вы должны быть членом группового диска. Гораздо безопаснее, чем запускать виртуальный ящик от имени пользователя root.

2
Вот что у меня работало с Ubuntu 16.04 в качестве хост-системы и Windows 10 в качестве гостя: я создал файл .vmdk, используя sudo VBoxManage internalcommands createrawvmdk -filename sda1_2_3.vmdk -rawdisk /dev/sda -partitions 1, 2, 3. Таким образом, я включил раздел Windows, а также раздел загрузчика EFI. Затем я следовал инструкциям шилки на virtualbox.org/ticket/7702 и добавил cloverefiboot. Работает как шарм!
Дзманто

Вы также можете добавить к команде VirutalBox (и VBoxManage) префикс, sudo -g diskчтобы предоставить только доступ к virtualbox, но не всем другим вашим процессам.
Ян Худек

0

Существует опция Disk, называемая «Immutable», поэтому теоретически, если вы выберете эту опцию для vmdk, связывающего ваш сырой диск, он не должен изменять исходный раздел.

Для этого откройте «Virtual Media Manager», найденный в «File», выберите ваше изображение и нажмите «Modify» (вы должны убедиться, что это изображение не подключено ни к какому компьютеру, в противном случае вы получите ошибку). Теперь вы можете установить тип носителя «неизменяемый».

Я не проверял это, хотя. Если кто-то и делает (конечно, с тестовой настройкой), было бы хорошо сообщить здесь.

Есть ли у кого соображения, которые высказываются против этой идеи?


0

Уже несколько лет я использую Windows и Ubuntu с двойной загрузкой, а раздел Ubuntu также загружается в Windows VirtualBox, чтобы воспользоваться возможностями сенсорного экрана, которые Linux еще не освоил.

Я установил это с инструкциями, подобными ниже;

Новые машины могут одновременно обрабатывать обе ОС лучше, чем отдельные системы на старых машинах.

Недостаток: вам нужно сохранить инструкции, которые вы используете для настройки, на случай, если обновление отключит соединение VirtualBox (моя текущая проблема).


0

После многих попыток я получил аккуратное и чистое решение:

  1. Загрузите раздел Windows, который вы хотите виртуализировать
  2. Загрузите утилиту Disk2VHD от Sysinternals
  3. Если у вас есть раздел UEFI , следуйте этим инструкциям
  4. Создайте образ VHD (не VHD X ) вашего C: раздела, восстановления, UEFI (если есть) и всего, что вы хотите
  5. Вернитесь в Linux, откройте VirtualBox и создайте виртуальную машину в соответствии со спецификациями операционной системы Windows.
  6. Подключите к этой виртуальной машине диск VHD, созданный в точке 4
  7. это оно
  8. прибыль

Устранение неполадок в случае UEFI:

  1. В настройках виртуальной машины в VirtualBox установите флажок «Включить EFI» на вкладке «Система».
  2. Если вы застряли в EFI Shell, выполните следующую команду:

    fs0:\EFI\Boot\bkpbootx64.efi
    

Некоторые комментарии по поводу downvote?
garlix

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

0

VirtualBox имеет много недостатков. Я оставляю это несколько лет назад. Теперь я использую qemu-kvm, и помимо других полезных функций, он может быть настроен на использование дискового устройства так же, как образ диска. Хитрость заключается в настройке виртуального «-drive if = sd, id = sda, format = raw, file = / dev / sda».

Но! Прежде чем пытаться виртуализировать его, необходимо сначала внести некоторые изменения во время работы MSW на голом железе: посмотрите на папку «Drivers», чтобы найти нужные драйверы, и в дереве «Registry», чтобы эти драйверы были включены и настроены на запустить до запуска системы, как:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\msahci] "Start"=dword:00000000

Вы должны искать драйвер appropet относительно виртуальной машины, если вы не хотите видеть BSOD.

Трудно сказать, какие драйверы активировать. Лучше всего сначала установить тестовую систему, а затем найти в ней регистр для регистрационного ключа с помощью «Start» = dword: 00000000, а затем установить этот ключ на «голое железо». Также рекомендуется проверить MAC-адрес на голом металле, чтобы поместить его в конфигурацию qemu. Вы можете запретить системе запрашивать новую активацию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.