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

Documentos relacionados