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


http://technet2.microsoft.com/WindowsServer/en/Library/78cb5d3c-d0b2-4d20-a693-fa66bde1a63b1033.mspx


 


É 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:


 



























OPÇÕES DE INICIALIZAÇÃO PARA TER ACESSO AO SISTEMA


Modo


O que faz?


Last Know Good


·         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;


Modo de Segurança


·         Inicia o computador apenas com os drivers e os serviços básicos do Windows.


Console de Recuperação


·         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.


Disco de boot


·         À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.


Instalação Paralela


·         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.


Instalação de Reparação


·         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


http://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 (1)

  1. Estevao says:

    Teria como desativar o modo de segurança ou a tecla f8?

    e-mail:

    estevao333@yahoo.com.br

Skip to main content