Existe uma maneira limpa de obter acesso exclusivo a uma partição física no Windows?

11

Estou tentando, no Windows 7, executar uma máquina virtual com o VMWare Player a partir de um sistema operacional instalado em uma partição física. No entanto, quando eu inicializo a máquina virtual, o VMWare Player diz que não pôde acessar a unidade física para gravação.

Esse parece ser um problema geralmente reconhecido na comunidade VMWare, pois o Windows Vista introduziu um novo recurso de segurança atraente que torna impossível gravar em uma unidade bruta sem obter primeiro acesso exclusivo a ela.

Eu pesquisei no Google e encontrei algumas soluções alternativas. No entanto, as limpas queridos parecem funcionar apenas em discos inteiros, e não em partições.

Então eu ficaria com a solução suja . Em resumo, ele interfere com o MBR para apagar qualquer rastreamento das partições a serem usadas, faz o Windows esquecê-las e depois restaura o MBR para que possamos iniciar a VM.

Não tenho certeza se quero fazer isso. Existe uma maneira de permitir que o VMWare adquira acesso exclusivo à partição sem exigir que eu a destrua? O que eu procuraria, suponho, é uma maneira de colocar apenas partições offline, em vez de unidades físicas inteiras.


Mais informações relacionadas à recompensa.

Tenho uma configuração de inicialização dupla: o Mac OS é o meu sistema operacional principal e também tenho o Windows instalado. Por mais que eu possa executar o Windows em uma máquina virtual, se não quiser reiniciar, gostaria de poder executar o Mac OS em uma máquina virtual quando estiver no Windows.

Meu objetivo é executar minha partição principal do Mac OS a partir do VMWare no Windows, assim como executo o Windows no VMWare Fusion. (Como esse é o meu sistema operacional principal, não pretendo aplicar patches no kernel ou em qualquer outro meio para fazê-lo funcionar em uma máquina virtual.) Criei a máquina virtual a partir do VMWare Fusion (pois possui o tipo de VM "Mac OS X Server" ) o moveu para o Windows e modificou-o no VMWare Player. Parece quase funcionar, quando o sistema operacional chega à tela de carregamento e a VM morre porque não consegue acessar \\.\PhysicalDrive0.

O Virtual Box falha ainda mais, pois inicia o Mac OS no modo detalhado e trava muito rapidamente (mas parece capaz de acessar a partição), então acho que seria mais fácil obter o VMWare acessando minha partição do que executar o Virtual Box isto.

No lado legal, eu estaria executando uma cópia do Mac OS X em uma máquina rotulada pela Apple, então estou bem.

zneak
fonte
Problema interessante. Funciona se você criar uma partição não formatada em branco?
Nhinkle 31/12/10
@ nhinkle Eu não tenho nenhuma sala de partição sobressalente para testar na minha unidade interna. No entanto, pelo que li, parece que o Windows bloqueará qualquer partição que reconheça; e posso confirmar que ele ainda trava aqueles que também não têm ponto de montagem.
zneak 31/12/10
@ zneak: Eu usei no passado o TrueCrypt para solucionar as restrições do Windows. Como ele possui seu próprio driver de disco, ele pode gravar no disco. Por que você não tenta transformar a partição em um disco virtual TrueCrypt?
harrymc
@harrymc eu não tentei. Preciso criptografar minha partição do Mac OS?
zneak
Você precisará criar um volume TrueCrypt na partição (perdendo todo o conteúdo). Isso pode ajudar a mostrar como, mas veja também a ajuda do TrueCrypt.
harrymc

Respostas:

5

Encontrei apenas uma solução possível, usando o imdisk de driver de disco virtual gratuito junto com o devio (acesso e aquisição de unidade remota). Como o imdisk é um driver do kernel, ele pode gravar na partição. Infelizmente, como o devio funciona no modo de usuário, não tenho muita certeza se essa abordagem funcionará para você.

O devio pode adquirir uma partição física e publicá-la na rede. Por exemplo:

devio -r 9000 \\.\PhysicalDrive0 2

publica do primeiro disco a segunda partição na porta TCP 9000 e aguarda uma conexão nessa porta. É melhor desativar o firewall enquanto estiver testando isso e execute o devio como administrador.

Para definir esta partição publicada como um disco rígido novo e independente, use:

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

que usando o host local criará um novo disco rígido chamado R, que não é uma partição de nada. Agora você pode tentar se pode usar o fingido disco rígido R em uma máquina virtual VMware.

Essa abordagem é explicada em detalhes no Devio: Acesso e aquisição de unidades remotas .

Se isso não funcionar, você precisará:

  1. Aceite uma solução perigosa que modifica o MBR.
  2. Abandone o uso do MacOS no Win7 como VM, usando arquivos na partição do Mac através de aplicativos do Windows (com problemas de caracteres de final de linha).
  3. Use um produto do sistema de arquivos virtual, como o sistema de arquivos de retorno de chamada ELDOS , embora eu duvide que esse problema valha alguns milhares de dólares.
  4. Abandone o Windows 7 e faça o downgrade para o XP.
  5. Modifique a fonte do imdisk para que, como driver de kernel, crie um disco de simulação diretamente na partição física, sem a necessidade do devio.
harrymc
fonte
Se feito corretamente, a edição do MBR não deve representar uma ameaça muito grande. Mesmo que fosse corrompido, não é a partição primária do sistema operacional, então quem se importa? Você pode corrigi-lo facilmente!
Breakthrough
@ Breakthrough Acho que você sente falta do fato de que os dois sistemas operacionais estão no mesmo disco.
zneak
@ zneak: Eu acho que o @ Breakthrough está certo - existem vários programas que podem salvar e restaurar o MBR em emergência.
harrymc
Além disso, apenas para constar, o VMWare infelizmente não pode usar uma unidade virtual do imdisk.
zneak
Isso está correto, porque o ImDisk não se registra corretamente no NT Mount Manager usando o código de controle IOCTL_MOUNTMGR_CREATE_POINT ; em vez disso, cria diretamente um link simbólico para a letra da unidade e, é claro, o kernel não considera esse volume legítimo. Eu tentei fazê-lo funcionar antes, mas não consegui muito. (É a mesma razão pela qual você não pode usar um volume ImDisk para, digamos, a montagem de um VHD.)
user541686
2

Depende de como você está desesperado para fazer isso funcionar, mas eu diria que é possível, com "apenas" duas "etapas fáceis" (leia-se: brutal):

  1. Escreva um driver para ignorar a restrição definida pelo Windows, usando o sinalizador documentado (semi -?) SL_FORCE_DIRECT_WRITE.

  2. Prenda a CreateFilee / ou WriteFiletelefonema de VMWare usando uma biblioteca como EasyHook (Eu disse que era fácil!) Para se comunicar com o arquivo manualmente com o driver, talvez se comunicar com o driver usando DeviceIoControl.

Na verdade, não parece tão ruim assim, se você souber onde procurar as informações para contornar as restrições ... Conectei aplicativos como o Nero para examinar IOCTL_SCSI_PASS_THROUGHchamadas e criar minha própria biblioteca de gravadores de CD, e isso não seria muito difícil; escrever um driver será a parte mais difícil, mas gerenciável.


Editar:

Eu estou supondo que você já descobriu isso, mas a estrutura é necessário modificar é chamado FLT_IO_PARAMETER_BLOCK para IRP_MJ_READ. Não tenho certeza de como será fácil, mas não deve ser muito difícil.

user541686
fonte
Parece divertido. Vou investigar isso amanhã.
zneak
@ zneak: Se você olhar para a minha resposta, o imdisk é um driver de disco virtual de código aberto disponível, que quase já faz o que você deseja.
harrymc
@ Mehrdad Eu tenho um problema muito semelhante, você poderia me ajudar? CreateFile: "Acesso negado", mesmo com privilégios de administrador - Win7
Ali