Root Filesystem Flashcards
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?
- Modifikationen am Root-Filesystem gehen mit einem Neustart verloren, wenn diese nicht im Image durchgeführt werden.
- Für die Ramdisk wird Hauptspeicher (RAM) benötigt (2–8 Mbyte)
Definition RamDisk:
Als RAM-Disk wird ein virtuelles Laufwerk bezeichnet, welches aus einem Teil des im System befindlichen Arbeitsspeichers (RAM) besteht.
Laden des RootFS mit Ramdisk
Das RootFS wird beim Booten in die Ramdisk geladen und dort als Early-Userland gemountet.
Eigenschaften von “initrd” ?
- initrd bietet die Möglichkeit, eine Ramdisk über den Bootloader zu laden.
- Diese Ramdisk kann dann als Root-Dateisystem eingebunden werden und Programme können von dort aus gestartet werden.
- initrd hat immer eine Feste größe.
Bootablauf im Early-Userland?
- BIOS
- Bootloader
- Kernel mit RootFS im Early-Userland
- ausführen von /init
- Im Fall von Desktop/Server -> Newmount der Ziel-Root-Partition
Fall 1: RootFS liegt als Image im Flash.
Bei jedem Booten des Systems wird das RootFS in die ramdisk geladen.
Fall2: RootFS liegt vollständig im Flash Speicher.
Das Fielsystem liegt unkomprimiert im Flash. Der Kernel greift direkt darauf zu.
Vorteile ramdisk?
- Der Zugriff auf die Ramdisk ist schneller als der Zugriff auf die Flash
- Beim Flashspeicher ist die Anzahl der Schreibzugriffe limitiert
- Die Größe der Ramdisk ist frei wählbar.
- Das Verfahren vereinfache die Systemaktualisierung
Nachteile Ramdisk?
- Ramdisk verbraucht Hauptspeicher
- Die Daten sind doppelt vorhanden (Image liegt auf der Flash und entpacktes RootFS in der Ramdisk)
- Änderungen die während des Betriebs im Root-Filesystem gemacht wurden sind nach neustart verloren.
initramfs
Das initramfs ist ein komprimiertes Archiv (CPIO) das für den Systemstart benötigte Dateien enthält.
Wo befindet sich das initramfs?
Zum einen kann der Bootloader das CPIO-Archiv als Image zum Kernel dazu laden (seperate Dateien), zum anderen kann das Archiv direkt im Kernel enthalten sein.
In beiden Fällen entpack der Kernel das Archiv und hängt es als Stammverzeichnis ein.
Nenne Vorteile eines initramfs?
- Durch das die Dateien direkt in der Datenstruktur vorhanden sind spart man Code, Speicherplatz und Rechenzeit.
- Es wird nur so viel Hauptspeicher verwendet, wie Daten im RootFS liegen.
Was ist der Unterschied zwischen initrd und initramfs?
Initrd ist ein Blockgerät mit fester Größe, das von einem Dateisystem wie ext2’formatiert’ werden muss. Es befindet sich standardmäßig auf /dev/ram0 und kann nicht vergrößert oder verkürzt werden.
Auf der anderen Seite ist initramfs ein cpio-Archiv, das während des Bootvorgangs einfach entpackt wird, um den Speicher von ramfs zu füllen. Dieser Speicher ist dynamisch groß und kann daher je nach Bedarf gekürzt oder vergrößert werden. Eine initramfs benötigt keine Filesystemtreiber.
Standard Verzeichnisse?
/sbin(Kommandos für Systemverwaltung) /sys(virtuelles Dateisystem) /tmp(Temporäre Dateien) /usr(Anwendungsprogramme) /var(Logdateien)
Welches Programm ist der Angelpunkt jedes Embedded Linux Systems?
Das Programm “init” ist zuständig dafür, das die für den Betrieb des Embedded Systems notwendigen Programme in einer geeigneten Reihenfolge gestartet werden.
Allgemeine Anwendungen auf einem Linux Kernel.
- Es steht nur eine eingeschränkte Umgebung zur Verfügung.
- Eventuell kein Framework für DLLs
- —> Programm müssen statisch gelinked werden
- —> Einsatz von Multicall-Binaries
Was ist eine Mulicall Binary?
Busybox stellt eine Multicall-Binarie dar. Das heißt es ist auf dem System nur eine Binär Datei(Programm) vorhanden, die sich je nach dem mit welchem Namen sie aufgerufen wird anders verhält.
“./busybox ls” -> verhält sich wie “ls”
Was ist BusyBox?
BusyBox fasst viele Standardprogramme zu einer Multicall Binary zusammen. Mit make menuconfig lassen sich die einzelnen Funktionen konfigurieren.
Wie funktionier eine Multicall Binary?
Das Betriebssystem übergibt den Programmnamen als Argument “0”.
Über Hard- oder Symlinks kann nun ein Programm mehrere Namen erhalten.