Чи існує чистий спосіб отримати ексклюзивний доступ до фізичного розділу під Windows?


11

У Windows 7 я намагаюся запустити віртуальну машину з VMWare Player з ОС, встановленої на фізичному розділі. Однак, коли я завантажую віртуальну машину, VMWare Player каже, що не може отримати доступ до фізичного диска для запису.

Це, мабуть, є загальновизнаною проблемою у спільноті VMWare, оскільки Windows Vista представила переконливу нову функцію безпеки, яка унеможливлює запис на сирий диск без попереднього отримання виключного доступу до нього.

Я переглянув цю проблему і знайшов кілька шляхів вирішення. Однак чисті , здається, працюють лише на цілих фізичних дисках, а не на перегородках.

Тож я залишився б із брудним рішенням . Коротше кажучи, це поєднується з MBR, щоб стерти будь-який слід використаних розділів, змушує Windows забути про них, а потім відновить MBR, щоб ми могли запустити VM.

Я не впевнений, що хочу це зробити. Чи є спосіб дозволити VMWare отримувати ексклюзивний доступ до розділу, не вимагаючи від мене нуклеуса? Думаю, що я б шукав, це спосіб розмістити лише розділи в автономному режимі замість цілих фізичних дисків.


Більше інформації, пов'язаної з щедротою.

У мене встановлення з подвійним завантаженням: Mac OS - це моя основна операційна система, і в мене також встановлена ​​Windows. Наскільки я можу запустити Windows у віртуальній машині, якщо я не хочу перезавантажуватись, я хотів би мати змогу запустити Mac OS у віртуальній машині, коли я під Windows.

Моя мета - запустити основний розділ Mac OS від VMWare під Windows, як і я запускаю Windows з VMWare Fusion. (Оскільки це моя основна ОС, я не планую виправляти ядро ​​чи що завгодно, щоб він працював у віртуальній машині.) Я створив віртуальну машину з VMWare Fusion (оскільки в ній є тип VM типу "Mac OS X Server") ) потім перемістив його в Windows і змінив його з VMWare Player. Здається, майже працює, оскільки ОС потрапляє на екран завантаження, а потім VM гине, оскільки не може отримати доступ \\.\PhysicalDrive0.

Virtual Box виходить з ладу ще важче, оскільки він запускає Mac OS в багатослідовому режимі і дуже швидко виходить з ладу (але, здається, зможе отримати доступ до розділу), тому, я думаю, було б легше отримати доступ до VMWare до мого розділу, ніж для запуску Virtual Box це.

З юридичної сторони я би запускав одну копію Mac OS X на одній машині з маркуванням Apple, тому я добре.


Цікава проблема. Чи працює, якщо ви створили порожній неформатований розділ?
nhinkle

@nhinkle У мене немає жодної кімнати для запасних перегородок, яку я можу перевірити на своєму внутрішньому диску. Однак з того, що я прочитав, схоже, що Windows заблокує будь-який розділ, який він може розпізнати; і я можу підтвердити, що він все одно заблокує ті, у яких також немає точки кріплення.
zneak

@zneak: Я раніше використовував TrueCrypt для вирішення обмежень щодо Windows. Оскільки він має власний драйвер диска, він може записувати на диск. Чому б не спробувати зробити розділ на віртуальному диску TrueCrypt?
harrymc

@harrymc Я не пробував. Чи потрібно зашифровувати свій розділ Mac OS?
zneak

Вам потрібно буде створити об'єм TrueCrypt на розділі (втрачаючи весь вміст). Це може допомогти показати як, але дивіться також довідку TrueCrypt.
harrymc

Відповіді:


5

Я зіткнувся лише з одним можливим рішенням, використовуючи безкоштовний драйвер віртуального диска imdisk разом з devio (доступ та отримання віддаленого диска). Оскільки imdisk є драйвером ядра, він може бути в змозі записати в розділ. На жаль, оскільки devio працює в користувальницькому режимі, я не надто впевнений, чи підійде такий підхід для вас.

devio може придбати фізичний розділ та опублікувати його в мережі. Наприклад:

devio -r 9000 \\.\PhysicalDrive0 2

публікує з першого диска другий розділ на порту TCP 9000 і чекатиме з'єднання на цьому порту. Краще відключіть брандмауер під час тестування цього та запустіть devio як адміністратор.

Щоб визначити цей опублікований розділ як новий і окремий жорсткий диск, використовуйте:

imdisk -a -t proxy -o ip -f 127.0.0.1 -m R:

який за допомогою localhost створить новий жорсткий диск під назвою R, який не є розділом нічого. Тепер ви можете спробувати, чи можна використовувати справжній жорсткий диск R у віртуальній машині VMware.

Цей підхід детально пояснений у Devio: Віддалений доступ та придбання диска .

Якщо це не працює, вам доведеться:

  1. Прийміть небезпечне рішення, яке модифікує MBR.
  2. Відмовтеся від використання MacOS в Win7 як VM, використовуючи файли в розділі Mac через програми Windows (з проблемами символів в кінці рядка).
  3. Використовуйте продукт віртуальної файлової системи, наприклад, файлова система ELDOS Callback File File , хоча я сумніваюся, що ця проблема коштує для вас кілька тисяч доларів.
  4. Відмовитися від Windows 7 та перейти на XP.
  5. Змініть джерело імдіска так, щоб він, як драйвер ядра, створив диск з видом безпосередньо на фізичному розділі, не потребуючи девіо.

Якщо правильно виконано, редагування MBR не повинно створювати надто великої загрози. Навіть якщо це було б пошкоджено, це не основний розділ ОС, то хто це хвилює? Ви можете це легко виправити!
Прорив

@Breakthrough Я думаю, ви пропускаєте той факт, що обидві ОС знаходяться на одному диску.
zneak

@zneak: Я думаю, що @Breakthrough є правильним - є кілька програм, які дозволяють зберегти, а потім відновити MBR у надзвичайних ситуаціях.
harrymc

Крім того, тільки для запису, VMWare, на жаль, не може використовувати віртуальний привід від imdisk.
zneak

Це правильно, оскільки ImDisk не реєструється коректно в NT Mount Manager за допомогою керуючого коду IOCTL_MOUNTMGR_CREATE_POINT ; замість цього він безпосередньо створює символічне посилання для літери диска, і, звичайно, ядро ​​не вважає це законним томом. Я раніше намагався змусити його працювати, але не досяг успіху. (Це та сама причина, чому ви не можете використовувати том ImDisk для, скажімо, встановлення VHD.)
user541686

2

Це залежить від того, наскільки ви відчайдушно ставитеся до цього, але я б сказав, що це можливо, "просто" двома "легкими" (читати: жорстокими) кроками:

  1. Напишіть драйвер, щоб обійти обмеження, встановлене Windows, використовуючи (напів -?) Документально підтверджений прапор SL_FORCE_DIRECT_WRITE.

  2. Хук CreateFileі / або WriteFileвиклик від VMWare , використовуючи бібліотеку як EasyHook (я сказав вам , що це було легко!) Спілкуватися з файлом вручну за допомогою драйвера, можливо , зв'язок з водієм , використовуючи DeviceIoControl.

Насправді це не так погано, якщо ви знаєте, де шукати інформацію для подолання обмежень ... Я підключив додатки, такі як Nero сам, щоб перевірити IOCTL_SCSI_PASS_THROUGHвиклики, щоб я міг зробити свою власну бібліотеку записуючих компакт-дисків, і це було б не надто складно; писати драйвер буде важче, але керовано.


Редагувати:

Я здогадуюсь, ви вже це зрозуміли, але структура, яку вам потрібно змінити, називається FLT_IO_PARAMETER_BLOCK для IRP_MJ_READ. Не впевнений, наскільки це буде легко, але це не повинно бути занадто важким.


Звучить весело. Я загляну в це завтра.
zneak

@zneak: Якщо ви подивитесь на мою відповідь, imdisk - це доступний драйвер віртуального диска з відкритим кодом, який майже робить вже те, що ви хочете.
harrymc

@Mehrdad У мене дуже схожа проблема, чи можете ви мені допомогти? CreateFile: "Доступ заборонено" навіть з правами адміністратора - Win7
Алі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.