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.