Auf einem Linux-System wird zuerst der Kernel booten. Dabei werden alle seine Subsysteme initialisiert. Anschliessend wird versucht das Root-Filesystem zu mounten. Dieses befindet sich im Wurzelverzeichnis »/«. Das Root-Filesystem beinhaltet Login- und Shellprogramme, die Systemkonfiguration und ladbare Kernel-Module. Fix installierte Module befinden sich im Kernel selber.
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.
Wichtig
Wir benutzen Multistrap für die Erstellung eines Root-Filesystems. Dort befinden sich auch Beispiele für die notwendigen Konfigurationsdateien. Ein weiteres Beispiel findet sich unter Projekt Beo-IT
apt-get install multistrap
apt-get install emdebian-archive-keyring
nano -w /etc/apt/sources.list
wheezy backports deb http://mirror.switch.ch/ftp/mirror/debian/ wheezy-backports main
apt-get update
apt-get -t wheezy-backports install qemu qemu-user-static
apt-get install qemu qemu-user-static
apt-get install binfmt-support
apt-get install schroot
apt-get install mtd-utils
/usr/sbin/multistrap
muss abgeändert werden): nano myBoard.multistrap
[General] ... [Grip] ... [Debian] ...
/opt/multistrap/
: multistrap -f myBoard.multistrap
nano /opt/multistrap/autoconfig.sh
#!/bin/sh export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true export LC_ALL=C LANGUAGE=C LANG=C /var/lib/dpkg/info/dash.preinst install dpkg --configure -a mount proc -t proc /proc dpkg --configure -a
chmod 755 /opt/multistrap/autoconfig.sh
nano /etc/schroot/chroot.d/my-emdebian-grip.conf
[my-emdebian-grip] description=My schroot Configuration for Emdebian Grip Wheezy aliases=my-emdebian type=directory directory=/opt/multistrap root-groups=root users=$USER groups=sbuild
echo 0 > /proc/sys/vm/mmap_min_addr
cp /usr/bin/qemu-ppc-static /opt/multistrap/usr/bin/
schroot -c my-emdebian-grip
(my-emdebian-grip)$ /autoconfig.sh
(my-emdebian-grip)$ passwd
(my-emdebian-grip)$ apt-get clean
(my-emdebian-grip)$ exit
nano /opt/multistrap/etc/fstab
#/etc/fstab /dev/root / jffs2 defaults 0 0 proc /proc proc defaults 0 0 ...
/opt/multistrap/etc/inittab</code>
/opt/multistrap/etc/securetty
die aktive tty
Verbindung eingetragen sein.nano /opt/multistrap/etc/network/interfaces
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 146.136.36.x netmask 255.255.252.0 gateway 146.136.36.1
echo myBoard > /opt/multistrap/etc/hostname
nano /opt/multistrap/etc/bash.bashrc
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1='[MY_TARGET] \u@\h:\w\$ '
rm /opt/multistrap/usr/bin/qemu-ppc-static
# nano device_table
# name type mode uid gid major minor start inc count /dev/console c 600 0 0 5 1 0 0 - ...
# mkfs.jffs2 -n -e 0x40000 -p 0x40000 -b -d /opt/multistrap -D device_table -o my-rfs.jffs2
Man kann das Image mit etwas Handarbeit verkleinern, indem vor dem Erzeugen des Images z.B. folgende Verzeichnisse gelöscht werden: /var/cache/
, /var/lib/dpkg/info/
, /usr/share/zoneinfo/
, /usr/share/perl/
, /usr/share/perl5/
, /usr/share/doc/
.
Ein Root-Filesystem kann auch mit einem automatischen Build-Script erstellt werden. Das folgende Skript zeigt ein Beispiel.