Problemas de Inicialização do Windows
Problemas de Inicialização do Windows
Por Yuri Diógenes
Estava pensando em um tema para escrever e de forma saudosa lembrei do curso de tecnologias de núcleo do Windows NT (Windows NT Core Technologies). Ministrei este curso por várias vezes e lembro o quanto ele era aprofundado no que diz respeito a arquitetura e inicialização do Windows. Estes são temas que continuam cada vez mais em pauta e cada vez se faz mais necessário que os profissionais fiquem cientes de como funciona ambos os processos.
O processo de boot
Durante o processo de instalação do Windows no seu computador o programa de setup vai iniciar o processo de formatação do HD, neste momento este programa vai escrever em um setor chamado MBR (Master Boot Record) as informações de execução, chamada de código de boot (boot code) e em seguida escreverá também a tabela de partição do disco.
Muito bem, então agora que temos as informações corretamente escritas no disco já é possível seguir em frente. Após o POST (Power on Self Test) do computador é feita a carga da MBR através da BIOS do computador, ou seja, a BIOS carrega as informações da MBR que por sua vez carrega o código de boot. A tabela de partição então é verificada para checar se existe uma entrada que contenha a partição por onde será feito o boot (boot partition).
Após este processo mais de baixo nível, podemos então resumir o restante do processo de boot como sendo:
1) NTLDR (NT Loader) – após fazer a carga de alguns módulos do Windows, o NTLDR vai carregar o boot.ini.
2) BOOT.INI – a tela de seleção do sistema poderá ser escolhida neste momento (caso você tenha um disco com múltiplos SO’s). Se nenhuma opção for escolhida o NTLDR vai usar a opção padrão e então var fazer a carga do ntdetect.com
3) NTDETECT.COM – este arquivo será carregado em modo real (16 bit) e vai utilizar a BIOS para fazer uma consulta no computador no intuito de verificar as opções de hardware existente, como: tipo de barramento (ISA, PCI, etc), número de discos e tipo, número de portas paralelas, etc. Estas informações serão armazenadas na chave HKEY_LOCAL_MACHINE\Hardware\Description.
4) O NTLDR vai então mostrar neste momento a tela de inicialização com a logomarca do Windows dizendo que está sendo iniciado. Neste momento o NTLDR vai:
· Carregar os drivers de Kernel e HAL que são como padrão o ntoskrnl.exe e o hall.dll;
· Ler a chave SYSTEM (HKEY_LOCAL_MACHINE\System) que fisicamente está localizado na pasta %systemroot%\system32\Config, para checar quais são os drivers de dispositivos que precisam ser carregados para concluir o boot;
· Durante a leitura da chave System também é verificado quais são os drivers que precisam iniciar durante a carga do sistema operacional. Estes drivers são localizados na chave HKEY_LOCAL_MACHINE\CurrentControlSet\Services.
· À medida que cada driver vai sendo carregado à barra de progresso do Windows continua movendo para sinalizar a progressão da carga do sistema operacional.
5) O NTOSKRNL.EXE vai fazer a carga do kernel do Windows.
6) SMSS – perfaz ao todo treze tarefas, entre elas esta a carga do subsistema do Windows (win32k.sys, srss.exe e winlogon).
7) WINLOGON – carrega a tela de logon e faz a carga da DLL MSGINA (MS Graphical Identification and Authentication). Neste momento o processo winlogon também vai:
· Cria o SCM (Service Control Manager) que é representado pelo arquivo services.exe. Este arquivo é responsável por carregar os drivers de dispositivos que estão marcados para inicializar;
· Cria o LSASS (Local Security Authentication Subsystem) que é representado pelo arquivo lsass.exe
A partir deste momento existirão algumas diferenças quanto à efetuar o logon localmente ou no domínio, para mais informações sobre o processo de logon e autenticação veja o artigo abaixo:
Logon and Authentication Technologies
É importante salientar que o processo de boot só termina depois que o usuário faz o logon na máquina por completo.
Como proceder durante uma falha no processo de boot
Antes mesmo de começar a dizer o que fazer caso isso aconteça é importante lembrar duas boas práticas para se resguardar nos casos de problemas no processo de boot:
· Tenha sempre um backup atualizado do System State
· Antes de aplicar hotfix ou service pack procure reiniciar o computador. Muitas vezes o computador está em execução por muito tempo e após aplicar um hotfix ou service pack temos a falsa impressão de que foi ele o causador do problema. Isso nem sempre é verdade e a melhor forma de se precaver quanto a isso é fazer um simples boot no sistema antes de atualizá-lo. Mais na frente neste artigo irei citar um exemplo mais formal deste cenário;
Bem, a par disso podemos começar a verificar algumas opções que podem nos ajudar a ter acesso ao computador em caso de falha durante a incialização. Vejamos então as principais formas abaixo:
| |
|
|
|
Traz de volta a última configuração que estava funcionando. Em termos gerais traz de volta informações de registro e configurações de drivers; |
|
Inicia o computador apenas com os drivers e os serviços básicos do Windows. |
|
Está é uma das grandes opções de inicialização que temos no Windows, através dela você terá acesso a partição de sistema e poderá executar uma série de comandos que poderão lhe ajudar durante a resolução de problemas. |
|
Às vezes o problema da inicialização é apenas porque temos um arquivo corrompido (como o NTLDR), neste caso é possível criar um disco de boot para iniciar o computador a partir dele; Para criar este disco você precisa apenas formatar o disco em uma máquina com o Windows 200x e em seguida copiar os arquivos ntldr, ntdetect.com, boot.ini e caso seu computador inicie através de uma controladora SCSI, também copie o arquivo ntbootdd.sys. |
|
Muitas vezes mesmo utilizando todas as opções acima não conseguimos ter acesso ao sistema operacional original. Nestas situações uma forma paliativa de ter acesso ao disco é através de uma instalação paralela; Neste caso você tanto pode instalar na mesma partição do sistema (usando outro nome para a pasta) ou instalar em uma outra partição que tenha espaço disponível. |
|
Se você não tiver nenhuma alternativa use esta como a última, isso porque nesta opção o Windows vai reinstalar o sistema operacional preservando algumas opções de software. Após reinstalar você terá que reaplicar todos os service packs assim como as atualizações de segurança. |
A partir do momento que você tem acesso ao computador, é possível usar as seguintes formas de isolar a causa raiz do problema:
Ferramenta |
O que faz? |
Utilitário de configuração do sistema (msconfig.exe) |
· Esta é uma ferramenta introduzida no Windows 2003 que ajudará entre outras coisas a isolar o problema através da desativação de drivers ou serviços de terceiros. |
Log de Eventos |
· Verifique o log de eventos de sistema, verifique o que ocorre logo após a carga do sistema, ou seja, após os eventos 6009 e 6005. |
Log de Inicialização |
· Esta opção cria um arquivo chamado Ntbtlog.txt na pasta %systemroot%, que contém informações sobre os drivers que foram carregados durante a inicialização do sistema operacional. · O uso desta lista pode ajudar para identificar a causa raiz do problema. |
A partir das opções apresentadas, podemos representar então esses passos no diagrama abaixo:
Considerações quanto a Hotfixes e Service Pack
Como havia falado anteriormente, muitas vezes a aplicação de um hotfix ou service pack acaba externando um problema que já havia no servidor. Uma forma de ter mais segurança quanto a isso é através de um processo formal e documentado de controle de alterações. A sugestão é que a empresa tenha uma política de gerenciamento de atualizações de forma que se um problema no processo de boot ocorrer seja fácil seguir o gráfico abaixo e no final responder a pergunta: “Quem pode ter causado o problema”
Para mais informações sobre gerenciamento de atualizações ver o artigo abaixo:
Service Management Functions
Release Management
https://www.microsoft.com/technet/itsolutions/cits/mo/smf/smfrelmg.mspx
Muitas vezes os clientes querem de alguma forma desinstalar para ter certeza que o problema foi ou não causado devido a tal atualização no sistema. A partir do Windows 2000 SP3 já existem mecanismos de fazer essa desinstalação de forma transparente e até mesmo fazer via console de recuperação (caso você não tenha acesso ao modo normal do SO).
É válido salientar que esse é um procedimento que deve ser realizado apenas para fins de isolar o problema, ou seja, é recomendado que seu servidor esteja sempre atualizado com as versões dos binários do Windows.
Um sumário com informações das atualizações de software é mantido na chave abaixo:
HKEY_LOCAL_MACHINE\Software\Microsoft\Updates\Product\SPx\KB######
O valor “Product” deve ser substituído pelo produto em questão, como por exemplo: “Internet Explorer 6” e o valor do KB será referente ao número do artigo que contém a explicação acerca da atualização.
Se você precisar desinstalar uma atualização e você tiver acesso ao sistema, basta ir na opção de adicionar/remover programas e então desinstalar o número do KB referente à atualização. Neste momento será lida a chave de registro abaixo: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Mas em um cenário em que você não tem acesso ao modo normal, é possível fazer a desinstalação do hotfix através da console de recuperação. Neste momento é importante saber que sempre que é feita uma atualização de software uma pasta de backup é criada no caminho abaixo:
%SystemRoot%\$NtUninstall[KBArticleNumber]$\
Neste caso substitua a palavra chave “KBArticleNumber” pelo número do artigo que corresponde a atualização de software que você deseja desinstalar.
Sabendo que esta pasta é criada, vejamos os passos para desinstalar uma atualização de software:
1) Efetue um boot via CD do Windows e escolha a opção de recuperação;
2) Escolha a opção de console de recuperação e em seguida escolha a partição que contém a pasta do Windows;
3) Digite a seqüência de comandos abaixo:
cd $ntservicepackuninstall$\spuninst
batch spuninst.txt
exit
4) Reinicie o computador.
É importante salientar que se você fez uma atualização de diversos hotfixes ao mesmo tempo e estes hotfixes contêm dependências é necessário seguir a ordem reversa para remover, caso contrário você receberá uma mensagem de erro dizendo que o sistema não ficará estável após a remoção desta atualização.
Uma forma de você verificar o que foi realizado durante a atualização do software é através dos logs. Os logs estão localizados na pasta %windir%, segue abaixo os tipos existentes de log:
Tipo de Log |
Nome do Arquivo |
Log de instalação do Service pack |
Svcpack.log |
Log de remoção do Service pack |
Spuninst.log |
Log de instalação de atualização de software |
KB######.log |
Log de desinstalação de atualização de software |
KB######Uninst.log |
Conforme vimos, conhecer os componentes que são usados durante a inicialização do Windows é algo chave para a resolução de problemas, várias hipóteses podem ser consideradas quando o Windows não está inicializando com sucesso e com as diretrizes acima é possível delimitar qual o componente que está falhando e iniciar o processo de reparo.
No próximo artigo continuaremos nessa linha de resolução de problemas de boot, porém iremos focar especificamente no registro do Windows. Até a próxima J
Comments
- Anonymous
May 14, 2008
Teria como desativar o modo de segurança ou a tecla f8? e-mail: estevao333@yahoo.com.br