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
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
Nachtrag: wenn das auch nicht funktioniert, dann stimmen evtl. die Ladeadressen nicht. "printenv" (im u-Boot, nicht im Linux …), überprüfen dass sich nichts gegenseitig überkritzelt. Der Kernel kann komprimiert sein, dann wird er woandershin ausgepackt. Und so weiter.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.