HTML clipboard
Neste tutorial trataremos de assuntos relacionados com a inicialização do
Windows 2000/XP. (processo de boot).
Em um dos próximos tutoriais abordaremos
técnicas para recuperação do Windows 2000/XP quando por algum motivo
(configurações incorretas, erros de operação, etc) o sistema não consegue
inicializar normalmente ou inicializa com problemas que impedem o seu
funcionamento correto. Trataremos dos seguintes assuntos:
O Processo de boot do Windows XP
- ARC Paths (Caminhos ARC) utilizados no Boot.ini
- Chaves utilizadas no arquivo Boot.ini
Vamos iniciar o tutorial falando sobre o processo de boot do Windows 2000/XP.
Veremos que, em grande parte, este processo é praticamente igual, tanto para o
Windows 2000 quanto para o Windows XP. Será apresentada a seqüência de passos do
processo de boot, bem como detalhes sobre os problemas que podem ocorrer em cada
etapa. É importante que o leitor entenda como é feita a inicialização (boot) do
Windows 2000/XP, pois em determinadas situações é muito mais simples corrigir um
problema que ocorre na inicialização do que ter que reinstalar o Windows
novamente. Para o usuário residencial, que tem um único computador, reinstalar o
Windows pode não ser problema em termos do tempo necessário para esta tarefa.
Agora imagine a situação de uma rede empresarial, com milhares de computadores
conectados em rede. Sempre que possÃvel, a equipe de suporte deve resolver o
problema e não simplesmente reinstalar o Windows. Pois além de economizar tempo,
o usuário poderá voltar a utilizar a máquina quanto antes, o que significa menor
tempo de parada. Para finalizar iremos detalhar o arquivo Boot.ini e os seus
componentes.
Entendendo o processo de boot do Windows XP.
Neste tópico veremos como funciona o processo de boot (inicialização) do Windows
2000/XP. O processo de boot começa quando você liga o computador e se encerra
com o logon no sistema. Analisaremos as cinco fases do processo de boot:
Seqüência de pré-boot
Seqüência de boot
Carga do kernel
Inicialização do kernel
logon.
Para que cada fase do processo de boot possa acontecer com sucesso, determinados
arquivos são necessários. Na tabela 1 estão listados os arquivos necessários a
cada fase do processo de boot. Systemroot indica a pasta onde estão os arquivos
do Windows 2000 XP estão instalados. Na maioria das vezes é a pasta C:\winnt ou
C:\Windows, mas pode ser uma pasta diferente, dependendo de como foi feita a
instalação do Windows.
Tabela 1 Arquivos utilizados no processo de boot do Windows XP.
| Arquivo |
Localização |
Fase |
| Ntldr |
Raiz da partição de sistema C:\ |
Pré-boot e boot |
| Boot.ini |
Raiz da partição de sistema C:\ |
boot |
| Bootsect.dos |
Raiz da partição de sistema C:\ |
boot |
| Ntdetect.com |
Raiz da partição de sistema C:\ |
boot |
| Ntoskrnl.exe |
systemroot\System32 |
Carga do kernel |
| Hal.dll |
systemroot\System32 |
Carga do kernel |
| System |
systemroot\System32\Config |
Inicialização do kernel |
| Device drivers (*.sys) |
systemroot\System32\Drivers |
Inicialização do kernel |
Na seqüência, apresento um pequeno resumo de cada uma das fases envolvidas no
processo de boot.
1. Seqüência de pré-boot: Após ligado o computador, uma série de testes de
hardware e detecção de dispositivos Plug and Play é processada. O partição ativa
é localizada e o setor de boot desta partição é carregado na memória e
executado. O arquivo Ntldr é carregado na memória e inicializado. Este arquivo é
que inicia o processa de carga do Windows 2000/XP.Â
2. Seqüência de boot: Após ter carregado o arquivo Ntldr na memória, a seqüência
de boot detecta informações sobre o hardware e os respectivos drivers, em
preparação para as fases de carregamento do Windows 2000/XP. Dentro da fase de
seqüência de boot, temos quatro etapas bem distintas, conforme descrito a
seguir:
Fase inicial de carga do boot:Â Nesta subfase, o Ntldr altera o processador do
modo real de memória para o modo de 32 bit, o qual é requerido para a carga das
demais funções. Um suporte mÃnimo de sistema de arquivos é carregado, para que o
Ntldr possa achar e carregar o Windows 2000 Server, a partir de uma partição FAT
ou NTFS.
Seleção do Sistema Operacional: Nesta subfase, o Ntldr lê o arquivo Boot.ini
(que detalharemos no próximo item) e apresenta um menu de opções, de tal forma
que o usuário possa escolher qual o sistema operacional que será carregado, no
caso de existir mais de um Sistema operacional instalado. Caso o arquivo Boot.ini
tenha sido eliminado por acidente, Ntldr tenta carregar o Windows 2000/XP a
partir da primeira partição do primeiro disco rÃgido. Neste ponto já podemos
adiantar que a função do arquivo Boot.ini é fornecer informações para que o
Ntldr possa exibir um menu no qual o usuário pode selecionar qual o sistema
operacional deve ser carregado. No arquivo Boot.ini também está a definição de
qual é o sistema operacional padrão, ou seja, aquele que será inicializado, caso
o usuário não faça nenhuma seleção no menu de inicialização.
Detecção de hardware: É feita pelos arquivos Ntdetect.com e Ntoskrnl.exe. Os
dispositivos de hardware detectados pelo arquivo NTDETECT.COM são passados para
o arquivo NTLDR, o qual gravará estas informações na Registry, na chave
HKEY_LOCAL_MACHINE\HARDWARE. O Windows XP detecta, automaticamente, dispositivos
tais como: Portas de comunicação, processadores de ponto flutuante, drives de
disquete, teclado, mouse, portas paralelas, dispositivos SCSI, adaptadores de
vÃdeo e assim por diante.
Seleção de configuração: Após a detecção do hardware, você terá a oportunidade
de acessar uma lista com diferentes Perfis de Hardware, caso você tenha criado
outros perfis além do perfil padrão. Um Perfil de Hardware é uma configuração
que pode fazer com que o Windows 2000/XP ignore determinados componentes de
hardware e com isso não carregue os drivers para estes componentes, quando da
inicialização do sistema.
3. Carga do kernel: Durante esta fase, o arquivo Ntoskrnl.exe é carregado, porém
ainda não é incializado. O arquivo hal.dll é carregado na memória. Drivers para
dispositivos de hardware de baixo nÃvel, como por exemplo, discos rÃgidos, são
carregados. Dispositivos de hardware de baixo nÃvel, são aqueles dispositivos
que precisam ser inicializados antes do que os demais, de tal forma que o
processo possa prosseguir. Uma série de retângulos, em seqüência, é exibida na
tela, a medida que os dispositivos são carregados. Neste momento ainda não foi
carregada a interface gráfica do Windows 2000/XP. Nesta fase a chave da Registry
HKEY_LOCAL_MACHINE\SYSTEM é carregada a partir do arquivo Systemroot\System32\Config\System.
As informações da Registry estão gravadas em arquivos na pasta Systemroot\System32\Config,
onde Systemroot representa a pasta onde o Windows 2000/XP foi instalada. Em
seguida um "control set" (conjunto de controle) é selecionado e carregado. Um
control set representa um conjunto de configurações que definem quais drivers e
serviços serão carregados e inicializados automaticamente pelo Windows 2000/XP.
Conforme veremos em um dos próximos tutoriais, onde falaremos sobre Last Know
Good Configuration, o conceito de control set é importante na recuperação do
sistema quando usamos a opção Last Know Good Configuration.
4. Inicialização do kernel: Após ter sido completada a fase da carga do kernel,
este é inicializado e o Ntldr passa o controle para o kernel do sistema. Nesta
etapa é exibida uma tela gráfica, com uma barra de status indicando o andamento
do processo. Nesta etapa os drivers de dispositivos de baixo nÃvel, carregados
na fase anterior, são inicializados. Também é nesta fase, que os diversos
Serviços configurados para inicializar automaticamente, são inicializados. Por
exemplo o DNS, Inetinfo (Servidor Web – Internet Information Server), e qualquer
outro serviço instalado no Windows 2000/XP As seguintes etapas são executadas
durante esta etapa:
A chave HKEY_LOCAL_MACHINE\HARDWARE é criada usando como base as informações
coletadas na etapa de Detecção de Hardware da fase de Seqüência de boot,
descrita anteriormente.
Criação de uma cópia do control set utilizado – Clone Control set: É feita uma
cópia do control set utilizado. Esta cópia poderá ser utilizada posteriormente,
caso alterações feitas no control set atual, impeçam a inicialização do Windows
XP.
Os drivers de hardware que foram carregados na fase de Carga do Kernel são agora
inicializados. Cada driver possui um parâmetro de configuração chamado
ErrorControl. Este parâmetro define a maneira como o Windows 2000/XP irá
proceder, caso algum erro aconteça na inicialização do driver. Os valores
possÃveis para este parâmetro são os seguintes:
a. 0x0: Ignore. Caso ocorra algum erro na inicialização do driver, o Windows
2000/XP simplesmente ignora o erro e continua a inicialização dos demais drivers.
Nenhuma mensagem de erro será exibida.
b. 0x1: Normal. Uma mensagem de erro será exibida e o processo de Inicialização
do Kernel continua.
c. 0x2: Severe. O processo de boot falha, o computador será reinicializado e
serão utilizadas as configurações definidas no control set Last Know Good
Configuration, ou seja, as configurações que foram gravadas como sendo as
configurações da última inicialização com sucesso serão utilizadas. Se o erro
ocorre novamente, quando o computador já está utilizando o control set Last Know
Good Configuration, o erro será ignorado e a inicialização do Kernel continuará
com a inicialização dos demais drivers.Â
d. 0x3: Critical. O processo de boot falha, o computador será reinicializado e
serão utilizadas as configurações definidas no control set Last Know Good
Configuration, ou seja, as configurações que foram gravadas como sendo as
configurações da última inicialização com sucesso serão utilizadas. Se o erro
ocorre novamente, quando o computador já está utilizando o control set Last Know
Good Configuration, a seqüência de boot será interrompida e uma mensagem de erro
será exibida. Este valor é utilizado para os dispositivos de hardware que são
fundamentais para a inicialização do sistema. Por exemplo, o boot não tem como
continuar se o Windows 2000/XP não conseguir inicializar os drivers para acesso
ao sistema de discos.
Os serviços configurados para inicialização automática são inicializados e
carregados na memória do computador. Os serviços são inicializados em uma ordem
especÃfica, de acordo com as dependências existentes entre os respectivos
serviços. Por exemplo, vários serviços dependem do serviço Remote Procedure Call
(RPC). O serviço RPC deve ser inicializado antes dos serviços que dele dependem,
caso contrários a inicialização destes últimos irá falhar.
5. Logon: Nesta fase o subsistema Win32 automaticamente inicializa o serviço
Winlogon.exe, o qual inicializa a Autoridade local de segurança – LSA – Local
Security Authority (Lsass.exe), e finalmente a janela de logon é exibida. O
processo de inicialização do Windows 2000/XP, somente é considerado OK, quando o
usuário efetua o logon. Após o logon ter sido feito com sucesso o Windows
2000/XP copia as configurações do Clone control set para o Last Know Good
Configuration control set, ou seja, o Windows XP considera que as configurações
atuais representam a última configuração que permitiu uma inicialização com
sucesso – Last Know Good Configuration.
Pode parecer um pouco complexo, porém conhecer o processo de boot do Windows
2000/XP é de fundamental importância para o Administrador do sistema e para os
técnicos de suporte, principalmente quando surgem problemas e o computador não
consegue inicializar com sucesso. Informações mais detalhadas sobre o processo
de boot podem ser encontradas na Ajuda do Windows 2000/XP e também nos links
apresentados no final deste tutorial.
Agora passaremos a analisar alguns tópicos importantes para a inicialização e
manutenção do Windows 2000/XP em funcionamento. Vamos iniciar por um estudo
detalhado do arquivo Boot.ini.
O arquivo Boot.ini
O arquivo Boot.ini é criado durante a instalação do Windows 2000/XP. Este
arquivo é gravado na partição ativa, ou seja, na partição que é utilizada para
inicializar o Windows 2000/XP. Normalmente a partição ativa é o drive C:\.
Durante a fase de inicialização do Windows 2000/XP, o arquivo NTLDR lê o
conteúdo do arquivo Boot.ini e utiliza este conteúdo para montar o menu de
opções, no qual você pode selecionar o Sistema Operacional a ser carregado. O
arquivo Boot.ini é bastante útil quando temos mais de um Sistema Operacional
instalado no mesmo computador. Neste caso, as informações do arquivo Boot.ini
são utilizadas pelo NTLDR para exibir um menu, no qual selecionamos o Sistema
Operacional a ser carregado.
Por exemplo, em casa, tenho um computador de teste onde estão instaladas versões
de avaliação do Windows 98, do Windows 2000 Server em Inglês, do Windows 2000
Server em Português, do Windows 2000 Professional e do Windows XP Professional.
Ao inicializar este computador é exibido um menu como os diferentes Sistemas
operacionais instalados, no qual seleciono qual o sistema desejo carregar.Â
Na listagem a seguir coloco uma cópia do arquivo boot.ini do computador citado
no parágrafo anterior:
Arquivo boot.ini de um computador com cinco versõess diferentes do Windows
instaladas:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(1)partition(2)\WXPPRO
[operating systems]
multi(0)disk(0)rdisk(1)partition(2)\WXPPRO="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Microsoft Windows 2000 Server -
Portugues" /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\W2KSRVIN="Microsoft Windows 2000 Server" /fastdetect
multi(0)disk(0)rdisk(1)partition(2)\WINNT="Microsoft Windows 2000 Professional"
/fastdetect
C:\="Microsoft Windows 98"
O arquivo boot.ini possui duas seções distintas:
[boot loader]
[operating systems]
Na seção [boot loader] é informado qual o Sistema Operacional padrão, ou seja,
qual o Sistema Operacional será carregado caso o usuário não selecione uma das
opções do menu. Nesta seção também é definido durante quanto tempo o menu será
exibido. No nosso exemplo, o menu será exibido durante 30 segundos:timeout=30.
Neste exemplo também está definido que será carregado o Sistema Operacional
instalado na partição default=multi(0)disk(0)rdisk(1)partition(2)\WXPPRO. O
sistema definido como padrão (default), será carregado se o usuário não
selecionar nenhuma opção do menu.Â
Nota:Â Logo em seguida falaremos sobre a sintaxe utilizada pelo arquivo Boot.ini
para indicar a partição onde estão gravados os arquivos do Sistema Operacional
associado a cada opção. No nosso exemplo temos o caminho: default=multi(0)disk(0)rdisk(1)partition(2)\WXPPRO.
Este caminho também é conhecido como caminho ARC - Advanced RISC Computing.
Na seção [operating systems] é exibida a lista de Sistemas Operacionais
instalados e disponÃveis para uso. Cada linha indica um Sistema Operacional
instalado e para indicar a pasta onde estão os arquivos do respectivo Sistema
Operacional é utilizado o caminho ARC, que será detalhado logo em seguida. Após
o caminho podem ser fornecidas chaves que alteram a maneira como o respectivo
Sistema é inicializado, como no exemplo a seguir, onde foi utilizada a chave /fastdetect.
Estudaremos as chaves disponÃveis mais adiante. Esta lista poderá ter, no
máximo, 10 elementos.
multi(0)disk(0)rdisk(1)partition(2)\WXPPRO="Microsoft Windows XP Professional" /fastdetect
O que vem após o sinal de igual (=), entre aspas, é simplesmente uma descrição.
Esta é a descrição que é exibida no menu de inicialização.
Nota: Observe que para o Windows 9x ou Me, é fornecido o caminho tradicional, no
nosso exemplo C:\="Microsoft Windows 98", informando que o Windows 98 está na
partição C:\. O que vem após o sinal de igual (=), entre aspas, é simplesmente
uma descrição. Esta é a descrição que é exibida no menu de inicialização.
Para finalizar precisamos detalhar dois pontos importantes:
A sintaxe dos caminhos ARC.
As chaves que podem ser utilizadas no arquivo Boot.ini.
Entendendo a sintaxe dos caminhos ARC.
Vamos detalhar as diversas partes que compõem um caminho ARC. Considere os dois
exemplos a seguir:
multi(0)disk(0)rdisk(1)partition(2)\WXPPRO
scsi(0)disk(0)rdisk(1)partition(2)\WXPPRO
multi ou scsi: Na primeira parte do caminho temos duas opções: multi ou scsi.
Utilizamos scsi em uma única situação: quando temos uma controladora SCSI com a
BIOS desabilitada, o que é uma situação muito rara. Em todas as demais situações
utilizamos multi para a primeira parte do caminho ARC. O número entre parênteses
indica a ordem em que os adaptadores são carregados. Por exemplo, se você tiver
um computador com dois adaptadores IDE instalados. O caminho dos discos do
primeiro adaptador inicia com multi(0) e o caminho dos discos do segundo
adaptador inicia com multi(1).
disk: Indica a posição (ID) do disco SCSI e somente é utilizado quando a
primeira parte do caminho começa com scsi. Quando a primeira parte for multi,
esta parte será sempre disk(0).
rdisk: Um número que identifica o disco dentro da controladora. Para
controladores SCSI este número será ignorado. Sempre inicia com o valor zero.
Por exemplo, se você tiver um computador com duas controladores IDE e dois
discos em cada controladora, teremos as seguintes combinações possÃveis:
multi(0)disk(0)rdisk(0) -> Primeiro disco da primeira controladora.
multi(0)disk(0)rdisk(1) -> Segundo disco da primeira controladora.
multi(1)disk(0)rdisk(0) -> Primeiro disco da segunda controladora.
multi(1)disk(0)rdisk(1) -> Segundo disco da segunda controladora.
Partition: Indica o número da partição/volume dentro do disco. O valor entre
parênteses começa com 1, diferente dos valores dos outros parâmetros que iniciam
sempre com zero.Por exemplo, se você tiver um computador com duas controladores
IDE e dois discos em cada controladora. No primeiro disco da primeira
controladora você tem uma única partição e nos demais discos duas partições,
teremos as seguintes combinações possÃveis:
multi(0)disk(0)rdisk(0)partition(1)-> Primeira partição do primeiro disco da
primeira controladora.
multi(0)disk(0)rdisk(1)partition(1)-> Primeira partição do segundo disco da
primeira controladora.
multi(0)disk(0)rdisk(1)partition(2)-> Segunda partição do segundo disco da
primeira controladora.
multi(1)disk(0)rdisk(0)partition(1)-> Primeira partição do primeiro disco da
segunda controladora.
multi(1)disk(0)rdisk(0)partition(2)-> Segunda partição do primeiro disco da
segunda controladora.
multi(1)disk(0)rdisk(1)partition(1)-> Primeira partição do segundo disco da
segunda controladora.
multi(1)disk(0)rdisk(1)partition(2)-> Segunda partição do segundo disco da
segunda controladora.
O que vem após o caminho ARC é o nome da pasta, dentro da partição especificada
pelo caminho ARC, onde estão os arquivos do Sistema Operacional. No exemplo que
demos no inÃcio deste tópico temos o seguinte caminho:
multi(0)disk(0)rdisk(1)partition(2)\WXPPRO
O que representa esta caminho? Lendo de trás para frente temos a seguinte
interpretação:
A pasta WXPPRO -> \WXPPRO
da segunda partição -> partition(2)
do segundo disco -> rdisk(1) *
da primeira controladora -> multi(0) *
(*): Lembre que para multi, disk e rdisk os valores iniciam em zero e para
partition os valores iniciam em um.Â
As chaves que podem ser utilizadas no arquivo Boot.ini.
Conforme descrito anteriormente, existem algumas chaves que podem ser utilizadas
no arquivo Boot.ini, para alterar a maneira como cada Sistema Operacional é
utilizado. A seguir descrevemos as principais chaves disponÃveis. Para uma
relação completa das chaves disponÃveis, consulte o seguinte endereço:
http://technet.microsoft.com/pt-br/sysinternals/default.aspx /basevideo:Â Esta chave faz com que o Sistema Operacional seja inicializado
utilizando um driver VGA com configurações padrão mÃnimas, suportadas pela
maioria dos adaptadores de vÃdeo e monitores. Esta opção pode ser utilizada se
você instalou um novo adaptador de vÃdeo (ou um novo monitor), os quais não
estão funcionando corretamente, a ponto de após feito o logon, não ser possÃvel
ler as informações exibidas na tela. Neste caso você pode fazer a inicialização
no Modo seguro, que descreveremos mais adiante, alterar o arquivo boot.ini
adicionando a chave /basevideo. Quando o Windows 2000/XP for inicializado serão
utilizadas configurações básicas do driver VGA. Você poderá fazer o logon e
corrigir as configurações que estão impedindo o funcionamento correto do
adaptador de vÃdeo ou do monitor. Feitas as correções você pode retirar a chave
/basevideo para que o Windows 2000/XP carregue as configurações de vÃdeo
normalmente. No exemplo a seguir temos uma ilustração do uso desta chave:
multi(0)disk(0)rdisk(1)partition(2)\WXPPRO /basevideo
/fastdetect=comx ou /fastdetect=comx, y,z ou /fastdetect:Â Com esta chave a
detecção de mouse serial na inicialização será desabilitada. Comx é utilizada
para especificar se a detecção deve ser desabilitada em um única porta com, como
por exemplo Com1 ou Com2. É possÃvel desabilitar a detecção em duas ou mais
portas, como por exemplo Com1,2. Se não for especificada a porta Com, a detecção
será desabilitada em todas as portas. Por padrão a chave /fastdetect, sem a
especificação de porta, é incluÃda em todas as opções de Sistema Operacional do
arquivo boot.ini, com exceção de linhas que correspondem ao Windows 9x ou Me.
/maxmem:n: Com esta chave é possÃvel definir a quantidade máxima de memória RAM
disponÃvel para o Windows 2000/XP. Por exemplo, em um computador com 256 MB de
RAM instalados, se você quiser utilizar apenas 128, utilize a seguinte chave: /maxmem:128.
A única justificativa para o uso desta chave é se você quiser detectar se um
determinado pente de memória está com problemas.
/noguiboot: Inicializa o Windows 2000/XP sem exibir a tela gráfica com
informações sobre o andamento (Status) da inicialização.
/sos: A medida que os drivers de dispositivos vão sendo carregados, o nome dos
arquivos que estão sendo carregados será exibido no vÃdeo. Esta opção é útil
quando o Windows 2000/XP não consegue inicializar corretamente e você quer
detectar em que ponto da inicialização está o problema. Por exemplo, se você
utilizar esta chave e a inicialização for interrompida no momento da carga do
driver da placa de rede, este é um bom indicativo de que o problema pode ser com
este driver ou com algum driver relacionado.
Conclusão:
Nos endereços a seguir você encontra informações detalhadas, artigos técnicos e
descrição de problemas/soluções relacionados com a inicialização do Windows
2000/XP, do arquivo Boot.ini e de caminhos ARC:
http://support.microsoft.com/support/kb/articles/Q291/9/80.ASP
http://support.microsoft.com/support/kb/articles/q99/7/43.asp
http://www.zdjournals.com/ewn/9802/ewn9821.htm
http://www.powerquest.com/support/PM/pm6076.html
http://www.ntfaq.com/ntfaq/sysconf66.html
http://www.sysinternals.com/ntw2k/info/bootini.shtml
http://support.microsoft.com/support/kb/articles/q102/8/73.asp
http://support.microsoft.com/support/kb/articles/Q239/7/80.ASP