Bootprozess von OS X
Transcrição
Bootprozess von OS X
ing MacOS X Leopard | 25. Juni 2008 | Marco Hornung Übersicht 2 ■ Nutzen ■ MacOS X - Der Bootprozess ■ Launchd - Launch me ■ Daemons & Agents ■ Kreieren eigener Daemons, Agents ■ Live-Demo ■ Quellen Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 Nutzen 3 Was ihr lernen könnt ■ Wie der allgemeine Bootprozess unter MacOS abläuft ■ Wie man eigene Services(Daemons/Agents) implementiert ■ Wie man System-Services deaktiviert Was ihr hier nicht lernen werdet ■ Vergleiche zu Bootprozessen anderer Betriebssysteme ■ Implementierung von rückwärtskompatiblen Daemos (vor 10.4 Tiger) Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 4 ■ BootROM ■ POST (Power-on Self Test) ■ Initialisiert die Systemhardware ■ Startet EFI(x86), Open Firmware(PPC) 5 ■ EFI(x86) - Extensible Firmware Interface ■ Grundlegende Hardware Initialisierung ■ Wählt Betriebssystem aus ■ Open Firmware(PPC) ■ Initialisiert den “Rest” der Hardware ■ Erstellt initialen Gerätebaum ■ Wählt Betriebssystem aus 6 ■ boot.efi(x68) BootX(PPC) - Bootloader ■ Lädt eine “vorverlinkte”(prelinked) Version des Kernels /System/Library/Caches/com.apple.kernelcaches ■ Reduktion der Bootzeit ■ Wenn nicht vorhanden/korrupt ■ durchsucht mkext cache nach ladbaren Treibern ■ Falls ebenfalls nicht vorhanden/korrupt ■ durchsuchen von /System/Library/Extensions nach OS-notwendigen Treibern 7 ■ Kernel ■ Prozessor-Initialisierung ■ Initialisierung des virtuellen Speichers ■ Mach subsystem wird geladen ■ I/O-Kit Initialisierung ■ BSD Datenstruktur wird initialisiert ■ wird nach dem Finden des “root-devices” wieder beendet ■ Verbleibende OS-Initialisierung wird von launchd übernommen ■ Laden von Loginwindow ■ Laden/verwalten aller System-Prozesse 8 ■ Loginwindow ■ Authentifizieren der Benutzer und Login “loggen” ■ User-Environment laden 9 ■ User-Environment laden(loginwindow) ■ ■ ■ ■ Setzen der Benutzerrechte für die Console Setzen der user-group permissions(gid) Dock, Finder, SystemUIServer starten Benutzereinstellungen laden(Hintergrundbild ect.) ■ Benutzereigene launchd-Instanz laden ■ Laden der Benutzereigenen Daemons/Agents, Programme Launchd - Launch me 10 ■ Seit Mac OS 10.4 Tiger der Standard “process-, daemonbooter” ■ Ersetzen ältere Startprotokolle (launchd - einheitlicher Standard) □ Startupitems, init □ cron, at ■ “besitzt” jeden anderen auf dem System laufenden Prozess □ System Prozesse □ Benutzer Prozesse ■ Aufgaben □ Root System Prozess □ Verwaltet Daemons, Agents (startet und beendet) – on-demand, periodic, timed, (events) Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 Daemons & Agents unter Mac OS X 11 Daemon ■ Ist ein Hintergrundprozess der einen Service bereitstellt □ System-Daemons □ User-Daemons (/System/Library/LaunchDaemons) (/Library/LaunchDaemons) ■ Eigenschaften □ Property list, Programm(Service) □ hat keine GUI □ Weiß nicht welcher Nutzer im System ist Agent - Unterschiede zum Daemon ■ Benutzerspezifischer Service, läuft im User-Kontext □ System-Agents □ User-Agents (/System/Library/LaunchAgents) (/Library/LaunchAgents) Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 Kreieren eigener Daemons 12 Muss ■ property list (.plist) haben ■ property list muss root Rechte haben(seit 10.5 Leopard) Sollte ■ SIGTERM Handler bereitstellen ■ Sollte während der launchd “Daemon Initialisierung” starten ■ Vom Daemon genutzte Pfade in der property list bekannt geben ■ Versuchen sich bei längerer “Nichtbeanspruchung” beenden □ (launchd startet ihn selbst wieder bei erneutem Aufruf) ■ Länger als 10 sek. laufen Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 Kreieren eigener Daemons 13 Darf nicht ■ fork, vfork aufrufen ■ andere Daemons starten/beenden (nur kommunizieren) Sollte nicht ■ “herrenlose” Datei Deskriptoren schließen ■ chroot, setdir, chdir aufrufen ■ setuid, setgid, seteuid aufrufen ■ Standard I/O Streams umleiten ■ setrlimit aufrufen ■ setpriority aufrufen Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 Aufbau von Property Lists (.plist) 14 Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 Live-Demo 15 Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008 Quellen 16 Mac OS X Internals: A System Approach ■ Amit Smith - Addison Wesley Professional ■ June 2006 System Startup Programming Topics - Mac OS X ■ Apple Inc. ■ August 2007 ■ Link: http://developer.apple.com/documentation/MacOSX/Conceptual/BPSystemStartup/BPSystemStartup.pdf Mac OS X Leopard: The missing manual ■ David Pogue - O’Reilly ■ December 2007 Switching to the Mac: The missing manual, Leopard Edition ■ David Pogue - O’Reilly ■ February 2008 Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008