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.

Filer som brukes i bootprosessen:

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.

Følgende er de trinnene som foregår i ”pre-boot” sekvensen:
  1. 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.

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

  3. MBR skanner partisjonstabellen for å se hvilken partisjon som er aktiv (det vil si merket ”A” i Fdisk).

  4. Computeren vil initiere og laste inn filen NTLDR som er den filen som starter systemet.

BOOT sekvensen:

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.

Bootsekvensen bruker følgende filer:
  1. Ntldr

  2. boot.ini

  3. bootsect.dos (bare dersom maskinen kan dual-bootes, ellers er denne ikke i bruk). Den behøver ikke engang å være tilstede.

  4. Ntdetect.com (leter etter systemfilene).

  5. Ntoskrnl.exe (starter NT kernel altså kjernen i operativsystemet.)

Boot-sekvensen har fire under-faser:
  1. 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.

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



  1. 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):

  • Busser og adtaptere av forskjellige typer

  • Kommunikasjonsporter (seriellport / modemport og nettverk)

  • Tastatur

  • Mus og andre pekeredskaper

  • Parallellport (printerport)

  • Matematikk co-prosessor

  • Floppystasjon(er)

  • SCSI adaptere

  • Skjermkort



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.

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

Kernel Load (innlasting av operativsystemets kjerne):

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:

Initialisering av kjernen:

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:

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

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!!

Konklusjon:

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.