Bootimage / Initrd Rootfilesystem für X86 erzeugen

Hat man ein EmbeddedRootFilesystem erzeugt muss dieses in eine vom Zielsystem benutzbare Ramdisk umgewandelt werden. Im X86 bereich ist dies üblicherweise ein cpio komprimiertes archiv. Für andere Systeme ist ein mit gzip komprimiertes ext2 Filesystem üblich. Da letzteres auch auf X86 funktioniert, bietet es sich an dies überall einzusetzen

Hat man ein rootfilesystem in Ordner ROOTFS erzeugt, so benötigt man noch die Knoten in ROOTFS/dev. Um solche knoten zu erzeugen braucht man root-rechte. Um dies zu umgehen werden die Knoten nicht im Host Dateisystem erzeugt sondern aus einer Textdatei ausgelesen und erst beim erzeugen des Images generiert.

Anfang einer rootfs_devices.tab. Diese würde neben dem dev Verzeichnis, das device console anlegen.
#<name>    <type> <mode> <uid> <gid> <major> <minor> <start>  <inc>  <count>
/dev            d  755  0       0        -      -       -       -       -
/dev/console    c  640  0       0        5      1       -       -       -
...

Erzeugen ext2 imagefile. Genext2fs ist im ACC Cluster als Teil des eldk installiert.
user@host$ genext2fs -U \
        -d $ROOTFS_DIR \
        -D $ROOTFS_DEVICES \
        -b $ROOTFS_SIZE \
        -N $ROOTFS_INODES \
        -m $ROOTFS_RESERVED \
        $ROOTFS_IMAGE

Hierbei is ROOTFS_DIR, der Ordner der in der Ramdisk landen soll. ROOTFS_DEVICES ist die Textdatei mit den zu erzeugenden Deviceknoten. ROOTFS_SIZE ist die gewünschte Größe der entpackten Ramdisk in kilobyte (z.B. 8192). ROOTFS_INODES ist die Anzahl der Inodes im Dateisystem (entspricht Anzahl der möglichen Dateien, z.B. 1000). ROOTFS_RESERVED ist der für root reservierte Speicherplatz (0 ist ein guter Wert...). Und erzeugt wird das in der Datei ROOTFS_IMAGE.

Dieses image muss noch mit gzip komprimiert werden, fertig ist die initrd

user@host$gzip $ROOTFS_IMAGE

Für PowerPC muss das so erzeugte Image noch weiter verarbeitet werden.

Wie man dieses Image übers Netz bootet beschreibt EmbeddedBootPXE.
Topic revision: r1 - 16 Jun 2010, ChristophHandel
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback