mikrocontroller.net

Forum: PC Hard- und Software uInitrd für armbian erzeugen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Markus W. (dl8mby)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum und insbesondere Ihr Linux Experten,

ich möchte für den BPi-R2 ein uInitrd (initial ramdisk mit Treibern)
erzeugen.
Dazu habe ich bereits dracut und mkinitrd eingesetzt, bekomme aber
nicht nicht das richtige Format mit dem der SBC startet.

Wrong Ramdisk Image Format
Ramdisk image is corrupt or invalid


Die o.g. Werkzeuge liefern mir z.B

root@bananapir2:/boot# binwalk initramfs-5.2.0.img

DECIMAL       HEXADECIMAL     DESCRIPTION
------------------------------------------------------------------------ 
--------
0             0x0             gzip compressed data, maximum compression, 
from Unix, NULL date (1970-01-01 00:00:00)
3125643       0x2FB18B        CRC32 polynomial table, little endian


ich brauche aber ein

root@bananapir2:/boot# binwalk uInitrd-4.19.20-mt7623

DECIMAL       HEXADECIMAL     DESCRIPTION
------------------------------------------------------------------------ 
--------
0             0x0             uImage header, header size: 64 bytes, 
header CRC: 0xBCF5D540, created: 2019-05-14 06:52:18, image size: 
7931311 bytes, Data Address: 0x0, Ent
ry Point: 0x0, data CRC: 0xD7660C2C, OS: Linux, CPU: ARM, image type: 
RAMDisk Image, compression type: gzip, image name: "uInitrd"
64            0x40            gzip compressed data, from Unix, last 
modified: 2019-05-14 06:52:12


d.h. ein gzip compressed Image mit inkludiertem uImage header.

Enwerder ich übersehe was oder ich verwende die falschen Tools
für diesen Zweck.


Wie erstelle ich ein uInitrd richtig?

Wird das eventuell bereits bei Crosscompilieren via make gemacht?
Habe dazu leider nichts gefunden.

In den Kernel-Sourcen gibt es aber ein tools Verzeichnis, dass die
folgenden beiden Files beinhaltet, die darauf hinweisen dass eine
initrd erzeugbar ist.

./tools/testing/selftests/rcutorture/bin/mkinitrd.sh
./tools/testing/selftests/rcutorture/doc/initrd.txt


Danke für Eure Hilfe.

Markus


Mein dritter Versuch war mit

mkimage -A ARM -O Linux -T ramdisk -C gzip -n uInitrd-5.2.0 
./initramfs-5.2.0.img

wobei initramfs-5.2.0.img zuvor mit dracut --kver 5.2.0 erzeugt wurde.

Läuft aber trotzdem auf einen Fehler:

mkimage: Can't open (null): Bad address

: Bearbeitet durch User
Autor: Markus W. (dl8mby)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke hat sich erledigt!

Die korrekte Vorgehensweise lautet:

Erster Schritt:
dracut --kver 5.2.0 --force

der erzeugt /boot/initramfs-5.2.0.img
sofern es ein /lib/modules/5.2.0/ Verz.
mit den Modulen auf dem SBC root FS gibt.


Zweiter Schritt:
mkimage -A arm -T ramdisk -C gzip -n uInitrd -d 
/boot/initramfs-5.2.0.img /boot/uInitrd-5.2.0

Markus

Nachtrag:

Infos dazu habe ich unter
https://linux-sunxi.org/Initial_Ramdisk
gefunden.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.