🧬 Linux Kernel
🏗 Architektur
📦 Kerneltypen
| Typ | Beschreibung | 
|---|---|
| Monolithisch | Alles in einem Kernelimage, inkl. Treiber | 
| Modular | Monolithisch mit ladbaren Modulen (*.ko) zur Laufzeit | 
Linux ist modular und monolithisch – es erlaubt dynamisches Nachladen von Modulen, behält aber die monolithische Struktur.
🧱 Architektur-Übersicht
Anwendungen
 └─ Systembibliotheken (libc)
     └─ System Call Interface (SYSCALL)
         └─ Kernelspace:
             ├─ Prozessverwaltung
             ├─ Speicherverwaltung (MMU)
             ├─ Gerätetreiber
             ├─ Dateisysteme
             └─ Netzwerkschnittstellen
🕳 System Calls
- Ermöglichen Übergang von Userspace in Kernelspace
 - Beispiel: 
read(),write(),open(),ioctl() 
🗃 Kernel-Sourcen
- Bezugsquelle: https://www.kernel.org
 - Verzeichnisstruktur:
 
/usr/src/linux
 ├── arch/      # Architektur-spezifisch (z. B. arm, x86)
 ├── drivers/   # Gerätetreiber
 ├── fs/        # Dateisysteme
 ├── include/   # Headerdateien
 ├── kernel/    # Kernelkern: Scheduler, Signals
 └── net/       # Netzwerkstack
⚙️ Konfiguration & Kompilierung
Konfigurationstools:
make menuconfig(Textoberfläche)make xconfig(GUI)
Konfigurationsdateien:
.config: Ergebnis der Konfiguration- Mit Yocto: 
bitbake -c menuconfig virtual/kernel 
Kernel bauen:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage
Module installieren:
make INSTALL_MOD_PATH=/pfad/ modules_install
📦 Kernelmodule
- Dynamisch ladbare Erweiterungen (*.ko)
 - Einbindung in Kernel zur Laufzeit mit 
insmod,modprobe 
Minimalbeispiel:
#include <linux/module.h>
#include <linux/init.h>
static int __init hello_init(void) {
    pr_info("Hello Kernel\n");
    return 0;
}
static void __exit hello_exit(void) {
    pr_info("Bye Kernel\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
🧪 Kernel starten & Debugging
- 
Erster Prozess:
/sbin/init - 
Runlevel steuern Startverhalten
 - 
Tools:
dmesg– Kernelmeldungenlsmod,modinfo,insmod,rmmod– Modulinformationen
 
Diese Grundlagen bereiten auf die Entwicklung eigener Kernelmodule, Platform-Driver und Device-Tree-Integration vor.