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!" | ||
- | </ |