Existe-t-il un moyen propre d'obtenir un accès exclusif à une partition physique sous Windows?

11

J'essaie, sous Windows 7, d'exécuter une machine virtuelle avec VMWare Player à partir d'un système d'exploitation installé sur une partition physique. Cependant, lorsque je démarre la machine virtuelle, VMWare Player indique qu'il ne peut pas accéder au lecteur physique pour l'écriture.

Cela semble être un problème généralement reconnu dans la communauté VMWare, car Windows Vista a introduit une nouvelle fonctionnalité de sécurité convaincante qui rend impossible l'écriture sur un disque brut sans obtenir au préalable un accès exclusif à celui-ci.

J'ai googlé le problème et trouvé quelques solutions de contournement. Cependant, les plus propres ne semblent fonctionner que sur des disques physiques entiers, et non sur des partitions.

Je serais donc laissé avec la sale solution . En bref, il se mêle du MBR pour effacer toute trace des partitions à utiliser, fait que Windows les oublie, puis restaure le MBR pour que nous puissions lancer la VM.

Je ne suis pas sûr de vouloir faire ça. Existe-t-il un moyen de laisser VMWare acquérir un accès exclusif à la partition sans m'obliger à la supprimer? Ce que je rechercherais, je suppose, est un moyen de mettre uniquement des partitions hors ligne au lieu de disques physiques entiers.


Plus d'infos sur la prime.

J'ai une configuration à double démarrage: Mac OS est mon système d'exploitation principal et Windows est également installé. Autant que je peux exécuter Windows sur une machine virtuelle si je ne veux pas redémarrer, j'aimerais pouvoir exécuter Mac OS sur une machine virtuelle lorsque je suis sous Windows.

Mon objectif est d'exécuter ma principale partition Mac OS à partir de VMWare sous Windows, tout comme j'exécute Windows à partir de VMWare Fusion. (Puisque c'est mon OS principal, je ne prévois pas de patcher le noyau ou quoi que ce soit pour le faire fonctionner dans une machine virtuelle.) J'ai créé la machine virtuelle à partir de VMWare Fusion (car elle a le type de machine virtuelle "Mac OS X Server" ), puis déplacé vers Windows et modifié à partir de VMWare Player. Semble presque fonctionner, car le système d'exploitation arrive à l'écran de chargement, puis la machine virtuelle meurt car elle ne peut pas y accéder \\.\PhysicalDrive0.

Virtual Box échoue encore plus, car il démarre Mac OS en mode verbeux et se bloque très rapidement (mais semble pouvoir accéder à la partition), donc je pense qu'il serait plus facile d'obtenir VMWare d'accéder à ma partition que d'obtenir Virtual Box pour fonctionner il.

Sur le plan juridique, j'exécuterais une copie de Mac OS X sur une machine labellisée Apple, donc ça va.

zneak
la source
Problème intéressant. Cela fonctionne-t-il si vous créez une partition vierge et non formatée?
nhinkle
@nhinkle Je n'ai pas de salle de partition de rechange avec laquelle je peux tester sur mon disque interne. Cependant, d'après ce que j'ai lu, il semble que Windows verrouille toutes les partitions qu'il peut reconnaître; et je peux confirmer qu'il bloquera également ceux qui n'ont pas de point de montage.
zneak
@zneak: J'ai utilisé TrueCrypt dans le passé pour contourner les restrictions de Windows. Comme il possède son propre pilote de disque, il peut être en mesure d'écrire sur le disque. Pourquoi n'essayez-vous pas de faire de la partition un disque virtuel TrueCrypt?
harrymc
@harrymc je n'ai pas essayé. Dois-je crypter ma partition Mac OS?
zneak
Vous devrez créer un volume TrueCrypt sur la partition (en perdant tout le contenu). Cela peut aider à montrer comment, mais consultez également l'aide de TrueCrypt.
harrymc

Réponses:

5

Je n'ai rencontré qu'une seule solution possible, en utilisant le pilote de disque virtuel gratuit imdisk avec devio (accès et acquisition à distance). Comme imdisk est un pilote du noyau, il peut être capable d'écrire sur la partition. Malheureusement, comme devio fonctionne en mode utilisateur, je ne sais pas trop si cette approche fonctionnera pour vous.

devio peut acquérir une partition physique et la publier sur le réseau. Par exemple:

devio -r 9000 \\.\PhysicalDrive0 2

publie depuis le premier disque la deuxième partition sur le port TCP 9000 et attend une connexion sur ce port. Mieux vaut désactiver le pare-feu pendant le test et exécuter devio en tant qu'administrateur.

Pour définir cette partition publiée en tant que nouveau disque dur autonome, utilisez:

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

qui en utilisant localhost va créer un nouveau disque dur appelé R qui n'est pas une partition de quoi que ce soit. Vous pouvez maintenant essayer d'utiliser le prétendu vrai disque dur R dans une machine virtuelle VMware.

Cette approche est expliquée en détail dans Devio: accès et acquisition de lecteur à distance .

Si cela ne fonctionne pas, vous devrez soit:

  1. Acceptez une solution dangereuse qui modifie le MBR.
  2. Abandonner l'utilisation de MacOS dans Win7 en tant que machine virtuelle, en utilisant des fichiers dans la partition Mac via des applications Windows (avec des problèmes de caractères de fin de ligne).
  3. Utilisez un produit Virtual File System, tel que ELDOS Callback File System , bien que je doute que ce problème vaille pour quelques milliers de dollars.
  4. Abandonnez Windows 7 et rétrogradez vers XP.
  5. Modifiez la source d'imdisk afin qu'en tant que pilote du noyau, il crée un disque factice directement sur la partition physique, sans avoir besoin de devio.
harrymc
la source
Si elle est effectuée correctement, la modification du MBR ne devrait pas représenter une menace trop importante. Même s'il devait être corrompu, ce n'est pas la partition principale du système d'exploitation, alors qui s'en soucie? Vous pouvez facilement le réparer!
Percée du
@Breakthrough Je pense que vous manquez le fait que les deux OS sont sur le même disque.
zneak
@zneak: Je pense que @Breakthrough a raison - il existe plusieurs programmes qui peuvent enregistrer puis restaurer le MBR en cas d'urgence.
harrymc
De plus, pour mémoire, VMWare ne peut malheureusement pas utiliser un lecteur virtuel à partir d'imdisk.
zneak
C'est correct, car ImDisk ne s'enregistre pas correctement avec NT Mount Manager à l'aide du code de contrôle IOCTL_MOUNTMGR_CREATE_POINT ; au lieu de cela, il crée directement un lien symbolique pour la lettre de lecteur, et bien sûr, le noyau ne considère pas cela comme un volume légitime. J'ai déjà essayé de le faire fonctionner, mais je n'y suis pas parvenu. (C'est la même raison pour laquelle vous ne pouvez pas utiliser un volume ImDisk pour, par exemple, monter un disque dur virtuel.)
user541686
2

Cela dépend de votre désespoir pour que cela fonctionne, mais je dirais que c'est possible, avec "juste" deux étapes "faciles" (lire: brutales):

  1. Écrivez un pilote pour contourner la restriction définie par Windows, en utilisant l'indicateur documenté (semi -?) SL_FORCE_DIRECT_WRITE.

  2. Accrochez CreateFileet / ou WriteFileappelez de VMWare en utilisant une bibliothèque comme EasyHook (je vous ai dit que c'était facile!) Pour communiquer manuellement avec le pilote avec le fichier, peut-être en communiquant avec le pilote en utilisant DeviceIoControl.

En fait, cela ne semble pas si mal, si vous savez où chercher les informations pour contourner les restrictions ... J'ai accroché des applications comme Nero moi-même afin d'examiner les IOCTL_SCSI_PASS_THROUGHappels afin que je puisse créer ma propre bibliothèque de graveurs de CD, et cela ne serait pas trop difficile; écrire un pilote sera la partie la plus difficile, mais gérable.


Éditer:

Je suppose que vous avez déjà compris cela, mais la structure que vous devez modifier s'appelle FLT_IO_PARAMETER_BLOCK pour IRP_MJ_READ. Je ne sais pas à quel point ce sera facile, mais cela ne devrait pas être trop difficile.

user541686
la source
Ça a l'air amusant. J'examinerai cela demain.
zneak
@zneak: Si vous regardez ma réponse, imdisk est un pilote de disque virtuel open source disponible, qui fait déjà presque ce que vous voulez.
harrymc
@Mehrdad J'ai un problème très similaire, pourriez-vous m'aider? CreateFile: "L'accès est refusé" même avec des privilèges d'administrateur - Win7
Ali