Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
software:linux:emdebian:rootfs_erstellen [2013-11-19 13:30] – graf | software:linux:emdebian:rootfs_erstellen [2014-10-09 09:25] – 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. | ||
- | ===== Erstellen | + | <box red right 60% | **Wichtig**> |
- | ==== Multistrap | + | 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:// |
+ | </ | ||
+ | |||
+ | ===== Multistrap | ||
Wir benutzen [[http:// | Wir benutzen [[http:// | ||
- | ==== Automatisches Build Skript | + | ==== Vorbereitung: |
- | Das folgende | + | - Debian Multistrap installieren: |
- | < | + | - Emdebian-Archiv-Schlüssel installieren: |
- | #!/bin/bash | + | - Qemu installieren, |
+ | - **Für Debian 7:** Da in den Paketquellen von Debian Wheezy nur Version 1.2 verfügbar ist, muss das Paket aus dem Backports-Repository verwendet werden. Dazu sind folgende | ||
+ | | ||
+ | deb http:// | ||
+ | - Paket-Liste aktualisieren: | ||
+ | - Qemu aus den Backports installieren: | ||
+ | - **Für Ubuntu und Linux Mint:** In den Paketarchiven von Ubuntu 14.04 und Linux Mint 17 liegt QEmu 2.0 bereit, welches direkt verwendet werden kann: < | ||
+ | - Unterstützung für zusätliche Binärformate installieren: | ||
+ | - schroot installieren: | ||
+ | - mtd-utils installieren: | ||
- | MULTISTRAP_CONFIG=myConfig.grip.multistrap | + | ==== Erstellen ==== |
- | ROOTFS_DIR=/opt/multistrap | + | - Multistrap-Konfiguration im aktuellen Arbeitsverzeichnis erstellen (Achtung: Problem mit Ubuntu: siehe [[https:// |
- | ROOTFS_IMG=rootfs.jffs2 # choose a suitable | + | ... |
- | FILE_DIR=files | + | |
- | DEV_TABLE=device_table | + | |
- | set -e | + | [Grip] |
+ | ... | ||
- | echo " | + | [Debian] |
- | if [ ! -d $ROOTFS_DIR | + | ... |
- | export MULTISTRAP_OUTPUT_DIR=$ROOTFS_DIR | + | </ |
- | multistrap -f $MULTISTRAP_CONFIG | + | - Root File System bootstrappen. Dies erstellt ein Grundsystem im Verzeichnis ''/ |
+ | - Skript für automatische Konfiguration erstellen: < | ||
+ | export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true | ||
+ | export LC_ALL=C LANGUAGE=C LANG=C | ||
+ | / | ||
+ | dpkg --configure -a | ||
+ | mount proc -t proc /proc | ||
+ | dpkg --configure -a</ | ||
+ | - Konfigurationsskript ausführbar machen: < | ||
+ | - schroot Konfiguration erstellen: < | ||
+ | description=My schroot Configuration for Emdebian Grip Wheezy | ||
+ | aliases=my-emdebian | ||
+ | type=directory | ||
+ | directory=/ | ||
+ | root-groups=root | ||
+ | users=$USER | ||
+ | groups=sbuild</ | ||
+ | - Untere Adresslimitierung für Qemu deaktivieren: | ||
+ | - Qemu-Binary in das eben erstellte Root-Filesystem kopieren: < | ||
+ | | ||
+ | - 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 | ||
- | echo " | + | auto eth0 |
- | if [ ! -d $ROOTFS_DIR/etc/network ]; then mkdir -p $ROOTFS_DIR/etc/network; fi | + | iface eth0 inet static |
- | if [ ! -d $ROOTFS_DIR/etc/init.d ]; then mkdir -p $ROOTFS_DIR/etc/init.d; fi | + | |
- | if [ ! -d $ROOTFS_DIR/ | + | netmask 255.255.252.0 |
- | if [ ! -d $ROOTFS_DIR/ | + | |
- | if [ ! -d $ROOTFS_DIR/lib/modules/2.6.31 ]; then mkdir -p $ROOTFS_DIR/lib/modules/2.6.31; fi | + | |
- | if [ ! -d $ROOTFS_DIR/dev/shm ]; then mkdir -p $ROOTFS_DIR/dev/shm; fi | + | - Bash primary promt string (PS1-String) anpassen: < |
- | if [ ! -d $ROOTFS_DIR/usr/ | + | - Die Zeile: < |
- | if [ ! -d $ROOTFS_DIR/usr/share/ | + | - Ersetzen durch: < |
- | # more folders ... | + | - Qemu-Binary im erstellten Root FS wieder löschen: < |
+ | - Device Node Tabelle im aktuellen Arbeitsverzeichnis erstellen (board-spezifisch): | ||
+ | /dev/console c 600 0 0 5 1 0 0 - | ||
+ | ...</file> | ||
+ | - Dateisystemabbild erzeugen: < | ||
- | echo " | + | ==== Automatisches Build Skript ==== |
- | cp -v $FILE_DIR/ | + | Ein Root-Filesystem kann auch mit einem automatischen Build-Script erstellt werden. Das folgende {{: |
- | 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 |