Zum Inhalt springen

initramfs

aus Wikipedia, der freien EnzyklopÀdie

initramfs steht fĂŒr initial ram filesystem (sinngemĂ€ĂŸ ĂŒbersetzt Ausgangsdateisystem im Arbeitsspeicher) und ist der Nachfolger von initrd. Ein initramfs-Archiv ist eine komprimierte Datei, die fĂŒr den Systemstart benötigte Dateien enthĂ€lt. Es kann vom Linux-Kernel beim Booten als Stammverzeichnis eingehĂ€ngt werden. Anschließend wird ein auf dem initramfs vorhandenes Programm (init) gestartet. Das gestartete Programm kann unterschiedliche Aufgaben erfĂŒllen. Bei eingebetteten Systemen kann die ganze FunktionalitĂ€t des Systems im initramfs enthalten sein. Personal Computer nutzen das initramfs oft nur als einen Zwischenschritt, um Treiber zu laden und andere Vorbereitungen fĂŒr den Start des eigentlichen Systems zu treffen. Durch das initramfs bzw. initrd wurde es möglich, den Bootprozess unter Linux flexibler zu gestalten und FunktionalitĂ€t aus dem Kernel in den Userspace auszulagern.

Der Linux-Kernel kann ab Version 2.5.46 von einem initramfs booten.[1] 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. Als NÀchstes wird versucht, das Programm /init aus dem initramfs zu starten. SchlÀgt das Starten fehl, versucht der Kernel, das eigentliche root-Volume einzuhÀngen und von dort /sbin/init zu starten.

Das initramfs selbst ist ein cpio-Archiv, das meist eine Unix-Shell (oft BusyBox) und andere grundlegende Programme enthĂ€lt. In diesem Fall ist /init ein einfaches Shellskript, das die im initramfs enthaltenen Programme auf die gewĂŒnschte Weise verknĂŒpft. Es ist aber auch möglich, dass /init ein C-Programm ist, das gegen eine kleine Variante der libc gelinkt wurde. Die letzte Aufgabe von /init ist es meist, das eigentliche root-Volume (root device) ĂŒber das Stammverzeichnis einzuhĂ€ngen und /sbin/init von dort zu starten.

VerĂ€nderungen gegenĂŒber initrd

[Bearbeiten | Quelltext bearbeiten]
  • Im Kernel muss kein Dateisystem-Treiber fest einkompiliert sein
  • Die GrĂ¶ĂŸe des initramfs unterliegt keiner festen Obergrenze
  • Zugriffe auf das initramfs werden nicht gepuffert, wodurch Arbeitsspeicher gespart wird
  • Verschiedene cpio-Archive können verkettet werden, was das Laden von mehr als einem initramfs-Archiv ermöglicht

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Linux Weekly News. 7. November 2002, https://lwn.net/Articles/14776/