Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
software:linux:emdebian:rootfs_erstellen [2014-10-08 16:05] – graf | software:linux:emdebian:rootfs_erstellen [2014-10-09 11:51] – graf | ||
---|---|---|---|
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 weiter unten). Die Unterschiede werden in diesem [[http:// |
</ | </ | ||
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!" | + | ===== Buildroot ===== |
- | </code> | + | Wir benutzen [[http:// |
+ | TODO |