В Windows 7 я пытаюсь запустить виртуальную машину с VMWare Player из операционной системы, установленной в физическом разделе. Однако, когда я загружаю виртуальную машину, VMWare Player говорит, что не может получить доступ к физическому диску для записи.
Похоже, что это общепризнанная проблема в сообществе VMWare, поскольку в Windows Vista появилась новая привлекательная функция безопасности, которая делает невозможным запись на сырой диск без предварительного эксклюзивного доступа к нему.
Я погуглил проблему и нашел несколько обходных путей. Однако чистые , похоже, работают только на целых физических дисках, а не на разделах.
Так что я остался бы с грязным решением . Короче говоря, он вмешивается в MBR, чтобы стереть любые следы используемых разделов, заставляет Windows забыть о них, а затем восстанавливает MBR, чтобы мы могли запустить виртуальную машину.
Я не уверен, что хочу это сделать. Есть ли способ позволить VMWare получить эксклюзивный доступ к разделу, не требуя от меня его уничтожения? Полагаю, я бы искал способ перевести в автономный режим только разделы вместо целых физических дисков.
Больше информации, связанной с щедростью.
У меня двойная загрузка: Mac OS - моя основная операционная система, и у меня также установлена Windows. Я могу запускать Windows на виртуальной машине, если не хочу перезагружаться, но я бы хотел иметь возможность запускать Mac OS на виртуальной машине, когда я нахожусь под Windows.
Моя цель - запустить мой основной раздел Mac OS из VMWare под Windows, так же, как я запускаю Windows из VMWare Fusion. (Поскольку это моя основная ОС, я не планирую исправлять ядро или что-то еще, чтобы оно работало на виртуальной машине.) Я создал виртуальную машину из VMWare Fusion (так как она имеет тип виртуальной машины «Mac OS X Server») ) затем переместил его в Windows и изменил его из VMWare Player. Кажется, почти работает, когда ОС попадает на экран загрузки, а затем виртуальная машина умирает, потому что она не может получить доступ \\.\PhysicalDrive0
.
Virtual Box дает сбой еще сильнее, так как он запускает Mac OS в подробном режиме и очень быстро падает (но, похоже, может получить доступ к разделу), поэтому я думаю, что было бы проще получить доступ к моему разделу VMWare, чем запускать Virtual Box Это.
С юридической точки зрения, я бы запустил одну копию Mac OS X на одном компьютере с Apple, так что я в порядке.
Ответы:
Я встречал только одно возможное решение, используя бесплатный драйвер виртуального диска imdisk вместе с devio (удаленный доступ к накопителю и получение данных). Поскольку imdisk является драйвером ядра, он может выполнять запись в раздел. К сожалению, поскольку devio работает в пользовательском режиме, я не слишком уверен, будет ли этот подход работать для вас.
devio может получить физический раздел и опубликовать его в сети. Например:
публикует с первого диска второй раздел по TCP-порту 9000 и будет ожидать подключения к этому порту. Лучше отключите брандмауэр во время тестирования и запустите devio от имени администратора.
Чтобы определить этот опубликованный раздел как новый и автономный жесткий диск, используйте:
который с помощью localhost создаст новый жесткий диск с именем R, который не является разделом чего-либо. Теперь вы можете попытаться использовать настоящий виртуальный жесткий диск R в виртуальной машине VMware.
Этот подход подробно объясняется в Devio: Удаленный доступ к накопителю и его приобретение .
Если это не сработает, вам придется:
источник
Это зависит от того, насколько вы отчаянно пытаетесь заставить это работать, но я бы сказал, что это возможно, с помощью «всего лишь» двух «простых» (читай: жестоких) шагов:
Напишите драйвер, чтобы обойти ограничение, установленное Windows, используя (полу -?) Документированный флаг
SL_FORCE_DIRECT_WRITE
.Хук
CreateFile
и / илиWriteFile
вызов от VMWare , используя библиотеку как EasyHook (я сказал вам , что это было легко!) Общаться с файлом вручную с помощью драйвера, возможно , связь с водителем , используяDeviceIoControl
.На самом деле это звучит не так уж плохо, если вы знаете, где искать информацию для обхода ограничений ... Я подключил такие приложения, как Nero, для проверки
IOCTL_SCSI_PASS_THROUGH
вызовов, чтобы я мог создать свою собственную библиотеку для записи компакт-дисков, и это не будет слишком сложно; Написание драйвера будет сложнее, но управляемым.Редактировать:
Я предполагаю, что вы уже поняли это, но структура, которую вам нужно изменить, называется FLT_IO_PARAMETER_BLOCK для
IRP_MJ_READ
. Не уверен, насколько легко это будет, но это не должно быть слишком сложно.источник