quinta-feira, 15 de setembro de 2011

Usando o Windows PE 3.0 para rodar o Ghost32 pela rede

Todos que já trabalharam em algum laboratório de informática sabem que o uso de imagens para restaurar o sistema operacional é algo indispensável, pois poupa um tempo enorme que seria perdido em instalações e dá a possiblidade de ter um ambiente padronizado em todas as máquinas sem grande trabalho.

O Symantec Ghost é muito usado e desde muito tempo ele possui uma versão para DOS (imortalizada na versão 7.5, que foi muito popular). Recentemente eu precisei usar o Ghost pela rede e esbarrei em problemas com o velho NetBootDisk que é meu conhecido há anos. A partir do Vista, a autenticação através do protocolo LANMAN, do tempo paleolítico e usado por todos sistemas DOS com suporte a rede, vem dasativada. Idem com a versão 3 do Samba, que por padrão desablita-a (lanman auth = no). Nos Windows Server também não funciona a partir do 2003 por causa do uso de pacotes SMB assinados, que não são suportados pelo cliente DOS.

Além da rede capenga, a lentidão ao usar o Ghost para DOS é um complicador. Ocorre que os controladores IDE e SATA são acessados usando PIO, o que faz desempenho do Ghost cair bastante. Existem drivers UDMA para DOS (no NetBootDisk vem desabilitado) que dão uma melhorada, mas não fazem milagre e são problemáticos em alguns casos. Por fim, um problema que tende a piorar daqui para frente é falta de drivers para acessar controladores SATA no modo AHCI/RAID no DOS. Levando em conta que o Windows Vista, 7 e Linux suportam AHCI nativamente e que qualquer chipset low-end hoje suporta AHCI, o futuro do DOS nesse ramo está comprometido. Sem contar que para trabalhar com qualquer coisa em disquete hoje exige que você use um drive de disquete virtual ou fique montando imagens em uma máquina virtual... nada prático.

Com esse monte de contras, resolvi baixar o Windows AIK imbuído de vontade de aposentar de uma vez o DOS. Já tinha brincado com o AIK do Vista, mas não levei nada adiante na época. Desta vez consegui de forma relativamente simples um Windows PE 3.0 (que é baseado no Windows 7) para rodar a versão 32-bit do Ghost. A vantagem de usar o Windows PE é que você tem o kernel NT por caixo do capô, drivers que colocam o controlador IDE/SATA no modo mais rápido e rede atualizada. Fora que nativametne o Windows PE 3.0 vem com os drivers nativos do Windows 7 (claro, apenas parte deles) é muito mais fácil achar drivers para Windows do que para DOS no caso do Windows 7 não suportar nativamente algum controlador de disco ou placa de rede que você tenha.

O Windows PE não possui o Explorer. Ele abre tão somente um prompt de comando após ser iniciado.

- Baixe o Windows AIK do 7 em pt-BR. Não precisa gravar o DVD. Extraia o conteúdo do ISO com algum programa tipo 7-Zip, WinRAR, UltraISO, e instale:
O kit de Instalação Automatizada do Windows® (Windows AIK) para Windows® 7

- Inicie o prompt rodando-o como Administrador:
Iniciar -> Microsoft Windows AIK -> Prompt de Comando da Ferramentas de Implantação

Agora os comandos para criar um Windows PE básico. 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 - Para adicionar arquivos ao sistema final, existem duas alternativas: inserir dentro da imagem (winpe.wim), que fica montada na pasta C:\PE\mount, ou inserir na raiz da unidade de boot, que fica sendo a pasta C:\PE\ISO. Quando o Windows PE for iniciado, o que estiver dentro da imagem será descompactado para a memória e rodará por lá. Ou seja, quanto mais coisa for adicionada dentro da imagem, maior será a memória necessária para dar boot. Ao adicionar os arquivos na imagem, se forem programas, é recomendável coloca-los dentro das pastas Windows ou Windows\System32, pois assim ficam no PATH e são chamados facilmente pelo prompt de comando, sem precisar especificar o caminho.

No meu caso eu apenas adicionei o Ghost32.exe, que vem no Ghost Solution Suite.

copy "C:\caminho\para\ghost32.exe" "C:\PE\mount\Windows\System32"

5 - Quando o Windows PE é incializado, ele roda o script Windows\System32\startnet.cmd. Por padrão, o script executa apenas o programa wpeinit, que é responsável por levantar os dispositivos PnP e subir a rede. Porém dá para personaliza-lo à vontade, lembrando de manter o comando wpeinit antes dos demais. OBS: Por padrão a rede é configurada via DHCP. Se precisar de IP fixo, coloque os comandos necessários. Referência: Windows XP: Configurando a rede via linha de comando

Para editar o startnet.cmd

notepad C:\PE\mount\Windows\System32\startnet.cmd

startnet.cmd que usei aqui (customize com o que precisar)

@echo off
wpeinit
echo Mapeando unidade de rede...
net use H: \\servidor1\ghost /user:<usuario> <senha>
echo Restaurando imagem...
ghost32.exe -clone,mode=restore,src=H:\lab01.gho,dst=1 -sure -fx

Assim, ele mapeia o compartilhamento \\servidor1\ghost no drive H: usando o usuário e senha especificados e roda o Ghost32 no modo restore, baixando a imagem lab01.gho para o primeiro HD da máquina (dst=1) sem pedir confirmação (-sure) e voltando ao prompt quando terminar (-fx). O comportamento padrão do Ghost ao restaurar imagens de disco é automaticamente redimensionar o sistema de arquivos de acordo com o tamanho do HD. Mais informações sobre as opções de linha de comando do Ghost: Symantec Ghost™ Reference Guide

Se você tiver o GhostCast Server rodando em alguma máquina da sua rede, não é necessario mapear unidade de rede.

@echo off
wpeinit
echo Restaurando imagem...
ghost32.exe -clone,mode=restore,src=@mcNOME_DA_SESSÃO,dst=1 -sure -fx

6 - Depois de fazer as modificações, é preciso desmontar a imagem.

dism /unmount-wim /mountdir:C:\PE\mount /commit

7 - Agora crie o ISO.

copy C:\PE\winpe.wim C:\PE\ISO\sources\boot.wim
oscdimg -n -bC:\PE\etfsboot.com C:\PE\ISO "C:\caminho\para\winpe_final.iso"

Feito. Basta gravar o ISO winpe_final.iso. Se quiser fazer alguma mudança posteriormente, repita os procedimentos a partir do passo 3. No passo 7, quando for copiar a imagem para a pasta sources, sobrescreva o arquivo anterior.

A documentação da Microsoft é razoável e está em português; vale dar uma lida: Iniciar -> Microsoft Windows AIK -> Documentation -> Guia do Usuário do Windows PE.

Caso precise adicionar algum driver, enquanto a imagem ainda estiver montada, rode:

dism /image:C:\PE\mount /add-driver /driver:C:\caminho\para\driver.inf

Para adicionar todos os drivers de uma pasta:

dism /image:C:\PE\mount /add-driver /driver:C:\caminho\para\pasta /recurse

Na documentação diz que precisa no mínimo de 512MB de RAM para o Windows PE 3.0 rodar, porém eu testei com máquinas de 256MB e funcionou normalmente (lembrando que só adicionei o Ghost32). Se você tiver máquinas com menos de 256MB, daí só testando.

O Ghost suporta FAT, FAT32, NTFS, EXT2, EXT3 e SWAP. Ao clonar discos com Linux, quando criar a imagem, utilize via linha de comando a chave -ib (ou dentro da interface: Options -> Image/Tape -> Image Boot), assim o Grub é preservado. A partir do Ubuntu 9.10 o sistema de arquivos padrão usado pelo instalador é o EXT4, que infelizmente não é suportado (ainda) pelo Ghost. Para não precisar usar o particionamento manual, adicione às opções de boot partman/default_filesystem=ext3 que fará o instalador usar EXT3, mesmo usando o particionamento automático. Partições EXT3 com inodes de 256 bytes são suportadas a partir do Ghost 11.5.0.2165 e o Windows 7 é oficialmente suportado a partir do Ghost 11.5.1.2266.

Um exemplo de cenário com perfeita simbiose entre software livre e proprietário

Ghost32

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.

Um comentário:

  1. Ola Marcos, gostei muito de sua publicação e estou precisando exatamente disso, "bootar" com CD, executar o ghost32 instalando automaticamente uma imagem GHO numa partição e depois sair. Tentei fazer como você mostrou, mas não consegui. Eu baixei o kit de instalação; extrai os arquivos usando o powerISO, mas não vi nada como instalar. Tentei numa maquina com Windows 8 e em outra com Windows XP. Você podereia me detalhar melhor este passo como fazer? Obrigado
    Sergio

    ResponderExcluir