Root Filesystem Flashcards
Welche Möglichkeiten gibt es ein RootFS bereitzustellen?
- Im Flash z.B. USB (endliche Schreibzyklen)
- ReadOnly(CdRom) mit tmpfs und Overlay
- Im RAM
- Image laden und mounten
Vorteile RootFS im RAM?
- Konsistentes Filesystem bei jedem Neustart
- Booten ohne Filesystemcheck
- Einfache Systemaktualisierung
- Eventuell Auswahl des Rootfilesystems (Debug/Test)
- Schneller Zugriff
- Auf RAM sind unbegrenzte Schreibzyklen möglich
Nachteile RootFS im RAM?
- Neustart -> Modifikationen am Root-Filesystem gehen
verloren, wenn diese nicht im Image durchgeführt
werden - Für die Ramdisk wird Hauptspeicher (RAM) benötigt (2–
8 Mbyte) - Logfile können zu groß werden
- Teils Statische Größe
- Ramdisk verbraucht Hauptspeicher.
- Die Daten sind doppelt
vorhanden: Flash / RAM
Was muss im Kernel aktiviert werden um RAMdisk zu einzusetzen?
Unter ‘Block Devices’ den Punkt ‘Ram Disk Support’ auswählen
Was passiert wenn im Kernel initrd Support aktiviert ist?
- Mit ’initrd’ Support packt der Kernel das komprimierte -
Root-FS Image aus und kopiert den Inhalt in eine RAM
Disk. - Der Kernel mounted die RAM Disk als Root
Danach:
- startet das Skript ’linuxrc’ auf dem Root Filesystem
Ablauf des Bootens mit RAMdisk?
Booten:
- Root-Image z.B. vom Flash geladen und im
Hauptspeicher abgelegt.
- Betriebssystemkern wird geladen und
gestartet.
- Root-Image auf Flash bleibt unangetastet
Vorteile RAMdisk?
Zugriff auf die Ramdisk ist schneller als Flash.
Limitiertes Schreiben bei Flash
Größe der Ramdisk frei wählbar.
Daten in Ramdisk ‘temporär’
Das Verfahren vereinfacht die Systemaktualisierung.
Nachteile RAMdisk?
Verbraucht RAM
Daten doppelt vorhanden Flash/RAM
Nicht persistent
Wie funktioniert der Boot über Netzwerk?
BIOS ruft Bootp auf
Bootp Request bekommt anhand MAC Konfig(IP Netzmaske etc.)
tftp macht Anfrage und holt Kernel und Root Image
Was ist ein VFS?
eine Mappersoftware, die spezifische
Dateisystemeigenscha!en auf das intern verwendete ’virtual filesystem’ umsetzt.
Beschreibe das initramfs.
- Das initramfs ist ein RootFS das für den Systemstart
benötigte Dateien enthält. - Das initramfs-Archiv kann im Kernel selbst enthalten
sein oder vom Bootloader aus einer Datei in den
Arbeitsspeicher geladen werden.
Der Kernel dekomprimiert das initramfs-Archiv und
hängt das entpackte Archiv dann als Stammverzeichnis
ein. - Dateien werden direkt in die kernelinternen -
- Datenstrukturen des VFS umgesetzt
- Wird mit tmpfs umgesetzt
- initramfs ist keine ramdisk(tmpfs)
Unterschied initramfs und initrd
initramfs Kernel 2.6
initial root filesystem and init programm in kernel memory cache not on ramdisk
initramfs -> cpio archive -> tmpfs
initramfs location of init : /init
initrd Kernel 2.4 deprecated file system driver compiled into kernel RAM Based Block device, wastes unused space, req file system fixed size
Wie ist der Bootprozess mit CPIO Archiv?
Bootloader: - Laden vmlinuz - Laden initramfs - Start Kernel Linux Kernel: - Initialisierung - Auspacken CPIO als RootFS - Start /init Early Userland: - Basisinit(treiber) - pivot_root - exec(/bin/init) Normaler Bootprozess...
Was macht pivot_root() initrd / switch_root() initramfs ?
- Allows to re-mount the root filesystem to a non-root
location, while simultaneously mounting something
back on the root. - early userland zu userland
Was wird über CONFIG_INITRAMFS_SOURCE festgelegt?
- Ob das Standard-Minimal-Rootfilesystem CPIO-
Archiv erzeugt - oder woher sonst die Daten für das CPIO-Archiv
genommen werden.
Was passiert wenn CONFIG_INITRAMFS_SOURCE mit einem Wert belegt ist?
generiert das Kernel-Build-System nicht das Linux Standard-Minimal-Rootfilesystem
sondern generiert ein spezifisches Archiv.
Wie sieht das minimale RootFS aus?
Static (z.B im FLASH): /usr Anwendungsprogramme /lib Libraries essential for the binaries in bin and sbin /bin Essential command binaries /dev Device files /etc Host-specific system-wide configuration files Dynamic (z.B. im RAM): /var Variable files(logs, spooler..) /tmp Temporary files
Welche 3 Gerätedateien gibt es immer unter dev/
/dev/console
/dev/null
/dev/zero
Mit welchem Befehl werden automatisch Gerätedateien erzeugt?
- udevd: Verzeichnis /dev wird automatisch durch den
udevd befüllt (beim Laden der Treiber) - Alternativ von Hand
Welches Programm startet ein Embedded Linux System?
Wo ist es zu finden?
nach /init bei initramfs Konfiguration,
nach /linuxrc bei initrd Konfiguration,
nach /sbin/init bei Standard Block-Geräten
Was genau macht das Programm init?
init startet Programme in geeigneter Reihenfolge die für den Betrieb benötigt sind. Ruft Skripte in etc/init.d/ auf Config in etc/inittab - Reihenfolge Rechenprozese - Rechenprozess Störung Strom - Reagieren auf Ereignisse(Tastatur)
Was ist ein Runlevel und welche Stufen gibt es?
Runlevel 1 ist der so genannte Single-User-Mode.
Runlevel 2 ist der normale Multi-User-Mode
Bestimmt welche Funktionen System Services gestartet werden(CMD, GUI etc.. )
Welche Prozessmodi kann init für Prozesse verwenden?
respawn: Terminiert der Prozess -> restart
wait: Prozess wird gestartet, init wartet auf das Prozessende
boot: Prozess wird während des Bootvorgangs gestartet (nicht in einem spezifischen Runlevel)
Welche Möglichkeiten für Remote Zugriff können impl werden?
FTP oder SSH
Neue Konfigurationsdateien und Systemversionen
(Images) zu laden
Wie werden Anwendungen auf emb Systemen aufgeteilt?
Serverteil
Muß auf dem Gerät laufen, ist für die Eingabe und die Ausgabe verantwortlich
Clientteil
Nicht gerätekritische Applikationsteile können
auch auf einen Clientrechner verlagert werden.
Einer Visualisierung
Besonderer nicht gerätekritischer
Applikationsanteil kann die Visualisierung verlagert
werden.
Welche Bibliotheken für Emb Systeme gibt es?
glibc, uclibc, dietlibc, klibc
Eigenschaften glibc?
- Viele Funktionen
- Portabel
- designed für Performance und
- Unterstützung versch. (umfangreicher) Standards
- Hoher Ressourcenbedarf
- NICHT auf Codegröße optimiert: Für Embedded -
Systeme sehr groß
Eigenschaften uclibc?
- Auch für MMU-lose Linux-Systeme geeignet (uclinux)
- Optimiert auf Codegröße, ca. 4 Mal kleiner als Standard
glibc - unterstützt viele verschiedene Hardwareplatformen
- unterstützt die meisten glibc Funktionen,
aber nicht alle Standards wie unter glibc Fokus liegt auf:
C89, C99 - Lizenz: LGPL
Was ist bei der Wahl einer Embedded-Bibliothek zu beachten?
- Codegröße
- Performance
- Unterstützte Standards
- Hardwaresupport
- Lizenzmodell
- Thread Safe
Eigenschaften klibc?
- für 32- und 64-Bit Systeme
- Einsatz beim „early userland“ (initramfs)
- Lauffähig auf vielen unterschiedlichen Plattformen
- für einfache initramfs Binaries
- klcc Compiler
- geeignet für einfache Shell Skripte
- Shell muss mit klibc erzeugt sein
- Nicht thread-safe
Welche Funktionalität sollte für Embedded Systeme bereitgestellt werden?
- Basisprogramme und Shell-Kommandos
- Remote-Login (Fernwartung)
- Editor
- Webserver
- syslog
- Firmware-Update
- Dateiübertragung
Wie funktionieren Multibinarys wie Busybox?
- Das Betriebssystem übergibt den Programmnamen als
Argument ’0’. - Über Hard- oder Symlinks kann nun ein Programm
mehrere Namen erhalten - Binaryverhalten nach Name
- Statisch gelinked mit ulibc
Wie erzeuge ich Logs mit Busybox?
logread
Zeigt die Meldungen von syslogd an
Mit logread -f kann der Output gesichert werden.
Was ist tinylogin?
The worlds smallest login/passwd/ge!y/etc
Bietet sich an, wenn busybox nicht verwendet wird, da auch
busybox diese Dienste anbietet
Wie können Sie mit SSH auf das Embedded Gerät zugreifen?
Tool Dropbear verwenden