Hvad sker der i Mac OS X-startprocessen?

Anonim

Har du nogensinde spekuleret på, hvad der sker under Mac OS X-start- og opstartsprocessen? Med Mac OS X er det lidt mere kompliceret, end tingene engang var, og for længst forbi er tiden med Classic Mac OS (System 9, 8, 7, 6), hvor vi ser vores Mac'er starte op med en række udvidelser og kontrolpaneler, der vi kunne altid identificere ved deres ikon alene og derefter gå rundt i mappen Udvidelser for nemt at justere, hvad der indlæses og sker ved Mac-opstart.I dag med Unix-grundlaget for Mac OS X er mange brugere fuldstændig uvidende om, hvad der foregår bag kulisserne.

Så hvad sker der præcist under Mac OS X-startprocessen? Du kan altid få et bedre udseende ved at starte en Mac i Verbose Mode, men det forklarer ikke nødvendigvis alt det, du ser. Heldigvis er en glimrende forklaring tilgængelig via segment på KernelThread, som omhyggeligt oplister rækkefølgen af ​​Mac OS X-opstartsbegivenheder fra start til slut. Den er ret grundig og værd at læse, gentaget nedenfor for de nysgerrige Mac-brugere derude.

note: Som en læser påpegede, bruger PPC OF (Openfirmware), i386 bruger EFI (Extensible Firmware Interface)

Så hvad sker der under Mac OS X-startprocessen? Du tænder for din Mac, og det er hvad der sker:

  • Strøm er tændt.
  • OF eller EFI-kode udføres.
  • Hardwareoplysninger indsamles, og hardware initialiseres.
  • Noget (norm alt OS, men også ting som Apple Hardware Test osv.) er valgt til at starte. Brugeren kan blive bedt om at vælge, hvad der skal startes.
  • Kontrollen overføres til /System/Library/CoreServices/BootX, opstartsindlæseren. BootX indlæser kernen og tegner også OS badges, hvis nogen.
  • BootX forsøger at indlæse en tidligere cachelagret liste over enhedsdrivere (oprettet/opdateret af /usr/sbin/kextcache). En sådan cache er af typen mkext og indeholder infoordbøgerne og binære filer til flere kerneudvidelser. Bemærk, at hvis mkext-cachen er korrupt eller mangler, vil BootX kigge i /System/Library/Extensions for udvidelser, der er nødvendige i det aktuelle scenarie (som bestemt af værdien af ​​OSBundleRequired egenskaben i Info.plist filen i udvidelsens bundt.
  • init rutinen for kernen udføres. Opstartssystemets rodenhed bestemmes. På dette tidspunkt er firmware ikke længere tilgængelig.
  • Forskellige Mach/BSD-datastrukturer initialiseres af kernen.
  • I/O-sættet er initialiseret.
  • Kernen starter /sbin/mach_init, Mach-tjenestens navngivningsdæmon (bootstrap). mach_init vedligeholder tilknytninger mellem tjenestenavne og de Mach-porte, der giver adgang til disse tjenester.

Herfra bliver opstarten brugerniveau:

  • mach_init starter /sbin/init, den traditionelle BSD indlede processen. init bestemmer kørselsniveauet og kører /etc/rc.boot, som sætter maskinen nok op til at køre enkeltbruger.

Under dens udførelse, rc.boot og den anden rc scripts kilde /etc/rc.common , et shell-script, der indeholder hjælpefunktioner, såsom CheckForNetwork() (kontrollerer, om netværket er oppe), GetPID (), purgedir() (sletter kun mappeindhold, ikke strukturen), osv.

  • rc.boot finder ud af opstartstypen (Multi-User, Safe, CD-ROM, Network osv.). I tilfælde af netværksstart (sysctl-variablen kern.netboot indstilles til1, i så fald kører den /etc/rc.netboot med en start argument.

/etc/rc.netboot håndterer forskellige aspekter af netværksopstart. For eksempel udfører den netværks- og (hvis nogen) lokale mounts. Den kalder også /usr/bin/nbst for at knytte en skyggefil til det diskbillede, der bruges som rodenheden.Ideen er at omdirigere skrivninger til skyggefilen, som forhåbentlig er på lok alt lager.

  • rc.boot finder ud af, om et filsystemkonsistenstjek er påkrævet. Single-user og CD-ROM boots kører ikke fsck. SafeBoot kører altid fsck. rc.boot håndterer også returstatus for fsck.
  • Hvis rc.boot afsluttes, /etc/rc , multi-user startup scriptet køres derefter. Hvis der startes op fra en cd-rom, skifter scriptet til /etc/rc.cdrom (installation).
  • /etc/rc monterer lokale filsystemer (HFS+, HFS, UFS, /dev/ fd, /.vol), sikrer, at mappen /private/var/tmp findes og kører /etc/rc.installer_cleanup, hvis der findes en (efterladt af et installatør før genstart).
  • /etc/rc.cleanup er kørt. Det "renser" en række Unix- og Mac-specifikke mapper/filer.
  • BootCache er startet.
  • Forskellige sysctl variabler indstilles (såsom for det maksimale antal vnodes, System V IPC osv.). Hvis /etc/sysctl.conf findes (plus /etc/sysctl-macosxserver.conf på Mac OS X Server), læses den, og sysctl variabler indeholdt deri indstilles.
  • syslogd er startet.
  • Mach-symbolfilen er oprettet.
  • /etc/rc starter kextd, dæmonprocessen der indlæser kerneudvidelse efter behov fra kerne- eller klientprocesser.
  • /usr/libexec/register_mach_bootstrap_servers køres for at indlæse forskellige Mach bootstrap-baserede tjenester indeholdt i / etc/mach_init.d
  • portmap og netinfo startes.
  • Hvis /System/Library/Extensions.mkext er ældre end /System/Library/Extensions , /etc/rc sletter den eksisterende mkext og opretter en ny. Det opretter også en, hvis en ikke findes.
  • /etc/rc starter /usr/sbin/update , dæmonen, der ofte tømmer interne filsystem-caches til disken.
  • /etc/rc starter det virtuelle hukommelsessystem. /private/var/vm er sat op som swap-mappe. … filer eller slet eksisterende).
  • /etc/rc starter /usr/libexec/fix_prebindingfor at rette forkert forudbundne binære filer.
  • /etc/rc udfører /etc/rc.cleanupfor at rydde op og nulstille filer og enheder.
  • /etc/rc lancerer endelig /sbin/SystemStarter til at håndtere startelementer fra steder som /System/Library/StartupItems og /Library/StartupItems Et StartupItem er et program, norm alt et shell-script, hvis navn matcher mappenavnet. Mappen indeholder en egenskabslistefil, der indeholder nøgleværdi-par såsom Description, Provides, Kræver, OrderPreference, start/stop beskeder osv. Du kan køre SystemStarter -n -D som root for at få programmet til at udskrive fejlretnings- og afhængighedsoplysninger (uden egentlig at køre noget).
  • CoreGraphics opstartselementet starter Apple Type Services-dæmonen (ATSServer ) samt Window Server (WindowServer).

Og så er din Mac startet op!

Du kan selv se lidt af denne aktivitet med Verbose Mode (som du kan starte i Verbose Mode pr. boot, eller du kan endda indstille en Mac til altid at starte i Verbose Mode, hvis du altid vil se støvlen i unix-stil), men dette er en ret grundig forklaring.

Apple har også noget tilgængelig dokumentation om Mac-opstartsprocessen tilgængelig her på deres udviklerdokumentaiton-bibliotek her.

Bemærk, at den originale URL, der giver ovenstående oplysninger, ikke længere er aktiv, så det indlæg er blevet inkluderet ovenfor for eftertiden via cache. Den oprindelige kilde var en tråd på KernelThread på følgende url: http://www.kernelthread.com/mac/osx/arch_startup.html som i øjeblikket er offline og ikke omdirigerer til en ny placering.

Hvis du har nogle godbidder eller andre tilføjelser at tilføje til Mac OS X-startsekvensen, så del i kommentarerne!

Hvad sker der i Mac OS X-startprocessen?