Booten eines Linux-PCs

Ähnliche Dokumente
Erstellen eines Boot-Mediums

Linux booten. Jörg Ahrens

Linux Tutorium. Linux Tutorium Systemkonfiguration. Linux Tutorium Systemkonfiguration Seite: 1

Initramfs - The initial RAM filesystem

Der Bootprozess unter Linux

Knoppix-Remastering Workshop

Fehlerbehebung Linux-Kurs der Unix-AG

Knoppix-Remastering Knoppix-Remastering. Christian Perle, secunet Security Networks AG, NL Dresden 1

Das U-Boot Der Bootvorgang von Linux

BOOTSTRAPPING. Konzepte von Betriebssystem-Komponenten

Dienste und Runlevel. September 2010 Oliver Werner Linux Systemmanagement 1

1.3 Der Bootmanager GRUB 2

Linux Grundlagen. Wolfgang Scheicher. 20. Mai 2006

BOOTSTRAPPING. Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Universität Erlangen-Nürnberg

Debian GNU/Linux Grundlagen, Installation, Administration und Anwendung

Konzepte von Betriebssystemkomponenten

Patricia Jung. Linux anhand des Bootprozesses verstehen lernen. Modul IF LIN 06 der Linux-Akademie im Rahmen der Informatica Feminale 2008 in Bremen

UEFI. Unified Extensible Firmware Interface UEFI. OSP 2015 UEFI Rene Brothuhn Seite: 1

Linux im Netzwerk - Grundlagen und Netzwerkdateisysteme -

Linux Grundlagen. Wolfgang Scheicher 20. Mai Allgemeines Bootvorgang Verzeichnisstruktur... 2

Dateisysteme Linux-Kurs der Unix-AG

Dateisystem: Einführung

Dateisystem: Einführung

Dateisystem 1, Suchpfad, Befehlstypen

Installationshinweise Linux Edubuntu 7.10 bei Verwendung des PC-Wächter

4 Starten und Anhalten des Systems

Vorlesung - Linux Boot

Installieren von Betriebssystemen

Installationshinweise Linux Kubuntu 9.04 bei Verwendung des PC-Wächter

HOWTO: Multi Boot USB Stick erstellen

BACKUP Datensicherung unter Linux

vadmin Installationshandbuch für Hostsysteme v1.40 Copyright by vadmin.de Seite 1

Hardware & Kernel-Module

Erstellung und Installation einer Windows Unattended CD

Ursachen und Lösungen Ursache (1): Defektes/beschädigtes Dateisystem

Dateisystem 1, Suchpfad, Befehlstypen

Die Shell - Das Vorspiel

Dateisystem 1, Suchpfad, Befehlstypen

Grub 2. A GRUB logo by Karol Krenski

Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1

Dateisystem: Einführung

Dateisystem: Einführung

Debian GNU/Linux. Unix Grundlagen und Betrieb. Christian T. Steigies

1 Bitte beachten Kurzanleitung imgPTN-Dateien Portable machen Links & Quellen... 11

Eisfair-Installation auf einem Root-Server

Erste Erfahrungen mit systemd

GNU/Linux Introduction Linux Introduction: Part 1. Simon M. Haller, Sebastian Stabinger iis.uibk.ac.at

Die ganze Arbeit wird vom /sbin/rc Script erledigt, mit diesem können Sie auch im laufenden Betrieb zwischen den virtuellen Runleveln wechseln.

Der Bootloader von Windows 2000 / XP

Einrichten des Raspberry Pi

Multiboot USB Stick. Alle wichtigen ISOs immer auf einem Stick dabei. Emanuel Duss Emanuel Duss Multiboot USB Stick / 14

Diskless GNU/Linux Workshop der LUGBZ Author: Karl Lunger

PHYTEC USB-CAM Serie unter Linux

UNIX/Linux Lösung. Mär 14, 17 20:40 Seite 1/6. Prozeßsynchronisation (was ist das?, wo kommt es vor?, Beispiel?):

vadmin Installationshandbuch für Hostsysteme v Bit Copyright by vadmin.de Seite 1

Hardware & Kernel-Module

LINUX 4U Das professionelle

M. Befehle in Installationsdateien

Was muß ich tun, damit Embedded-Linux in einer Sekunde bootet?!

Installation von open SUSE Leap 15.0

Booten mit EFI. Prof. Dipl.-Ing. Klaus Knopper

Computer & GNU/Linux Einführung Teil 1

VDR Video Disk Recorder

Kali Linux. Hax0r. Kali USB (Persistenz + NTFS) Windows Benutzer freischalten

pwd mkdir Zeigt das aktuelle Verzeichnis an Beispiel: pwd

Bootstrap, Bootup & Multiboot

Allgemeines Bootvorgang Umsetzung Sonstiges. Thin Clients. Michael Hartmann Augsburger Linux Infotag

Zugriffsrechte. anzeigen lassen mit dem Befehl: ls -l

Linux Basiswissen. Wolfgang Karall April 2001

Leitfaden zum Sichern einer Festplatte als Image mit der System Rescue CD

Linux und Windows parallel auf dem PC

Linux Mint auf einem USB Stick

Transkript:

Booten eines Linux-PCs Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009 Booten eines Linux-PCs 1/27 2009-04-30

Inhalt BIOS Bootloader Kernel initrd und initramfs init Booten eines Linux-PCs 2/27 2009-04-30

BIOS Aufgaben Zu DOS-Zeiten: BIOS bietet Interface zur HW-Ansteuerung, hat mit der Entwicklung der Prozessoren und Geräte nicht schrittgehalten, Hauptaufgabe heute: Infrastruktur und Mechanismen zum Nachladen eines Betriebssystems von einem Medium. Booten eines Linux-PCs 3/27 2009-04-30

BIOS (2) Booten über BIOS BIOS initialisiert Hardware, BIOS sucht nach Boot-Sektor, z.b. auf Diskette (A:), Festplatte (C:), CD/DVD-ROM, (Reihenfolge evtl. einstellbar), Kennung: 0x55, 0xaa in den letzten beiden Bytes, Boot-Sektor wird nach 0x0000:0x7c00 (bzw. 0x07c0:0x0000) geladen, Boot-Sektor wird angesprungen. Booten eines Linux-PCs 4/27 2009-04-30

BIOS (3) Alternativen OpenFirmware Standard (IEEE-1275); vor allem auf diversen UNIX-Workstation-Plattformen, coreboot (vormals LinuxBIOS), minimalistischer Initialisierungscode, lädt eine Payload nach, z.b. FILO, OpenFirmware, GRUB2, Linux (meist zu groß), (U)EFI (Unified) Extensible Firmware Interface, vor allem auf 64-Bit-Nachfolgern von x86 (IA64 und AMD64). Booten eines Linux-PCs 5/27 2009-04-30

Bootloader Aufgaben Muss mittels... BIOS-Interrupts, (Aufrufen von Firmware-Funktionen,...) direktem HW-Zugriff den Kernel laden und starten. Früher meist: lilo (LInux LOader), heute: GRUB (GRand Unified Bootloader). Booten eines Linux-PCs 6/27 2009-04-30

Bootloader lilo Eigenschaften Steht im Boot-Sektor und im freien Platz dahinter, größter Nachteil: kennt kein Dateisystem, Blocklisten bezeichnen die Positionen von Kernel (und initrd), bei Änderungen am Kernel muss lilo erneut installiert werden. Booten eines Linux-PCs 7/27 2009-04-30

Bootloader GRUB stage1 Steht im Boot-Sektor, 446 Byte Maschinencode, einzige Aufgabe: lädt stage1_5 nach und führt sie aus. Booten eines Linux-PCs 8/27 2009-04-30

Bootloader GRUB (2) stage1_5 Steht zwischen Boot-Sektor und Beginn der ersten Partition, enthält typischerweise einfachen Treiber eines Dateisystems, weiß bereits von Dateinamen und Pfaden, muss nicht bei jeder Änderung an stage2, Kernel, etc. aktualisiert werden, lädt /boot/grub/stage2 vom Root-Dateisystem und führt sie aus. Booten eines Linux-PCs 9/27 2009-04-30

Bootloader GRUB (3) stage2 enthält ggf. weitere Treiber, bietet rudimentäre Shell-Funktionalität, liest ggf. Menüinformationen aus /boot/grub/menu.lst, durch Menü-Skript oder Benutzerinteraktion wird dann der Linux-Systemkern geladen, ggf. die RAM-Disk geladen, Kernelparameter gesetzt, der Systemkern gestartet. Booten eines Linux-PCs 10/27 2009-04-30

Bootloader GRUB (4) Beispiel: menu.lst # Erster Eintrag ist Standard default 0 # bootet nach 30 Sekunden timeout 30 # Booteintrag fuer Linux title Linux root (hd0,1) kernel /boot/vmlinuz-2.6.26 root=/dev/sda2 ro initrd /boot/initrd-2.6.26.gz # noch ein Eintrag... title Windoof root (hd0,0) makeactive chainloader +1 Booten eines Linux-PCs 11/27 2009-04-30

Bootloader GRUB (5) Partitionsnamen (fdn) Diskettenlaufwerk N, Zählung beginnt bei 0, (hdn,m) Festplatte N, Partition (oder Slice) M, jeweils ab 0 gezählt, Erweiterte Partitionen beginnen immer bei 4, (hdn,m,p) Festplatte N, Slice M, Partition P, N und M wie bisher, P ist ein Zeichen beginnend bei a. Beispiele: (fd0) Laufwerk A:, (hd0,1) zweite Partition der ersten Festplatte, (hd1,0,a) Partition a des ersten Slice der zweiten Festplatte. Booten eines Linux-PCs 12/27 2009-04-30

Kernel Kernel ohne initales RAM-Laufwerk 1 mountet normale Root-Partition, 2 versucht, initialen Prozess zu starten aus: 1 dem init=-parameter, 2 /sbin/init, 3 /etc/init, 4 /bin/init, 5 /bin/sh. Booten eines Linux-PCs 13/27 2009-04-30

initrd und initramfs Aufgaben (Vor allem früher:) Platz sparen wegen begrenzter Kernelgröße auf Boot-Medien und im (Real-Mode-)Speicher: modularer Kernel, nur das Allernötigste fest einkompiliert, RAM-Disk enthält alles weitere, um root-dateisystem zu mounten und init(8) zu starten. Heute: Trennen konfligierender Treiber, ggf. Nachladen von Firmware. Bei kleinen (eingebetteten oder Rettungs-) Systemen: RAM-Disk enthält gesamtes System. Booten eines Linux-PCs 14/27 2009-04-30

initrd und initramfs (2) initrd Abbild eines Dateisystems (z.b. ext2), enthält für den Startvorgang nötig Dateien, Kernel muss mindestens einen Dateisystemtreiber enthalten, gilt als veraltet. Booten mit initrd 1 Systemkern mountet RAM-Disk als Rootverzeichnis, 2 wenn vorhanden wird /linuxrc ausgeführt, das i.w. Module lädt und Geräte initialisiert, 3 weitere Aufgaben erledigt dann wieder der Kernel: Root-Partition mounten, ggf. RAM-Disk unmounten, init von der Root-Partition starten (Suchreihenfolge wie oben). Booten eines Linux-PCs 15/27 2009-04-30

initrd und initramfs (3) initramfs Komprimiertes (gzip(1)) Archiv (cpio), enthält für den Startvorgang nötig Dateien, Kernel braucht keinen Dateisystemtreiber zu enthalten. Booten mit initramfs 1 Systemkern entpackt Inhalt der initramfs in die RAM-Disk, 2 mountet RAM-Disk als Rootverzeichnis, 3 wenn vorhanden, wird /init ausgeführt, das alles weitere macht: Module laden, Root-Partition mounten, ggf. RAM-Disk entfernen, System-init suchen und ausführen. Booten eines Linux-PCs 16/27 2009-04-30

initrd und initramfs (4) Beispiel: Inhalt einer initrd /linuxrc /bin/sh, /bin/mount, /bin/umount, /bin/cp, /bin/tar,... /dev/null, /dev/zero, /dev/console, /dev/tty[0-7] /dev/hd*, /dev/sd* /dev/scd* /etc/ld.so.conf, /etc/ld.so.cache /etc/mtab /lib/ld-linux.*, /lib/libc.so.* /lib/modules/* /mnt /proc Booten eines Linux-PCs 17/27 2009-04-30

Boot-Medium Beispiel: Inhalt eines Boot-Mediums /boot/initrd.img.gz, /boot/vmlinuz,... /boot/grub/stage2, /boot/grub/menu.lst,... /dev/fd0, /dev/null, /dev/ram,... Booten eines Linux-PCs 18/27 2009-04-30

init Eigenschaften Der Init-Prozess ist der erste (und einzige) normale Prozess nach dem Systemstart. Er startet ggf. ein linuxrc auf der initrd, liest /etc/inittab. Gemäß /etc/inittab initialisiert er das System, startet Daemons, startet getty/login- sowie ggf. [gkx]dm-prozesse. Booten eines Linux-PCs 19/27 2009-04-30

init (2) Runlevel Zustand des Systems, in dem nur eine bestimmte Gruppe von Prozessen existieren darf, Runlevels sind unterschiedlich definiert; z.b.: S Systemstart, 0 Halt, 1 Single-User, 2 Single-User mit Netzwerk, 3 Multi-User, 5 Multi-User mit X11, 6 Reboot, reservierte Runlevels (fest Bedeutung): S, 0, 1, 6, Wechsel des Runlevels mit init(8), telinit(8), shutdown(8), halt(8), reboot(8), Abfrage des Runlevels mit runlevel(8). Booten eines Linux-PCs 20/27 2009-04-30

init (3) /etc/inittab Enthält Zeilen der Form: id:runlevels:action:process id Identifier (bis zu max. 4 Zeichen); für getty- Programme die Nummer des TTYs (z.b. 2 für Terminal /dev/tty2), runlevels Liste der Runlevel, in denen die entsprechende Aktion ausgeführt werden soll,...... Booten eines Linux-PCs 21/27 2009-04-30

init (4) /etc/inittab (fortges.) action...... respawn Prozess wird immer wieder neu gestartet, wait Prozess wird einmal gestartet; init wartet auf Terminierung, once Prozess wird einmal gestartet; init wartet nicht auf Terminierung, boot Prozess wird beim Booten ausgeführt (runlevel werden ignoriert), bootwait Prozess wird beim Booten ausgeführt; init wartet, off Eintrag deaktiviert, initdefault Definition des Standard-Runlevels, sysinit Prozess wird vor boot bzw. bootwait beim Booten ausgeführt, Booten eines Linux-PCs 22/27 2009-04-30

init (5) /etc/inittab (fortges.) process auszuführendes Programm (gegebenenfalls mit Parametern). Booten eines Linux-PCs 23/27 2009-04-30

Einschub: getty, login und sh Typischer Eintrag der inittab: 1:2345:respawn:/sbin/getty 38400 tty1 init startet getty in den Runlevels 2 bis 5, getty öffnet /dev/tty1 und zeigt darauf ein Login-Prompt an, nach Eingabe eines Benutzernamens wird login(1) ausgeführt (per execve(2)), login führt Authentifikation durch und forkt Shell mit den Rechten des Benutzers, beendet sich die Shell, beendet sich auch der Login-Prozess ursprünglich als getty gestarteter Prozess wird beendet init startet getty erneut. Booten eines Linux-PCs 24/27 2009-04-30

init (6) /etc/init.d Je nach Runlevel sollen Daemons, Netzwerk, X11 usw. gestartet bzw. gestoppt werden, zum Starten und Stoppen existieren in /etc/init.d Shell-Skripte. Beispiele: /etc/init.d/autofs start /etc/init.d/httpd stop # Startet automounter # Stoppt www-daemon Booten eines Linux-PCs 25/27 2009-04-30

init (7) /etc/init.d/rc init ruft bei jedem Runlevel-Wechsel ein Skript (z.b. /etc/init.d/rc) auf. Typische inittab-einträge: l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 Booten eines Linux-PCs 26/27 2009-04-30

init (8) /etc/rc?.d /etc/init.d/rc ruft je nach gewünschtem Runlevel die Start-Stop-Skripte auf. Dazu müssen in /etc/rc?.d nach folgendem Muster symbolische Links auf die Skripte angelegt sein: Start in Runlevel X Symlink in Verzeichnis /etc/rcx.d der Form SNMname; S bedeutet starten, NM ist eine zweistellige Zahl, die die Startreihenfolge festlegt, name ist nach Konvention der Name des Skripts, Stop in Runlevel X analog Symlinks der Form KNMname, K bedeutet kill. Booten eines Linux-PCs 27/27 2009-04-30