Dies ist eine alte Version des Dokuments!
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
Achtung: Problem mit Ubuntu: siehe https://bugs.launchpad.net/ubuntu/+source/multistrap/+bug/1313787
nano myBoard.multistrap
[General] ... [Grip] ... [Debian] ...
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 ...
# nano /opt/multistrap/etc/inittab
/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
Das folgende Skript erstellt automatisch ein neues RootFS-Image.
#!/bin/bash MULTISTRAP_CONFIG=myConfig.grip.multistrap # give name of configuration file ROOTFS_DIR=/opt/multistrap ROOTFS_IMG=rootfs.jffs2 # choose a suitable file system format FILE_DIR=files DEV_TABLE=device_table set -e echo "Multistrapping... " if [ ! -d $ROOTFS_DIR ]; then mkdir -p $ROOTFS_DIR; fi export MULTISTRAP_OUTPUT_DIR=$ROOTFS_DIR multistrap -f $MULTISTRAP_CONFIG echo "Create missing folders on rootfs..." if [ ! -d $ROOTFS_DIR/etc/network ]; then mkdir -p $ROOTFS_DIR/etc/network; fi if [ ! -d $ROOTFS_DIR/etc/init.d ]; then mkdir -p $ROOTFS_DIR/etc/init.d; fi if [ ! -d $ROOTFS_DIR/etc/dhcp3 ]; then mkdir -p $ROOTFS_DIR/etc/dhcp3; fi if [ ! -d $ROOTFS_DIR/etc/apt/apt.conf.d/ ]; then mkdir -p $ROOTFS_DIR/etc/apt/apt.conf.d; fi 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 if [ ! -d $ROOTFS_DIR/usr/share/man/man1 ]; then mkdir -p $ROOTFS_DIR/usr/share/man/man1; fi if [ ! -d $ROOTFS_DIR/usr/share/man/man7 ]; then mkdir -p $ROOTFS_DIR/usr/share/man/man7; fi # more folders ... echo "Copying config files to rootfs..." cp -v $FILE_DIR/fstab $ROOTFS_DIR/etc/ cp -v $FILE_DIR/hostname $ROOTFS_DIR/etc/ cp -v $FILE_DIR/passwd $ROOTFS_DIR/etc/ touch $ROOTFS_DIR/lib/modules/2.6.31/modules.dep # more config files ... echo "Copying scripts to rootfs..." cp -v $FILE_DIR/kversion $ROOTFS_DIR/opt/ntb/ cp -v $FILE_DIR/hwversion $ROOTFS_DIR/opt/ntb/ cp -v $FILE_DIR/hwclockfirst.sh $ROOTFS_DIR/etc/init.d/hwclockfirst.sh cp -v $FILE_DIR/serial_config $ROOTFS_DIR/opt/ntb/ # more scripts ... echo "Creating missing links on rootfs..." if [ ! -L $ROOTFS_DIR/etc/mtab ]; then ln -v -s /proc/mounts $ROOTFS_DIR/etc/mtab; fi if [ ! -L $ROOTFS_DIR/etc/rcS.d/S99smartmeter-init.sh ]; then ln -v -s ../init.d/smartmeter-init.sh $ROOTFS_DIR/etc/rcS.d/S99smartmeter-init.sh; fi if [ ! -L $ROOTFS_DIR/etc/resolv.conf ]; then ln -v -s /var/run/resolv.conf $ROOTFS_DIR/etc/resolv.conf; fi if [ ! -L $ROOTFS_DIR/etc/adjtime ]; then ln -v -s /var/local/adjtime $ROOTFS_DIR/etc/adjtime; fi echo "Generating rootfs image file..." mkfs.jffs2 -n -e 0x20000 -p 0x20000 -D $DEV_TABLE -l -d $ROOTFS_DIR -o $ROOTFS_IMG echo "All done!"