| 25. Juni 2008 | Marco Hornung
ing MacOS X Leopard
Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008
Übersicht
■ Nutzen
■ MacOS X - Der Bootprozess
■ Launchd - Launch me
■ Daemons & Agents
■ Kreieren eigener Daemons, Agents
■ Live-Demo
■ Quellen
2
Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008
Nutzen
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)
3
■ BootROM
■ POST (Power-on Self Test)
■ Initialisiert die Systemhardware
■ Startet EFI(x86), Open Firmware(PPC)
4
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/Extensionsnach 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
Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008
Launchd - Launch me
■ 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)
10
Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008
Daemons & Agents unter Mac OS X
Daemon
■ Ist ein Hintergrundprozess der einen Service bereitstellt
□ System-Daemons (/System/Library/LaunchDaemons)
□ User-Daemons (/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 (/System/Library/LaunchAgents)
□ User-Agents (/Library/LaunchAgents)
11
Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008
Kreieren eigener Daemons
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
12
Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008
Kreieren eigener Daemons
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
13
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
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
16