Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| software:linux:emdebian:rootfs_erstellen [2014-10-08 16:16] – graf | software:linux:emdebian:rootfs_erstellen [2014-11-12 10:47] (aktuell) – Buildroot Link hinzugefügt abajric | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| Der Speicherort des Root-Filesystems ist im Kernel fix einprogrammiert und lässt sich ändern mit //rdev//. Zum Root-Filesystem gehören einige wenige Toplevel-Verzeichnisse und die darin enthaltenen Unterverzeichnisse. | Der Speicherort des Root-Filesystems ist im Kernel fix einprogrammiert und lässt sich ändern mit //rdev//. Zum Root-Filesystem gehören einige wenige Toplevel-Verzeichnisse und die darin enthaltenen Unterverzeichnisse. | ||
| - | <box red right 35% | **Wichtig**> | + | <box red right 60% | **Wichtig**> |
| - | Ein Root-Filesystem kann mit Multistrap sehr einfach und elegant erstellt werden. Allerdings sind die Speicheranforderungen relativ hoch. | + | Ein Root-Filesystem kann mit Multistrap sehr einfach und elegant erstellt werden. Allerdings sind die Speicheranforderungen relativ hoch. Mit Buildroot reduziert sich die Grösse stark, allerdings bedingt das einen grösseren Aufwand (siehe [[software: |
| </ | </ | ||
| Zeile 25: | Zeile 25: | ||
| ==== Erstellen ==== | ==== Erstellen ==== | ||
| - | FIXME Achtung: Problem mit Ubuntu: siehe [[https:// | + | - Multistrap-Konfiguration im aktuellen Arbeitsverzeichnis erstellen (Achtung: Problem mit Ubuntu: siehe [[https:// |
| - | - Multistrap-Konfiguration im aktuellen Arbeitsverzeichnis erstellen: < | + | |
| ... | ... | ||
| Zeile 35: | Zeile 34: | ||
| ... | ... | ||
| </ | </ | ||
| - | - Root File System bootstrappen. Dies erstellt ein Grundsystem im Verzeichnis | + | - Root File System bootstrappen. Dies erstellt ein Grundsystem im Verzeichnis |
| - Skript für automatische Konfiguration erstellen: < | - Skript für automatische Konfiguration erstellen: < | ||
| export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true | export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true | ||
| Zeile 53: | Zeile 52: | ||
| groups=sbuild</ | groups=sbuild</ | ||
| - Untere Adresslimitierung für Qemu deaktivieren: | - Untere Adresslimitierung für Qemu deaktivieren: | ||
| - | - Qemu-Binary in das eben erstellte Root-Filesystem kopieren: | + | - Qemu-Binary in das eben erstellte Root-Filesystem kopieren |
| - | - chroot Umgebung betreten: < | + | - chroot Umgebung betreten |
| - | - Konfigurationsskipt ausführen: | + | - Konfigurationsskipt ausführen: < |
| - Root Passwort festlegen: < | - Root Passwort festlegen: < | ||
| - APT Cache löschen: < | - APT Cache löschen: < | ||
| Zeile 63: | Zeile 62: | ||
| proc / | proc / | ||
| ...</ | ...</ | ||
| + | - Serielles Terminal konfigurieren (board-spezifisch). | ||
| + | * Editieren von ''/ | ||
| + | * Sicherstellen, | ||
| + | - Netzwerkkonfiguration (passend für NTB-Netz): < | ||
| + | iface lo inet loopback | ||
| + | |||
| + | auto eth0 | ||
| + | iface eth0 inet static | ||
| + | | ||
| + | | ||
| + | | ||
| + | - Hostname konfigurieren: | ||
| + | - Bash primary promt string (PS1-String) anpassen: < | ||
| + | - Die Zeile: < | ||
| + | - Ersetzen durch: < | ||
| + | - Qemu-Binary im erstellten Root FS wieder löschen (Achtung: hier muss wiederum das passende Binary ausgewählt werden): < | ||
| + | - Device Node Tabelle im aktuellen Arbeitsverzeichnis erstellen (board-spezifisch): | ||
| + | / | ||
| + | ...</ | ||
| + | - Dateisystemabbild erzeugen: < | ||
| + | <WRAP center round tip 80%> | ||
| + | Man kann das Image mit etwas Handarbeit verkleinern, | ||
| + | </ | ||
| ==== Automatisches Build Skript ==== | ==== Automatisches Build Skript ==== | ||
| - | Das folgende Skript erstellt automatisch ein neues RootFS-Image. | + | Ein Root-Filesystem kann auch mit einem automatischen Build-Script erstellt werden. Das folgende {{: |
| - | <code bash> | + | |
| - | # | + | |
| - | + | ||
| - | MULTISTRAP_CONFIG=myConfig.grip.multistrap # give name of configuration file | + | |
| - | ROOTFS_DIR=/ | + | |
| - | ROOTFS_IMG=rootfs.jffs2 # choose a suitable file system format | + | |
| - | FILE_DIR=files | + | |
| - | DEV_TABLE=device_table | + | |
| - | + | ||
| - | set -e | + | |
| - | + | ||
| - | echo " | + | |
| - | if [ ! -d $ROOTFS_DIR ]; then mkdir -p $ROOTFS_DIR; | + | |
| - | export MULTISTRAP_OUTPUT_DIR=$ROOTFS_DIR | + | |
| - | multistrap -f $MULTISTRAP_CONFIG | + | |
| - | + | ||
| - | echo " | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | if [ ! -d $ROOTFS_DIR/ | + | |
| - | # more folders ... | + | |
| - | + | ||
| - | echo " | + | |
| - | cp -v $FILE_DIR/ | + | |
| - | cp -v $FILE_DIR/ | + | |
| - | cp -v $FILE_DIR/ | + | |
| - | touch $ROOTFS_DIR/ | + | |
| - | # more config files ... | + | |
| - | + | ||
| - | echo " | + | |
| - | cp -v $FILE_DIR/ | + | |
| - | cp -v $FILE_DIR/ | + | |
| - | cp -v $FILE_DIR/ | + | |
| - | cp -v $FILE_DIR/ | + | |
| - | # more scripts ... | + | |
| - | + | ||
| - | echo " | + | |
| - | if [ ! -L $ROOTFS_DIR/ | + | |
| - | if [ ! -L $ROOTFS_DIR/ | + | |
| - | if [ ! -L $ROOTFS_DIR/ | + | |
| - | if [ ! -L $ROOTFS_DIR/ | + | |
| - | + | ||
| - | echo " | + | |
| - | mkfs.jffs2 -n -e 0x20000 -p 0x20000 -D $DEV_TABLE -l -d $ROOTFS_DIR -o $ROOTFS_IMG | + | |
| - | echo "All done!" | ||
| - | </ | ||