Kapitel 10 von 15nullos.de

Treiber

Welche Hardware nullos heute anspricht – und was dazukommt.

Heute (x86_64)

WasWie
BildschirmUEFI-GOP-Framebuffer: nb fragt ihn ab, der Kernel malt Text mit der eigenen Linienschrift hinein (in jeder Größe scharf). Zeigt UTF-8: ASCII, ÄÖÜäöüß, § ° ² ³ µ €. Versteht die wichtigsten ANSI-Steuerfolgen.
TastaturPS/2 per Unterbrechung (IRQ 1). Deutsche Belegung mit Umlauten, AltGr und Feststelltaste, liefert UTF-8. Umschalten: kb load us.
Serielle Schnittstelle16550 auf COM1, 115200 Baud, per Unterbrechung (IRQ 4). Läuft parallel zum Bildschirm – so redet QEMU mit dem Terminal und der Boot-Test mit nullos.
UnterbrechungenLocal APIC + IOAPIC, gefunden über ACPI (MADT). Der alte PIC ist aus.
ZeitAPIC-Zeitgeber mit 100 Hz, geeicht am HPET (sonst PIT); feine Zeit aus dem TSC; Uhrzeit aus der CMOS-Uhr.
PlatteSATA über AHCI – nur lesen, die Startplatte. Partitionen: GPT, MBR oder keine.
DateisystemFAT16 und FAT32 mit langen Namen, nur lesen, unter /boot. Dazu das RAM-Dateisystem /.
Netzwerkkartenvirtio-net und Intel e1000 (82540EM, 82545EM, 82574L). net am Kernel-Prompt zeigt Adressen und Zähler.
TCP/IPEigener Stapel, IPv6 und IPv4 gleichwertig: Nachbarsuche, SLAAC, DNS aus der Router-Anzeige, DHCPv6, ARP, DHCPv4, Ping-Antworten, UDP, TCP. Dazu Unix-Sockets.
Geräte-Dateien/dev/console, tty, null, zero, random
Neustart / AusNeustart über den Tastatur-Controller; „aus“ beendet QEMU, auf echter Hardware hält die CPU nur an.

Getestet in QEMU (Maschine q35): TCP mit 1 MB hin und zurück über IPv4 und IPv6, und zwei nullos reden miteinander über eine Leitung. DHCPv6 ist noch ungeprüft (QEMU hat keinen Server dafür). Echte PCs: noch nicht. kommt noch

Starten geht auch von NVMe-SSD und USB-Stick – das Laden übernimmt dabei die UEFI-Firmware. Hat nullos einmal übernommen, kann es bisher nur SATA-Platten lesen. Von NVMe oder USB gibt es dann kein /boot.

Geplant

Alles kommt noch – die Reihenfolge steht im Sessions-Plan: