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:05] – 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 ==== | ||
| - | 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 | ||
| export LC_ALL=C LANGUAGE=C LANG=C | export LC_ALL=C LANGUAGE=C LANG=C | ||
| Zeile 43: | Zeile 42: | ||
| mount proc -t proc /proc | mount proc -t proc /proc | ||
| dpkg --configure -a</ | dpkg --configure -a</ | ||
| - | - Konfigurationsskript ausführbar machen: < | + | - Konfigurationsskript ausführbar machen: < |
| - | - schroot Konfiguration erstellen: < | + | - schroot Konfiguration erstellen: < |
| description=My schroot Configuration for Emdebian Grip Wheezy | description=My schroot Configuration for Emdebian Grip Wheezy | ||
| aliases=my-emdebian | aliases=my-emdebian | ||
| Zeile 52: | Zeile 51: | ||
| users=$USER | users=$USER | ||
| 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 (Achtung: hier muss das passende Binary ausgewählt werden): < | ||
| + | - chroot Umgebung betreten (in Arbeitsverzeichnis ausführen): | ||
| + | - Konfigurationsskipt ausführen: < | ||
| + | - Root Passwort festlegen: < | ||
| + | - APT Cache löschen: < | ||
| + | - chroot Umgebung wieder verlassen: < | ||
| + | - Mount-Punkte festlegen: < | ||
| + | / | ||
| + | proc / | ||
| + | ...</ | ||
| + | - Serielles Terminal konfigurieren (board-spezifisch). | ||
| + | * Editieren von ''/ | ||
| + | * Sicherstellen, | ||
| + | - Netzwerkkonfiguration (passend für NTB-Netz): < | ||
| + | iface lo inet loopback | ||
| - | ==== Automatisches Build Skript ==== | + | auto eth0 |
| - | Das folgende Skript erstellt automatisch ein neues RootFS-Image. | + | iface eth0 inet static |
| - | < | + | |
| - | #!/bin/bash | + | |
| + | | ||
| + | - 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, | ||
| + | </ | ||
| - | 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 | + | ==== Automatisches Build Skript ==== |
| - | + | Ein Root-Filesystem kann auch mit einem automatischen Build-Script erstellt werden. Das folgende {{: | |
| - | echo " | + | |
| - | if [ ! -d $ROOTFS_DIR ]; then mkdir -p $ROOTFS_DIR; | + | |
| - | export MULTISTRAP_OUTPUT_DIR=$ROOTFS_DIR | + | |
| - | multistrap | + | |
| - | + | ||
| - | 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!" | ||
| - | </ | ||