Windows 2000 – Bootprosessen.
Et kompendium beregnet på elever ved Oslo By Steinerskole.
Skrevet av Hans Poppe
Kilde: Microsoft
I dette heftet skal vi ta for oss oppstartsprosessen I Windows 2000. Husk at det er store forskjeller på NT-baserte Windows-installasjoner og DOS-baserte Windows-installasjoner. Med DOS-baserte Windows-installasjoner menes her MS-DOS, Windows 3.11, Windows 95, Windows 98 og Windows 98 Second Edition. (Windows Me er et særtilfelle). Med NT-baserte Windows-installasjoner mener vi NT 3.5, NT 4.0, Windows 2000, Windows XP (kommer i løpet av 2002). Vi skal se på hvordan bootprosessen (oppstartsprosessen) går i 5 stadier; preboot sequence, boot sequence, kernel load, kernel initialization og logon samt hvilke filer som brukes i hvilket stadium.
En Intel-basert boot sekvens krever at bestemte filer er på plass på maskinen. Tabell 1.1 viser hvilke filer som brukes, hvor de ligger og hvilket stadium i bootprosessen de tilhører. Systemroot er path (filbanen) til maskinens Windows 2000 installasjonsmappe. Normalt (hvis du har brukt en default installasjon) vil de være C.\winnt.
|
Fil |
Plassering |
Oppgave |
|
Ntldr |
System partition root (C:\ ) |
Preboot og boot |
|
Boot.ini |
System partition root |
Boot |
|
Bootsect.dos |
System partition root |
Boot (”valgfri” * ) |
|
Ntdetect.com |
System partition root |
Boot |
|
Ntbootdd.sys |
System partition root |
Boot (”valgfri” * ) |
|
Ntoskrnl.exe |
systemroot\System32 |
Kernel load |
|
Hal.dll |
systemroot\System32 |
Kernel load |
|
System |
systemroot\System32\Config |
Kernel initialization |
|
Device drivers (*.sys) |
systemroot\System32\Drivers |
Kernel initialization |
(tabell 1.1)
( * De ”valgfrie” er filer som er i bruk dersom maskinen er satt opp med såkalt ”dual-boot” det vil si at den kan starte flere enn ett operativsystem.)

Preboot Sekvensen:
Oppstartsprosessen begynner med ROM, BIOS og POST-rutinene som vi har snakket om tidligere. Du husker sikkert at vi snakket om at når strømmen slås på, vil ”Power On Self Test (POST)” begynne å sjekke computerens hardware. Den vil spinne opp disken, sjekke at video, lyd, nettverk et cetera virker og deretter initialisere MBR (Master Boot Record) som igjen vil peke til Operativsystemets oppstartsfiler nemlig NTLDR, ikke system.ini som det er på en DOS basert PC.
PC-en kjører POST rutinen for å bestemme hvor mye fysisk RAM som er tilstede, om det er endringer i hardware (nye ting? noe som mangler?). Hvis computeren har et OS som støtter ”Plug & Play” vil BIOS (basic I/O) enumerering og konfigurasjon av hardware skje på dette stadiet.
Computerens BIOS vil nå finne bootdisken (den disken som er bootbar, altså der oppstartsfilene ligger) og laster inn MBR (Master Boot Record) og kjører denne.
MBR skanner partisjonstabellen for å se hvilken partisjon som er aktiv (det vil si merket ”A” i Fdisk).
Computeren vil initiere og laste inn filen NTLDR som er den filen som starter systemet.
Etter at computeren har lastet Ntldr inn til RAM vil bootsekvensen samle informasjon om maskinvare og drivere for maskinvare som en del av sin forberedelse på å kunne begynne selve oppstarten av Windows 2000.
Ntldr
boot.ini
bootsect.dos (bare dersom maskinen kan dual-bootes, ellers er denne ikke i bruk). Den behøver ikke engang å være tilstede.
Ntdetect.com (leter etter systemfilene).
Ntoskrnl.exe (starter NT kernel altså kjernen i operativsystemet.)
Initial boot loader: Under den såkalte initial bootloader phase” vil Ntldr endre mikroprosessorens modus fra real-mode til 32bit “flat minnemodell”, noe Ntldr krever for å kunne utføre de neste oppgavene på listen. Det neste som nå skjer er at Ntldr starter en ”mini filsystem driver”. Denne driveren gjør at NT kan boote fra både en FAT og en NTFS partisjon.
valg av operativsystem (hvis du IKKE har dual-boot vil valget alltid bli Win2000.) Det som egentlig skjer i denne fasen er at NT leser filen boot.ini. Hvis boot.ini gir brukeren et valg mellom flere operativsystemer vil det komme en melding på skjermen som lyder: ”Please select the operating system to start”. Hvis du ikke foretar et valg innenfor et bestemt antall sekunder (hvor mange sekunder det skal være kan konfigureres i kontrollpanel => system) vil Ntldr starte det OS som er default i boot.ini. hvis boot.ini bare har et valg, vil denne delen ikke forekomme, og default OS vil alltid bli valgt.
|
OBS! |
|---|
|
Dersom boot.ini filen IKKE er der, vil Ntldr forsøke å finne Windows2000 i mappen C:\Winnt (C:\Windows for Windows XP). Derfor er det ikke så dumt å la Windows installeres i default installasjonsmappe. |
Maskinvare deteksjon er det neste trinnet i bootprosessen. På Intel-baserte maskiner er det Ntdetect.com og Ntoskrnl.exe som foretar oppdagelse av maskinvare. Ntdetect.com er først ute og starter opp rett etter valg av operativsystem. (Husk det er ikke bestandig det er noe valg).
|
OBS! |
|
Hvis du har dual-boot og velger noe annet enn Windows 2000, f eks Windows98, vil Ntldr laste bootsect.dos. Denne filen er en kopi av den bootsektoren som var på harddisken FØR du installerte Windows2000. Det kan altså være en kopi av en ”tidligere maskin”. Ved å overlate bootprosessen til bootsect.dos vil føre til at et annet OS vil boote, og da vil det være det OS du valgte i forrige fase. |
Ntdetect.com vil sjekke og starte opp (laste drivere for):
|
|
Ntdetect.com vil nå lage en liste over det som er tilgjengelig av maskinvare og overlater denne listen til Ntldr for oppbevaring. Senere vil Ntldr flette denne listen inn i registeret under HKEY_LOCAL_MACHINE\HARDWARE nøkkelen.
Valg av konfigurasjon (Det er greit å ha mer enn en hw config. spesielt på laptop :-). Etter at Ntldr begynner å laste inn Windows 2000 og maskinvaredelen er unnagjort vil brukeren få anledning til å velge maskinvareprofil, og ved oppstartsproblemer, muligheten til å velge ”Last known good configuration”. Noe av dette må imidlertid være satt opp på forhånd. Du får tak i disse valgene ved å trykke F8 under oppstarten av Windows. Følg med på skjermen!! hvis det bare er en eneste konfigurasjon vil ikke Windows vise disse valgene uten at du trykker F8 under oppstarten.
Etter valg av konfigurasjon (husk at det ikke er slik at du får dette valget, med mindre du selv har satt opp dette tidligere) vil Ntoskrnl.exe lastes inn og initialiseres. (Dette betyr naturligvis at det lastes inn til RAM og at programmet starter prosesser i CPU). Skjermbildet endres, blir mørkt og en serie med hvite felter dukker opp på den nederste delen av skjermen.
Under ”Kernel load phase” gjør Ntldr følgende:
Laster Ntoskrnl.exe til RAM, men initialiserer den ikke.
Laster ”Hardware abstraction layer (hal.dll)
Laster HKEY_LOCAL_MACHINE\SYSTEM registernøkkelen fra %systemroot%\system32\Config\System
Velger hvilket kontrollsett den vil bruke. Et kontrollsett er en samling konfigurasjonsdata dom brukes til å styre systemet, slik som for eksempel hvilke drivere som skal lastes inn og hvilke services (tjenester) som skal starte automatisk. (For eksempel er printerservice et eksempel på en service som vanligvis starter automatisk. Du behøver ikke starte den selv for å kunne skrive ut).
Laster drivere (bare de drivere som har 0x0 som startparameter). Disse driverne er gjerne av en veldig grunnleggende karakter. Det er ofte harddiskdrivere og lignende. Disse startes opp i en bestemt rekkefølge som bestemmes av den numeriske verdien driveren er tilordnet i registernøkkelen: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder
Så snart ”kernel load phase” er over vil Ntoskrnl.exe initialiseres og Ntldr vil overføre kontrollen til kjernen. Det er på dette steget at vi får et nytt skjermbilde med dårlige farger og hvor det står noe i retning av: ”Windows 2000 is starting up” samt en blå progresjonslinje som viser at det er fremdrift. Det er fire oppgaver som må løses for at systemet skal kunne starte i denne fasen:
Registernøkkelen ”Hardware key” lages. Hvis initialiseringen går greit vil Kernel bruke data samlet inn under ”hardware detection” for å lage denne nøkkelen som heter HKEY_LOCAL_MACHINE\HARDWARE. Denne nøkkelen har informasjon om maskinvarekomponenter på hovedkortet og IRQer som er i bruk av periferienheter. (Eks: Lydkort)
Registernøkkelen Clone Control Set lages. Kjernen lager et “Clone Control Set” ved å kopiere det Controlset som blir angitt i registernøkkelen: HKEY_LOCAL_MACHINE\SYSTEM\Select. denne klonen blir ikke endret, da poenget med den er å ha en kopi av den originale konfigurasjonen (eller en som vi VET at virker). Den blir derfor ikke påvirket av endringer som skjer under selve oppstarten og heller ikke av endringer i maskinvarekonfigurasjonen som oppdages under oppstarten. For eksempel et nytt skjermkort. Kopien er til bruk i tilfelle den nye konfigurasjonen ikke virker.
Drivere lastes og initieres. Etter at Clone Control Set er laget (kopien er tatt) vil kjernen starte opp lavnivå drivere som ble lastet inn under ”kernel load phase”. Deretter vil kjernen sjekke registernøkkelen: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services for å lete etter drivere med initialiserings verdi 0x1. Rekkefølgen de lastes inn i er spesifisert i registernøkkelen. Driverne vil starte opp efterhvert som de lastes inn i RAM i denne fasen. Hvis det skulle oppdages en feil under oppstart av en driver vil bootprosessen fortsette og hva som skjer er avhengig av hva som er skrevet i koden til driveren. Denne informasjonen ligger i det som kaller ”ErrorControl” for den aktuelle driveren. ErrorControl verdiene finnes i registernøkkelen: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\name_of_service_or_driver\ErrorControl.
Services (tjenester) startes. Etter at kjernen laster og starter driverne vi Session Manager (smss.exe) sette I gang de høyere “subsystemer” og tjenester som skal brukes av Windows 2000. Smss.exe vil også starte opp diverse tjenester i Memory Management, DOS-baserte enheter (maskinvare) og diverse subsystemer.
Tabell 1.1 viser hvilke ErrorControl verdier som resulterer i hvilken handling:
|
ErrorControl verdi |
Resultat |
|
0x0 (Ignore) |
Bootsekvensen overseer feilen og fortsetter uten å gi noen feilmelding. |
|
0x1 (Normal) |
Bootprosessen vil gi feilmelding, men fortsetter allikevel |
|
0x2 (Severe) |
Bootprosessen feiler og vil deretter restarte maskinen men vil da bruke denne “LastKnownGood Controlset”. Hvis bootprosessen allerede bruker “LastKnownGood Controlset” vil bootprosessen overse feilen og fortsette. |
|
0x3 (Critical) |
Bootprosessen feiler og maskinen restartes med Last Known Good Control Set. Hvis det er dette kontrollsettet som har forårsaket feilen vil maskinen stanse og gi en feilmelding. |
(Tabell 1.2)
Logon prosessen begynner I det øyeblikk kjernen er ferdig med å initialisere. Det er et subsystem som heter Win32 som automatisk starter Winlogon.exe, som igjen starter Local Security Authority (Lsass.exe) og dette programmet viser frem dialogboksen for Logon. Du kan nå logge på maskinen, selv om Windows 200 ikke er ferdig med å forberede nettverkskoblinger.
Det neste som skjer nå er at Service Controller starter og skanner (for en siste gang ) registernøkkelen: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services etter servises (tjenester) med en startverdi 0x2, og disse blir lastet. Dette er blant annet Workstationservice og Serverservice.
De tjenestene som starter på dette stadiet gjør det basert på verdien: ”DependOnGroup” eller ”DependOnService” og verdiene finnes i regiseternøkkelen: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
Windows 2000 bootprosess blir ikke regent som suksessfull før en buker har klart å logge seg på systemet. Så snart en bruker har klart å logge seg å vil det skje noe drastisk: Systemet kopierer CloneControlSet til LastKnownGood kontrollsett. Tenk over hva dette betyr!!
I denne runden har vi diskutert bootprosessen I Windows 2000. Vi har sett på den Intelbaserte maskinkonfigurasjonen. Det er viktig å huske at Windows 2000 også kan installeres på maskiner som ikke har en 8086 basert (Intel eller andre produsenter) prosessor. Det finnes også Alpha og RISK prosessorer, selv om Windows NT-baserte systemer ikke lenger støtter Alpha. Den siste NT versjonen som støttet Alphaprosessorer var NT 4.0 Det aller, aller vanligste å støte på i livet er fremdeles Intel og Intel kloner som kjører Windows 2000.
Vi så på at bootprosessen har fem hovedstadier: ”preboot sequence”, ”boot sequence”, ” kernel load”, ” kernel initialization” og ”logon”. Vi har også sett på hvilke filer som brukes, hva de er til og hvor de finnes, eventuelt hvordan de dannes og på hvilket stadium i bootprosessen de er aktive.