Usando o Windows PE 3.0 e o Ghost32 para criar um disco de restauração
Seguindo o tutorial sobre o uso do Ghost32 pela rede (Usando o Windows PE 3.0 para rodar o Ghost32 pela rede), aqui vai outro sobre como usar o Windows PE 3.0 para criar um disco de restauração automatizado.
Quem lembra daqueles CDs Quick Restore que vinham nos PCs Compaq? Pois o objetivo foi criar algo que fizesse a mesma coisa, usando o Windows PE 3.0, uma imagem do Ghost como base e tendo scripts para automatizar.
O Windows PE é o mesmo do tutorial anterior. Irei copiar a parte comum de lá.
- Baixe o Windows AIK do 7 em pt-BR (O kit de Instalação Automatizada do Windows® (Windows AIK) para Windows® 7). Não precisa gravar o DVD. Extraia o conteúdo do ISO com algum programa tipo 7-Zip, WinRAR, UltraISO, e instale.
- Inicie o prompt rodando-o como Administrador: Iniciar → Microsoft Windows AIK → Prompt de Comando da Ferramentas de Implantação.
Usarei como pasta de trabalho
1 - Copie a árvore de arquivos para trabalhar com o Windows PE — versão 32-bit:
2 - Para remover a mensagem "Pressione qualquer tecla para inicializar pelo CD" quando iniciar o sistema, exclua o arquivo
3 - Monte a imagem do Windows PE:
4 - Instale o suporte a scripts VBScript e a WMI (Windows Management Instrumentation):
5 - Copie o Ghost32:
6 - Crie um arquivo de texto com o seguinte conteúdo, salve como
e copie-o:
7 - Crie um arquivo de texto com o seguinte conteúdo, salve como
e copie-o:
8 - Crie um arquivo de texto com o seguinte conteúdo, salve como
e copie-o, substituindo o existente:
9 - Desmonte a imagem:
10 - Copie a imagem WIM para a árvore do ISO:
11 - Crie o arquivo ISO:
Usado o sistema de arquivos UDF (
E está pronto. Agora tudo se resume a injetar na raiz desse ISO de referência, usando o UltraISO ou similar, o arquivo com a imagem do Ghost que você tiver, tendo o cuidado de usar o nome
Outro ponto importante é que o rótulo do disco (
Não sou lá muito bom com scrips CMD (menos ainda com VBScript), mas pelos meus testes ficou razoável.
FUNCIONAMENTO
- Ao ser carregado, o Windows PE 3.0 carrega o script
- Ao responder sim, o script
- Respondendo não, aborta e avisa para retirar a mídia e reiniciar.
MIÚDOS
- A Microsoft não colocou o comando
- Não existe um meio nativo de determinar a letra da unidade que foi usada para carregar o Windows PE 3.0 quando usa-se mídia óptica. Com dispositivos USB existe este método, porém não funciona para drives ópticos. A solução foi consultar a WMI para caçar a letra da unidade (com o script
- Como é um script CMD, se o usuário pressionar Crtl+C o abortará. Cruzemos os dedos para que não faça!
- Ao rodar
- Em PCs com mais de um HD, o primeiro HD do barramento será usado. Os demais não serão alterados.
- Fique a vontade para customizar. Provavelmente dê para fazer tudo em VBScript, que seria mais "elegante".
ATUALIZAÇÃO
Para atualizar para o Windows PE 3.1, baixe: Windows® AIK (Kit de Instalação Automatizada) para Windows® 7 SP1.
Esse é só um pacote de atualização, que precisa ser aplicado sobre o AIK anterior.
Extraia o conteúdo do arquivo
Abra o prompt de comando como Administrador e rode:
Recrie seu Windows PE e pronto. Windows PE 3.1, baseado no NT 6.1.7601, também conhecido por Windows 7 SP1.
Uma dica para quem quiser usar um arquivo batch para automatizar a criação do sistema: o comando
Quem lembra daqueles CDs Quick Restore que vinham nos PCs Compaq? Pois o objetivo foi criar algo que fizesse a mesma coisa, usando o Windows PE 3.0, uma imagem do Ghost como base e tendo scripts para automatizar.
O Windows PE é o mesmo do tutorial anterior. Irei copiar a parte comum de lá.
- Baixe o Windows AIK do 7 em pt-BR (O kit de Instalação Automatizada do Windows® (Windows AIK) para Windows® 7). Não precisa gravar o DVD. Extraia o conteúdo do ISO com algum programa tipo 7-Zip, WinRAR, UltraISO, e instale.
- Inicie o prompt rodando-o como Administrador: Iniciar → Microsoft Windows AIK → Prompt de Comando da Ferramentas de Implantação.
Usarei como pasta de trabalho
C:\PE
.1 - Copie a árvore de arquivos para trabalhar com o Windows PE — versão 32-bit:
copype.cmd x86 C:\PE
2 - Para remover a mensagem "Pressione qualquer tecla para inicializar pelo CD" quando iniciar o sistema, exclua o arquivo
bootfix.bin
:del C:\PE\ISO\boot\bootfix.bin
3 - Monte a imagem do Windows PE:
dism /mount-wim /wimfile:C:\PE\winpe.wim /index:1 /mountdir:C:\PE\mount
4 - Instale o suporte a scripts VBScript e a WMI (Windows Management Instrumentation):
dism /image:C:\PE\mount /add-package /packagepath:"C:\Program Files\Windows AIK\Tools\PETools\x86\WinPE_FPs\winpe-scripting.cab" dism /image:C:\PE\mount /add-package /packagepath:"C:\Program Files\Windows AIK\Tools\PETools\x86\WinPE_FPs\pt-br\winpe-scripting_pt-br.cab" dism /image:C:\PE\mount /add-package /packagepath:"C:\Program Files\Windows AIK\Tools\PETools\x86\WinPE_FPs\winpe-wmi.cab" dism /image:C:\PE\mount /add-package /packagepath:"C:\Program Files\Windows AIK\Tools\PETools\x86\WinPE_FPs\pt-br\winpe-wmi_pt-br.cab"
5 - Copie o Ghost32:
copy "C:\caminho\para\ghost32.exe" "C:\PE\mount\Windows\System32"
6 - Crie um arquivo de texto com o seguinte conteúdo, salve como
letramidia.vbs
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colMidia = objWMIService.ExecQuery("Select * From Win32_LogicalDisk Where DriveType = '5' and VolumeName = 'GHOSTIMGDISC'") If colMidia.Count = 0 Then Wscript.Echo "inexistente" Else For Each objMidia in colMidia Wscript.Echo objMidia.DeviceID Next End If
e copie-o:
copy "C:\caminho\para\letramidia.vbs" "C:\PE\mount\Windows\System32"
7 - Crie um arquivo de texto com o seguinte conteúdo, salve como
limpa.txt
select disk 0 clean exit
e copie-o:
copy "C:\caminho\para\limpa.txt" "C:\PE\mount\Windows\System32"
8 - Crie um arquivo de texto com o seguinte conteúdo, salve como
startnet.cmd
@echo off title DISCO DE RESTAURACAO wpeinit echo. echo ------------------------------------------------------------------------------- echo ---------------------------- DISCO DE RESTAURACAO ----------------------------- echo ------------------------------------------------------------------------------- echo. echo Retire qualquer dispositivo de armazenamento externo (pendrive, MP3 player, echo cartao de memoria, HD externo) antes de continuar. echo. echo TODOS os dados do HD serao excluidos! echo. set resposta= :resploop set /p resposta=Quer continuar? (S/N) if "%resposta%"=="" (goto resploop) else (if "%resposta%"=="s" (goto continuar) else (if "%resposta%"=="n" (goto retirardisco) else (goto resploop))) :continuar set midia= for /f "delims=" %%a in ('cscript //nologo letramidia.vbs') do set midia=%%a if "%midia%"=="inexistente" goto semmidia cls ghost32.exe -clone,mode=restore,src=%midia%\imagem.gho,dst=1 -batch if errorlevel 1 goto problema cls echo. echo Completado com sucesso! echo. echo Retire o CD do drive. goto fim :problema diskpart /s limpa.txt >nul 2>&1 cls echo. echo Aconteceu algum problema! echo O HD ficara sem sistema operacional. echo. echo Retire o CD do drive. goto fim :semmidia cls echo. echo Midia nao encontrada. goto fim :retirardisco cls echo. echo Retire o CD do drive. :fim echo Pressione qualquer tecla para reiniciar. pause >nul exit
e copie-o, substituindo o existente:
copy "C:\caminho\para\startnet.cmd" "C:\PE\mount\Windows\System32"
9 - Desmonte a imagem:
dism /unmount-wim /mountdir:C:\PE\mount /commit
10 - Copie a imagem WIM para a árvore do ISO:
copy C:\PE\winpe.wim C:\PE\ISO\sources\boot.wim
11 - Crie o arquivo ISO:
oscdimg -u2 -lGHOSTIMGDISC -bC:\PE\etfsboot.com C:\PE\ISO "C:\caminho\para\disco_restore.iso"
Usado o sistema de arquivos UDF (
-u2
), para poder colocar arquivos maiores de 4GB, afinal uma imagem do Windows Vista/7 (ou mesmo do XP dependendo dos programas) pode ficar maior. Por padrão o oscdimg
usa UDF 1.50.E está pronto. Agora tudo se resume a injetar na raiz desse ISO de referência, usando o UltraISO ou similar, o arquivo com a imagem do Ghost que você tiver, tendo o cuidado de usar o nome
imagem.gho
, que é o nome que o script CMD busca. Só gravar num DVD depois.Outro ponto importante é que o rótulo do disco (
GHOSTIMGDISC
) não pode ser alterado, pois o script que localiza a letra da unidade óptica baseia-se nele.Não sou lá muito bom com scrips CMD (menos ainda com VBScript), mas pelos meus testes ficou razoável.
FUNCIONAMENTO
- Ao ser carregado, o Windows PE 3.0 carrega o script
startnet.cmd
. Depois de carregar o wpeinit
, o script questiona se o usuário quer continuar. Respostas fora de s/n são ignoradas.- Ao responder sim, o script
letramidia.vbs
, consultando a WMI por drives ópticos que tenham um volume com rótulo GHOSTIMGDISC
, popula a variável %midia%
com a letra da unidade óptica que contém o disco — importante, pois a letra varia de acordo com as partições que existirem no HD. Se não for encontrada, retorna "inexistente" para o script CMD, que direciona para mensagem de erro/reiniciar. Do contrário, se a mídia for encontrada, roda o Ghost no modo automático (restore, que apaga tudo que tiver no disco e coloca a imagem no lugar), mostrando a interface do programa para termos o progresso da operação. Terminado o Ghost, avalia o errorlevel retornado por ele e, caso "1" (falha), roda o diskpart
para limpar o HD (não é seguro deixar uma restauração capenga) e direciona para mensagem de erro/reiniciar. Do contrário, mostra mensagem de sucesso e pede para retirar a mídia e reiniciar.- Respondendo não, aborta e avisa para retirar a mídia e reiniciar.
MIÚDOS
- A Microsoft não colocou o comando
choice
no console do Windows PE 3.0. Com ele teríamos um método mais profissional de questionar o usuário. A solução foi uma gambiarra com set /p
.- Não existe um meio nativo de determinar a letra da unidade que foi usada para carregar o Windows PE 3.0 quando usa-se mídia óptica. Com dispositivos USB existe este método, porém não funciona para drives ópticos. A solução foi consultar a WMI para caçar a letra da unidade (com o script
letramidia.vbs
).- Como é um script CMD, se o usuário pressionar Crtl+C o abortará. Cruzemos os dedos para que não faça!
- Ao rodar
wpeinit
a rede é inciada via DHCP. Não tem utilidade para o disco aqui proposto, mas não fui atrás para ver se dá para desativar.- Em PCs com mais de um HD, o primeiro HD do barramento será usado. Os demais não serão alterados.
- Fique a vontade para customizar. Provavelmente dê para fazer tudo em VBScript, que seria mais "elegante".
ATUALIZAÇÃO
Para atualizar para o Windows PE 3.1, baixe: Windows® AIK (Kit de Instalação Automatizada) para Windows® 7 SP1.
Esse é só um pacote de atualização, que precisa ser aplicado sobre o AIK anterior.
Extraia o conteúdo do arquivo
waik_supplement_pt-br.iso
usando o UltraISO, WinRAR, ou similar.Abra o prompt de comando como Administrador e rode:
xcopy "C:\caminho\para\waik_supplement_pt-br" "C:\Program Files\Windows AIK\Tools\PETools" /ERDY
Recrie seu Windows PE e pronto. Windows PE 3.1, baseado no NT 6.1.7601, também conhecido por Windows 7 SP1.
Uma dica para quem quiser usar um arquivo batch para automatizar a criação do sistema: o comando
copype.cmd x86 C:\PE
, ao ser chamado por um batch, precisa ser chamado com call
, do contrário o script é encerrado nele. Fica então, dentro do batch, call copype.cmd x86 C:\PE
.
Muito bom seu post! Me ajudou muito.
ResponderExcluirPrecisava muito descobrir um jeito de criar uma ISO do Windows PE, mas para instalá-lo por Windows PE.
Seu post foi muito útil!
Um abraço!