Vad händer i Mac OS X-startprocessen?

Anonim

Har du någonsin undrat vad som händer under Mac OS X-start- och startprocessen? Med Mac OS X är det lite mer komplicerat än vad det en gång var, och för länge sedan är tiderna för Classic Mac OS (System 9, 8, 7, 6), där vi ser våra Mac-datorer starta upp med en serie tillägg och kontrollpaneler som vi kunde alltid identifiera enbart med deras ikon och sedan gräva runt i mappen Extensions för att enkelt justera vad som laddas och inträffar vid Mac-start.Idag med Unix-basen för Mac OS X är många användare helt omedvetna om vad som händer bakom kulisserna.

Så vad exakt händer under Mac OS X-startprocessen? Du kan alltid få ett bättre utseende genom att starta en Mac i Verbose Mode, men det förklarar inte nödvändigtvis allt du ser. Lyckligtvis finns en utmärkt förklaring tillgänglig via segment på KernelThread, som noggrant listar sekvensen av Mac OS X-starthändelser, från början till slut. Den är ganska grundlig och värd att läsa, upprepas nedan för de nyfikna Mac-användarna där ute.

not: Som en läsare påpekade använder PPC OF (Openfirmware), i386 använder EFI (Extensible Firmware Interface)

Så vad händer under Mac OS X-startprocessen? Du slår på din Mac och det här är vad som händer:

  • Strömmen är påslagen.
  • OF eller EFI-kod exekveras.
  • Hårdvaruinformation samlas in och hårdvaran initieras.
  • Något (vanligtvis operativsystemet, men också saker som Apple Hardware Test, etc.) är v alt att starta. Användaren kan bli ombedd att välja vad som ska startas.
  • Kontrollen överförs till /System/Library/CoreServices/BootX, starthanteraren. BootX laddar kärnan och ritar även OS-märken, om några.
  • BootX försöker ladda en tidigare cachad lista över enhetsdrivrutiner (skapad/uppdaterad av /usr/sbin/kextcache). En sådan cache är av typen mkext och innehåller informationsordböcker och binära filer för flera kärntillägg. Observera att om mkext-cachen är korrupt eller saknas, skulle BootX leta i /System/Library/Extensions för tillägg som behövs i det aktuella scenariot (som bestäms av värdet för OSBundleRequired-egenskapen i Info.plist-filen i tilläggets paket.
  • init-rutinen för kärnan exekveras. Startsystemets rotenhet bestäms. För närvarande är firmware inte tillgänglig längre.
  • Olika Mach/BSD-datastrukturer initieras av kärnan.
  • I/O-satsen är initierad.
  • Kärnan startar /sbin/mach_init, Mach-tjänstens namngivningsdemon (bootstrap). mach_init underhåller mappningar mellan tjänstnamn och Mach-portar som ger åtkomst till dessa tjänster.

Från och med nu blir uppstarten användarnivå:

  • mach_init börjar /sbin/init, den traditionella BSD:n inleda processen. init bestämmer körnivån och kör /etc/rc.boot, vilket ställer in maskinen tillräckligt för att köra enanvändare.

Under dess utförande, rc.boot och den andra rc skriptkällan /etc/rc.common , ett skalskript som innehåller verktygsfunktioner, som CheckForNetwork() (kontrollerar om nätverket är uppe), GetPID (), purgedir() (tar endast bort kataloginnehåll, inte strukturen), etc.

  • rc.boot räknar ut vilken typ av uppstart (Multi-User, Safe, CD-ROM, Network etc.). Vid nätverksstart (variabeln sysctl kern.netboot ställs in på1 i så fall) kör den /etc/rc.netboot med en start argument.

/etc/rc.netboot hanterar olika aspekter av nätverksstart. Till exempel utför den nätverks- och (om några) lokala monteringar. Den anropar också /usr/bin/nbst för att associera en skuggfil med diskavbildningen som används som rotenhet.Tanken är att omdirigera skrivningar till skuggfilen, som förhoppningsvis finns på lokal lagring.

  • rc.boot räknar ut om en konsistenskontroll av filsystemet krävs. Enanvändare och CD-ROM-starter kör inte fsck. SafeBoot kör alltid fsck. rc.boot hanterar returstatusen för fsck också.
  • Om rc.boot avslutas framgångsrikt /etc/rc , startskriptet för flera användare körs sedan. Om man startar från en CD-ROM, växlar skriptet till /etc/rc.cdrom (installation).
  • /etc/rc monterar lokala filsystem (HFS+, HFS, UFS, /dev/ fd, /.vol), säkerställer att katalogen /private/var/tmp finns och kör /etc/rc.installer_cleanup, om en sådan finns (lämnad av en installatör innan omstart).
  • /etc/rc.cleanup körs. Den "rensar" ett antal Unix- och Mac-specifika kataloger/filer.
  • BootCache har startat.
  • Various sysctl variabler ställs in (som för maxim alt antal vnoder, System V IPC, etc.). Om /etc/sysctl.conf finns (plus /etc/sysctl-macosxserver.conf på Mac OS X Server) läses den och sysctl variabler som finns däri ställs in.
  • syslogd startas.
  • Mach-symbolfilen skapas.
  • /etc/rc startar kextd, demonprocessen som laddar kärnförlängning på begäran från kärnan eller klientprocesser.
  • /usr/libexec/register_mach_bootstrap_servers körs för att ladda olika Mach bootstrap-baserade tjänster som finns i / etc/mach_init.d
  • portmap och nätinfo startas.
  • Om /System/Library/Extensions.mkext är äldre än /System/Library/Extensions , /etc/rc tar bort den befintliga mkext och skapar en ny. Det skapar också en om en inte finns.
  • /etc/rc startar /usr/sbin/update , demonen som tömmer interna filsystems cacheminne till disken ofta.
  • /etc/rc startar det virtuella minnessystemet. /private/var/vm är inställd som växlingskatalog. … filer eller ta bort befintliga).
  • /etc/rc startar /usr/libexec/fix_prebindingför att fixa felaktigt förbundna binärer.
  • /etc/rc kör /etc/rc.cleanupför att rensa upp och återställa filer och enheter.
  • /etc/rc lanserar äntligen /sbin/SystemStarter för att hantera startobjekt från platser som /System/Library/StartupItems och /Library/StartupItems En StartupItem är ett program, vanligtvis ett skalskript, vars namn matchar mappnamnet. Mappen innehåller en egenskapslistfil som innehåller nyckel-värdepar som Description, Provides, Kräver, OrderPreference, start/stopp-meddelanden etc. Du kan köra SystemStarter -n -D som root för att få programmet att skriva ut felsöknings- och beroendeinformation (utan att egentligen köra någonting).
  • CoreGraphics startobjektet startar Apple Type Services-demonen (ATSServer ) samt Window Server (WindowServer).

Och sedan är din Mac uppstartad!

Du kan se lite av den här aktiviteten själv med Verbose Mode (som du kan starta upp i Verbose Mode per boot, eller du kan till och med ställa in en Mac så att den alltid startar i Verbose Mode om du alltid vill se stöveln i unix-stil), men det här är en ganska grundlig förklaring.

Apple har också en del dokumentation tillgänglig om Mac-startprocessen tillgänglig här på deras utvecklardokumentationsbibliotek här.

Observera att den ursprungliga webbadressen som ger ovanstående information inte längre är aktiv, så det inlägget har inkluderats ovan för eftervärlden via cache. Den ursprungliga källan var en tråd på KernelThread på följande webbadress: http://www.kernelthread.com/mac/osx/arch_startup.html som för närvarande är offline och inte omdirigerar till en ny plats.

Om du har några godbitar eller andra tillägg att lägga till i Mac OS X-startsekvensen, dela i kommentarerna!

Vad händer i Mac OS X-startprocessen?