25.5 Startphase des Kernels
Wenn der Bootloader den Kernel geladen hat, beginnt dieser damit, die BIOS-Register zu prüfen und die Geräte des Systems über die entsprechenden Treiber zu initialisieren. Außerdem wird unter Linux der interne Swapper kswapd gestartet. Anschließend wird das Root-Dateisystem gemountet. Wir werden uns die Ausgaben, die der Kernel dabei macht, im Folgenden einmal ansehen.
Zunächst wird die Version des Kernels ausgegeben. Wir verwenden im Folgenden den Linux-Kernel 2.4.29 von einem Slackware 10.1-System. Die Ausgaben zwischen 2.4er-Kernel und 2.6er-Kernel unterscheiden sich nur in Details, die wir hier nicht näher betrachten wollen. Daher können die folgenden Listings sehr wohl auch auf einen 2.6er-Kernel bezogen werden.
Nachdem die BIOS-Register geprüft worden sind und der Kernel festgestellt hat, wie viel Hauptspeicher auf dem System zur Verfügung steht (in diesem Fall 511 MB), werden die ihm übergebenen Bootoptionen ausgegeben und wird der Prozessor ermittelt.
In diesem Fall handelt es sich um ein Single-CPU-System mit einem 2-GHz-Prozessor.
Linux version 2.4.29 (root@midas) (gcc version 3.3.4) #6 Thu Jan 20 16:30:37 PST 2005 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 – 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 – 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 – 0000000000100000 (reserved) BIOS-e820: 0000000000100000 – 000000001fff0000 (usable) BIOS-e820: 000000001fff0000 – 000000001fff8000 (ACPI data) BIOS-e820: 000000001fff8000 – 0000000020000000 (ACPI NVS) BIOS-e820: 00000000fec00000 – 00000000fec01000 (reserved) BIOS-e820: 00000000fee00000 – 00000000fee01000 (reserved) BIOS-e820: 00000000ffee0000 – 00000000fff00000 (reserved) BIOS-e820: 00000000fffc0000 – 0000000100000000 (reserved) 511MB LOWMEM available. On node 0 totalpages: 131056 zone(0): 4096 pages. zone(1): 126960 pages. zone(2): 0 pages. Kernel command line: BOOT_IMAGE=Linux ro root=302 Initializing CPU#0 Detected 1999.969 MHz processor.
Listing 25.8 Beginn des Kernel-Startups
Die Konsole wird auf 80 mal 25 Zeichen initialisiert. Es folgen Details zum Speicher und zur CPU.
Console: colour dummy device 80x25 Calibrating delay loop... 3984.58 BogoMIPS Memory: 515348k/524224k available (1831k kernel code, 8488k reserved, 607k data, 120k init, 0k highmem) Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) Inode cache hash table entries: 32768 (order: 6, 262144 bytes) Mount cache hash table entries: 512 (order: 0, 4096 bytes) Buffer cache hash table entries: 32768 (order: 5, 131072 bytes) Page-cache hash table entries: 131072 (order: 7, 524288 bytes) CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) CPU: L2 Cache: 256K (64 bytes/line) CPU: After generic, caps: 0383fbff c1c3fbff 00000000 00000000 CPU: Common caps: 0383fbff c1c3fbff 00000000 00000000 CPU: AMD Athlon(tm) XP 2400+ stepping 00 Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Checking 'hlt' instruction... OK.
Listing 25.9 Konsolenkonfiguration, Speicher- und CPU-Details
Nachdem das PCI-System erkannt und das Netzwerk-System initialisiert wurde, wird das kernelinterne Swap-System kswapd gestartet. Daran schließt sich die Initialisierung des virtuellen Dateisystems (Quotas) und der Framebuffer-Konsole an.
PCI: PCI BIOS revision 2.10 entry at 0xfdb31, last bus=2 PCI: Using configuration type 1 PCI: Probing PCI hardware PCI: Probing PCI hardware (bus 00) PCI: Using IRQ router SIS96x [1039/0008] at 00:02.0 Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd VFS: Disk quotas vdquot_6.5.1 Journalled Block Device driver loaded vesafb: framebuffer at 0xc8000000, mapped to 0xe080d000, size 1536k vesafb: mode is 1024x768x8, linelength=1024, pages=3 vesafb: protected mode interface info at c000:e210 vesafb: scrolling: redraw Console: switching to colour frame buffer device 128x48 fb0: VESA VGA frame buffer device
Listing 25.10 PCI-Subsystem, VFS & Co.
Anschließend konfiguriert der Kernel die pty-Schnittstellen – dabei handelt es sich um Charakter-Devices – sowie den seriellen Treiber und initialisiert die serielle Schnittstelle ttyS00 an der Adresse 0x03f8. Es folgt die Konfiguration weiterer Treiber für das Disketten-Laufwerk (Floppy drive(s)), die Echtzeituhr, die IDE-Schnittstelle (in diesem Fall ein 33-MHz-System) und die IDE-Laufwerke: In diesem Fall handelt es sich um eine ExcelStor ATA-Festplatte, einen AOPEN CD-Brenner und ein AOPEN DVD-Laufwerk.
pty: 512 Unix98 ptys configured Serial driver version 5.05c (2001-07-08) with HUB-6 MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI enabled ttyS00 at 0x03f8 (irq = 4) is a 16550A Real Time Clock Driver v1.10f Floppy drive(s): fd0 is 1.44M FDC 0 is a post-1991 82077 RAMDISK driver initialized: 16 RAM disks of 7777K size 1024 blocksize loop: loaded (max 8 devices) Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx SIS5513: IDE controller at PCI slot 00:02.5 SIS5513: chipset revision 0 SIS5513: not 100% native mode: will probe irqs later SIS5513: SiS 962/963 MuTIOL IDE UDMA133 controller ide0: BM-DMA at 0xff00-0xff07, BIOS settings: hda:DMA, hdb:DMA ide1: BM-DMA at 0xff08-0xff0f, BIOS settings: hdc:DMA, hdd:DMA hda: ExcelStor Technology J680, ATA DISK drive hdb: AOPEN CD-RW CRW5232 1.02 20030718, ATAPI CD/DVD- ROM drive blk: queue c03ad460, I/O limit 4095Mb (mask 0xffffffff) hdc: AOPEN DVD1648/AAP, ATAPI CD/DVD-ROM drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ide1 at 0x170-0x177,0x376 on irq 15 hda: attached ide-disk driver. hda: host protected area => 1 hda: 160836480 sectors (82348 MB) w/1794KiB Cache, CHS=10011/255/63, UDMA(100) hdb: attached ide-cdrom driver. hdb: ATAPI 40X CD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33) Uniform CD-ROM driver Revision: 3.12 hdc: attached ide-cdrom driver. hdc: ATAPI 48X DVD-ROM drive, 256kB Cache, UDMA(33) Partition check: hda: hda1 hda2 hda3 < hda5 > hda4 SCSI subsystem driver Revision: 1.00
Listing 25.11 pty, IDE & Co.
Es folgt die Initialisierung des Logical Volume Managers (LVM) und der kryptographischen API. <Application Programming Interface> Anschließend wird der Support für die TCP/IP-Kommunikation geladen:
IP, ICMP, UDP, TCP und IGMP werden unterstützt. Außerdem werden Routing und Multicast-Routing unterstützt. Hinzu kommt der Support für Unix-Domain-Sockets.
LVM version 1.0.8(17/11/2003) Initializing Cryptographic API NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 4096 buckets,32Kbytes TCP: Hash tables configured (established 32768 bind 65536) Linux IP multicast router 0.06 plus PIM-SM NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
Listing 25.12 LVM, Crypto-API und TCP/IP
Nachdem das Journaling konfiguriert und das Rootdateisystem, ein Dateisystem (ext3), im Read-only-Modus gemountet wurde, wird der ungenutzte Kernel-Speicher wieder freigegeben und die Swap-Partition eingebunden.
kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. VFS: Mounted root (ext3 filesystem) readonly. Freeing unused kernel memory: 120k freed Adding Swap: 224868k swap-space (priority –1) EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,2), internal journal
Listing 25.13 Journaling, Root-Dateisystem, Swap
Nun werden noch die letzten Treiber geladen. Darunter fällt die Unterstützung für die AGP-Schnittstelle und die Nutzung der darauf gefundenen Karte. Es werden Informationen über den verwendeten Chipsatz (SiS 746) und den Speicher der Karte (64 MB) sowie die Treiberversion ausgegeben. Zudem wird eine Realtek PCI-Netzwerkkarte erkannt und der NTFS-Treiber geladen. <Diese Meldung (sowie einige andere) erhalten Sie nur, wenn der Kernel entsprechend dafür übersetzt wurde bzw. wenn ein Treibermodul geladen wird.>
Linux agpgart interface v0.99 (c) Jeff Hartmann agpgart: Maximum main memory to use for agp memory: 439M agpgart: Detected SiS 746 chipset agpgart: AGP aperture is 64M @ 0xd0000000 sis900.c: v1.08.07 11/02/2003 PCI: Found IRQ 11 for device 00:04.0 eth0: Realtek RTL8201 PHY transceiver found at address 1. eth0: Using transceiver found at address 1 as default eth0: SiS 900 PCI Fast Ethernet at 0xd400, IRQ 11, 00:0b:6a:1b:8d:d0. scsi0 : SCSI host adapter emulation for IDE ATAPI devices NTFS driver v1.1.22 [Flags: R/O MODULE]
Listing 25.14 Letzte Treiber laden