-->

terça-feira, 30 de outubro de 2007

VMWare atrasando o boot em 43 segundos

Essa é a segunda vez que acontece comigo. Precisei reinstalar o VMWare Server no meu PC principal para fazer experiências e reiniciar o PC passou a levar 2:35 contra os habituais 1:52

nota: Eu cronometro do momento de escolher "Windows XP" no menu de boot até o último ícone aparecer na barra de tarefas.

Eu já havia encontrado e aplicado a solução antes, mas perdi o arquivo batch e tive que procurar de novo. Vou registrar aqui para facilitar a minha vida e a de outros :)

Eu fiz alguns ajustes na solução proposta. Minha implementação é dirigida a quem, como eu, só usa o VMware esporádicamente. Quem precisa dele todo instante pode preferir fazer de outra maneira.

Execute "services.msc"

Localize e configure para início manual estes serviços:
  • "VMWare Authorization Service"
  • "VMWare DHCP Service"
  • "VMWare NAT Service"
  • "VMWare Registration Service"
  • "VMWare Virtual Mount Manager Extended"
Crie um arquivo "ativa-vmware.bat" com o seguinte conteúdo:

net start "VMWare DHCP Service"
net start "VMWare NAT Service"
net start "VMWare Virtual Mount Manager Extended"
:loop
ping.exe -n 3 localhost >nul
net start|find "VMware"
if errorlevel 1 goto loop
net start "vmware authorization service" & net start "vmware registration service"
pause

E toda vez que você precisar do VMware basta excutar "ativa-vmware.bat" antes de abrir o console (só é necessário uma vez por sessão do Windows).

Na verdade, o causador do atraso é o "registration service", que por sua vez depende do "authorization service". Eu desativei os outros serviços apenas por não serem realmente necessários no meu dia-a-dia e não porque estejam relacionados diretamente com o atraso, mas você vai notar ao rodar o batch que de qualquer forma eles levam uns pouco segundos para serem iniciados.

Como funciona o batch
Você não precisa ler isto aqui.

Inicia três serviços:

net start "VMWare DHCP Service"
net start "VMWare NAT Service"
net start "VMWare Virtual Mount Manager Extended"
O comando ping é usado aqui como um truque para dar um retardo, já que os arquivos batch do Windows não tem um comando sleep() ou wait(). Poderia ser qualquer coisa que atrasasse um pouco a execução dando tempo para os serviços estarem prontos.

:loop
ping.exe -n 3 localhost >nul
net start|find "VMware"
if errorlevel 1 goto loop
A idéia geral é:

  • Dá uma pausa
  • Exibe uma lista dos serviços e procura na lista a palavra VMWARE
  • Se a palavra for encontrada, prossegue. Se não, continua esperando.
Eu não creio que esse trecho seja realmente necessário do jeito que reescrevi o batch. Mas como foi sugerido por alguém que certamente é muito mais experiente que eu em VMWARE, eu o mantive. Até mesmo porque não faz mal nenhum.

Agora, os dois serviços mais problemáticos são iniciados:

net start "vmware authorization service" & net start "vmware registration service"
pause

O "&" é apenas uma forma de assegurar que o "registration service" só inicie depois que o "authorization service" tiver iniciado. A pausa final serve apenas para que você possa enxergar o resultado do processo.

Se você esquecer de ativar os serviços antes de abrir o console, vai aparecer uma janela de logon assim:



Quando o normal é este:



A janela de logon bem que poderia, ao notar que os serviços não estão rodando na máquina, apresentar um link do tipo "Onde está a opção Local host?" levando para uma explicação. Ou mesmo explicar na própria janela.

5 comentários:

  1. Jefferson,

    Já que você conhece muito do VMWare, me diga porque eu configuro para compartilhar umas pastas ( diretórios do Windows ), mas não consigo encontrar estas pastas que estariam compartilhadas ???

    ResponderExcluir
  2. Guilherme,

    Não existe nenhum segredo no compartilhamento dentro do Vmware. Você deve estar esbarrando em um dos inúmeros problemas/requerimentos de compartilhamento do próprio Windows.

    ResponderExcluir
  3. Intruder_A63/11/07 08:30

    Veja o resultando quando eu dou o comando

    sudo mount -t vmhgfs .host:/particao_d /media/hdd

    Error: cannot mount filesystem: No such device

    E pela documentação era esta exatamente a sintaxe, eu realmente não estou conseguindo entender o porque não está funcionando.

    ResponderExcluir
  4. Intruder_A63/11/07 08:41

    Complementando...

    O VMware está rodando dentro do Windows XP SP2, e está emulando o Kubuntu 64bits versão 7.10

    ResponderExcluir
  5. Queria agradecer esta excente dica. Mês passado fiz upgrade em minha maquina e após uma instalação limpa do windows e demais programas que usava me deparei com um tempo excessivo no boot, que nao esperava encontrar após montar a maquina nova. Não tinha idéia que programa havia feito isso até este post. Segui o passo a passo e tudo voltou ao normal! Uso ocasionalmente o VMware Workstation, e mesmo não rodando o bat para ativar os serviços o programa funciona normalmente, exceto o acesso a internet na maquina virtual, na maioria do tempo desnecessário. Muito obrigado, continue o excelente trabalho em seu blog!

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.