Embedded Filesystem Generator

Ist tot. Rootfilesysteme werden seit 2015 aus opkg paketen zusammengebaut.

Damit nicht jedes Rootfilesystem haendisch erzeugt werden muss gibt es ein Python script, dass bei der erzeugung hilft. Es greift auf bereits compilierte Programme zurueck und ist letztendlich ein glorifiziertes kopierscript.

Zu den Details eines embeded filesystems siehe EmbeddedRootFilesystem.

Scripte

Benoetigt wird das python script rootfs.py (im Cluster /common/usr/embedded/rootfsGenerator/repository/python/rootfs.py)

Dieses erzeugt zusammen mit einer Konfigurationsdatei einen Ordner in dem der Inhalt fuer eine Ramdisk liegt. Die Inhalte des Ordners werden nicht ueberschrieben.

Aus diesem Verzeichnis kann man mit genext2fs eine ramdisk erzeugen.

Im Sourcecode Repository liegt ein Beispiel fuer ein https://www-acc.gsi.de/svn/bel/embedded/trunk/rootfsGenerator/example_mkimage.sh shellscript, welches die notwendigen Aufrufe beinhaltet.

Binaer Repository

Die einzelnen Komponenten des Root Filesystem finden sich in einem Binaerrepository /common/usr/embedded/rootfsGenerator/repository/.

Die verwendeten Bibliotheken (z.B. libc) werden zu grossen Teilen aus dem Wirtssystem kopiert. Also /lib und /usr/lib. Bzw fuer powerpc aus einem installierten eldk.

Skeletons

enthaelt Verzeichnis layouts mit generellen konfigurationsdateien und init scripten. Derzeit nur default.

Addons

enthaelt nach architekturen (i386, ppc, noarch) getrennte Software Komponenten die in die Filesystem integriert werden koennen. Fuer komponenten die sowohl einen architektur spezifischen (z.B. binary) als auch einen unabhaengigen (z.B. startscripte) Teil enthalten werden noarch/$PAKET als auch$ARCH/$PAKET in das Filesystem integriert.

Konfigurationsdatei

Im Sourcecode Repository liegt eine kommentierte https://www-acc.gsi.de/svn/bel/embedded/trunk/rootfsGenerator/example.cfg Beispielkonfiguration.

Die Konfigurationsdatei ist aehnlich einer Windows Ini-Datei mit einzelnen Sektionen (eckigen klammern) und schluessel Wertpaaren (getrennt mit Doppelpunkt) aufgebaut.

general

Angaben wo das binaer Repository zu finden ist, woher libraries kopiert werden, Ort des Ausgabeordners, etc.

kernel

Da im Filesystem Kernelmodule integriert werden (Netwerktreiber) muessen diese zum verwendeten Kernel passen. Daher sind im Binaer Repository fertig kompilerte Kernelmodule asl $ARCH/kernel_$VERSION vorhanden.

Die Kernelmodule die integriert werden sollen werden unter module aufgefuehrt. Hierbei ist "@network" ein liste gaengiger Netzwerktreiber.

libmanager

ldconfig erzeugt die benoetigten Symlinks fuer die integrierten Bibliotheken. Check laesst ueberprueft saemtlich integrierten binaries ob dynamisch gelinkte Bibliothken auch integriert werden.

defaults

hier koennen fuer viele grundlegende Systembibliotheken standardwerte angegeben werden. Diese werden ggf vom DHCP Server ueberschrieben.

passwords

Hier koennen User fuer dieses System angegeben werden. Zumindest root sollte man angeben und mit einem Passwort versehen. Bitte gesalzene Passwoerter verwenden und sich ausserhalb von Wikiseiten und Versionscontrollsystemen das klartext password dokumentieren.

Um unter linux einen gesalzenen Passworthash zu erzeugen

SALT=$(head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 8); \
openssl passwd -1 -salt $SALT

inittab

erzeugt die Prozesse, die von der Inittab verwaltet werden.
Topic revision: r4 - 03 Mar 2015, ChristophHandel
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback