Breno Ferreira

Opniões e códigos de um desenvolvedor de software .NET.

Dual-Boot do Windows 8 via VHD

with 16 comments

Olá pessoal,

A grande novidade da semana é o lançamento do Windows 8 Developer Preview. E como todo grande lançamento, muitas pessoas estão interessadas em instalar, testar, e ver como funciona a nova versão do sistema operacional. Por causa disso, vejo que muitas pessoas estão tendo dificuldades em instalar, ou tentando virtualizar (seja com VMWare ou Virtual Box) e obtendo desempenho abaixo do esperado. Uma maneira de evitar esses problemas de performance é fazer dual-boot através de um VHD (Virtual Hard Disk) com o Windows 8 instalado. É um processo bem simples, porém, para aqueles que não conhecem as ferramentas e um pouco de scripts Powershell, pode ficar meio propício a erros e problemas.

Aviso importante: essa versão do Windows 8 é apenas uma prévia bem rudimentar, e por causa disso, pode não ser muito estável. Não assumo qualquer responsabilidade por problemas ou danos no seu computador. Faça isso por sua conta e risco. Eu, até agora, não tive nenhum problema. Então, preste bastante atenção nos passos desmonstrados aqui e divirta-se!

Caso voce ainda não tenha baixado os arquivos de instalação do Windows 8, clique aqui.

Criando um VHD no Windows 7

Para fazer o dual-boot com um VHD, voce irá precisar ter o Windows 7 instalado na sua máquina. O primeiro passo para criar um VHD no Windows 7 é abrir o Prompt de Comando como Administrador.

image

Depois disso, execute os seguintes comandos:

  1. DISKPART
  2. CREATE VDISK FILE=”c:\Windows8Vhd\Windows8.vhd” MAXIMUM=50000 TYPE=FIXED
  3. SELECT VDISK FILE=”c:\Windows8Vhd\Windows8.vhd”
  4. ATTACH VDISK
  5. CREATE PARTITION PRIMARY
  6. ASSIGN LETTER=V
  7. FORMAT QUICK LABEL=Windows8
  8. EXIT

Repare duas coisas no segundo comando: Estamos definindo um tamanho de 50000 MBs para o VHD, ou seja, 50GB. Caso voce queira um tamanho menor ou maior, altere esse valor (mantendo o valor sempre em Megabytes). Estamos dizendo também que o VHD será do tipo fixo, ou seja, ele irá alocar os 50GB totais de uma vez só no HD. Isso irá ajudar um pouco na performance de acesso a disco. Caso voce queira um disco expansível, troque para “TYPE=expandable”. Mas lembre-se: mesmo que o disco seja expansível, todas as vezes que o boot ocorrer, esse VHD irá ser expandido para o tamanho total. Então, reserve um espaço em disco na sua máquina. Outra coisa importante: esse VHD deve, obrigatoriamente, estar em um disco interno. Ele não poderá estar em HDs externos, pen-drives, etc..

Instalando o Windows 8 no VHD

Agora que o VHD está criado, precisamos instalar o Windows 8 neste VHD. Para não precisarmos reiniciar o Windows, vamos instalar o Windows 8 via Powershell. Para fazer isso, baixe o arquivo Install-WindowsImage.ps1 aqui.

Agora, abra a console do PowerShell como Administrador e execute o seguinte comando:

.\Install-WindowsImage.ps1 -WIM E:\sources\install.wim -Apply -Index 1 -Destination V:\

Neste comando, passamos dois parâmetros importantes:

O caminho para o arquivo .wim de instalação do Windows 8. Para descobrir o caminho deste arquivo no seu computador, monte a ISO de instalação em um drive virtual, ou descompacte a ISO, e pegue o caminho raiz, e adicione o caminho \sources\install.wim. Por exemplo, se voce montou um drive virtual, e esse drive ficou com a letra E:, então o caminho vai ser E:\sources\install.wim. Caso voce tenha descompactado para a pasta C:\Windows8Instalacao, então o caminho vai ser C:\Windows8Instalacao\sources\install.wim.

Outra coisa é o parâmetro Destination. No caso, coloquei V:\, pois quando criamos o VHD (veja comandos acima), definimos a letra V (ASSIGN LETTER=V) para termos um drive virtual apontando para o VHD. Utilize a letra que voce tenha escolhido no comando acima.

Esse processo irá demorar em torno de 10 a 15 minutos, então vá tomar um café, água, coca-cola ou fazer alguma outra coisa.

<edição>

Você poderá obter uma mensagem de erro (Install-WindowsImange.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.”)  ao executar esse comando alertando sobre assinatura de scripts. Caso isso aconteça, basta executar o comando:

Set-ExecutionPolicy RemoteSigned

Obrigado por me lembrar Vinicius Amaral por me lembrar!

</edição>

Depois de pronto, precisamos configurar o Dual-Boot.

Configurando Dual-Boot

Para configurar o dual-boot, basta abrir um prompt de comando como administrador novamente e executar o comando abaixo:

bcdboot V:\Windows

Novamente, utilize a letra apropriada para o seu drive virtual que aponta para o VHD.

Reinicie o computador e divirta-se!

Revertendo o processo.

Caso queira remover tudo, basta desconfigurar o dual-boot e depois deletar o VHD do seu computador.

Para desconfigurar o dual-boot, execute o comando abaixo em um prompt de comando aberto como administrador:

bcdedit /delete {identifier} /cleanup

Para descobrir o {identifier} basta executar o comando “bcdedit /v” e copiar o “identifer” da entrada cujo “device” aponta para o VHD no disco. Após isso, delete o VHD do seu computador e pronto.

Abraços

Breno

Written by Breno Ferreira

15/09/2011 at 17:27

Posted in Windows

Tagged with , ,

16 Responses

Subscribe to comments with RSS.

  1. Breno,

    Só faltou aquele comando antes de rodar o script PowerShell:

    Set-ExecutionPolicy RemoteSigned

    Abs

    Vinícius Amaral

    15/09/2011 at 21:02

  2. Breno, boa noite.

    Parabéns, muito bom o seu post, é disso que a comunidade precisa, informações simples, práticas e que possam ajudar.

    Até mais.

    Junior Galvão - MVP

    17/09/2011 at 23:00

  3. Otimo post viu!
    Eu fiz usando esse aqui:
    http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx

    Mas depois que vi o seu me arrependi, muito mais simples🙂

    Alberto Monteiro

    23/09/2011 at 09:48

  4. Funciona com ambas versões x64 e x86?
    Porque utilizando o Windows Virtual PC no Windows 7, ele deixa instalar somente x86, porém dá erro bem no meio.

    • Olá Thiago,

      Pelo que eu saiba, funciona nas duas versões do Windows 7. Só tive a oportunidade de testar na versão x64, mas acho que funcione normalmente com a versão x86 (desde que seu hardware tenha suporte para 64bits).
      O Virtual PC só virtualiza SOs x86 mesmo, mas essa funcionalidade de boot via VHD não utiliza o Virtual PC, então acho que não terá problema.

      Abraços

      Breno

      Breno Ferreira

      23/09/2011 at 11:02

  5. Dica se você receber algum erro sobre o arquivo Install-WindowsImage.ps1 not signed(ou não assinado), vá nas propriedades do arquivo e o desbloqueie.🙂

  6. Isso funciona no Consumer Prewier tb?

    Jonathan Micael

    05/03/2012 at 11:51

  7. Aguem me ajuda.. ta dando esse erro no powershelld e não sei mais o que faazer:

    PS C:\> C:\Install-WindowsImage.ps1 -WIM f:\sources\install.wim -Apply -Index 1 -Destination V:\
    New-Object : Exceção ao chamar “.ctor” com “1” argumento(s): “Unable to open/create .wim file f:\sources\install.wim. E
    rror = 1”
    Em C:\Install-WindowsImage.ps1:805 caractere:27
    + $wimContainer = new-object <<<< Microsoft.WimgApi.WindowsImageContainer $WIM
    + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

    Felipe

    24/03/2012 at 03:47

    • Eu também estou com esse erro… =x

      julio

      01/04/2012 at 11:59

    • Verifique se os caminhos do .wim e da partição onde o VHD está attachado estão corretas.

      Breno Ferreira

      01/04/2012 at 15:00

  8. Breno.
    Olha o erro que está dando.Eu ja executei o Set-ExecutionPolicy RemoteSigned.
    O arquivo D:\Install-WindowsImage.ps1 não pode ser carregado. O arquivo D:\Install-WindowsImage.ps1 não está digitalmen
    te assinado. O script não será executado no sistema. Consulte “get-help about_signing” para obter mais detalhes..
    Em linha:1 caractere:28
    + d:\Install-WindowsImage.ps1 <<<< -WIm d:\install.wim -apply -index 1 -destination z:\
    + CategoryInfo : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

    julio

    01/04/2012 at 03:04

    • Ja consegui executar, só que precisei usar o comando:
      Set-ExecutionPolicy Unrestricted

      Só que agora está dando outro erro:

      PS C:\Windows\system32> d:\Install-WindowsImage.ps1 -WIM D:\install.wim -apply -index -destionation z:\

      Aviso de Segurança
      Execute apenas scripts confiáveis. Embora os scripts da Internet possam ser úteis, este script é potencialmente
      prejudicial ao seu computador. Deseja executar D:\Install-WindowsImage.ps1?
      [N] Não executar [R] Executar uma vez [U] Suspender [?] Ajuda (o padrão é “N”): r
      D:\Install-WindowsImage.ps1 : Não é possível processar a transformação do argumento em parâmetro ‘Index’. Não é possíve
      l converter o valor “-destionation” para o tipo “System.Int32”. Erro: “Seqüência de entrada não estava em um formato in
      correto.”
      Em linha:1 caractere:62
      + d:\Install-WindowsImage.ps1 -WIM D:\install.wim -apply -index <<<< -destionation z:\
      + CategoryInfo : InvalidData: (:) [Install-WindowsImage.ps1], ParameterBindin…mationException
      + FullyQualifiedErrorId : ParameterArgumentTransformationError,Install-WindowsImage.ps1

      julio

      01/04/2012 at 03:25

      • Clique com o botão direito no arquivo do script powershell e clique em “Desbloquear”. Quando o Windows detecta que o arquivo foi baixado da internet, por padrão, ele não deixa ele ser executado

        Breno Ferreira

        01/04/2012 at 10:56


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s