16
| 25. Juni 2008 | Marco Hornung ing MacOS X Leopard

ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

| 25. Juni 2008 | Marco Hornung

ing MacOS X Leopard

Page 2: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 3: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 4: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

■ BootROM

■ POST (Power-on Self Test)

■ Initialisiert die Systemhardware

■ Startet EFI(x86), Open Firmware(PPC)

4

Page 5: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · 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

Page 6: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 7: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 8: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

8

■ Loginwindow

■ Authentifizieren der Benutzer und Login “loggen”

■ User-Environment laden

Page 9: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 10: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 11: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 12: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 13: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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

Page 14: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008

Aufbau von Property Lists (.plist)

14

Page 15: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

Der Bootprozess von MacOS X | Marco Hornung | 25. Juni 2008

Live-Demo

15

Page 16: ing MacOS X Leopard - dcl.hpi.uni-potsdam.de · BootROM POST (Power-on Self Test) Initialisiert die Systemhardware Startet EFI(x86), Open Firmware(PPC) 4

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