kernel initramfs_data.cpio.gz?

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

kernel initramfs_data.cpio.gz?

Beitrag von Fileshäring » 10.05.2006 12:28:14

hallo,

ich bin gerade dabei ein Kernel für einen ARM Prozessor auf zu setzen.
Ich habe nun mal mit

Code: Alles auswählen

make xconfig
den Kernel soweit konfiguriert, nur bekomme ich nun folgenenden Fehler:

Code: Alles auswählen

$ make zImage
  CHK     include/linux/version.h
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/file2alias.o
scripts/mod/file2alias.c: In function `do_ieee1394_entry':
scripts/mod/file2alias.c:107: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c:109: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c:111: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c:113: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c: In function `do_pci_entry':
scripts/mod/file2alias.c:135: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c:136: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c:137: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c:138: warning: unsigned int format, __u32 arg (arg 3)
scripts/mod/file2alias.c:152: warning: unsigned int format, __u32 arg (arg 4)
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/sumversion.o
scripts/mod/sumversion.c: In function `md4_final_ascii':
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned int arg (arg 4)
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned int arg (arg 5)
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned int arg (arg 6)
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned int arg (arg 7)
  HOSTLD  scripts/mod/modpost
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/conmakehash
  SYMLINK include/asm-arm/arch -> include/asm-arm/arch-ns9750
  CC      arch/arm/kernel/asm-offsets.s
  CHK     include/asm-arm/constants.h
  UPD     include/asm-arm/constants.h
  Generating include/asm-arm/mach-types.h
  CC      init/main.o
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  CC      init/do_mounts.o
  CC      init/do_mounts_devfs.o
  CC      init/do_mounts_rd.o
  CC      init/do_mounts_initrd.o
  LD      init/mounts.o
  CC      init/initramfs.o
  LD      init/built-in.o
make[1]: *** No rule to make target `/install/initramfs_data.cpio.gz', needed by
 `usr/initramfs_data.cpio.gz'.  Stop.
make: *** [usr] Error 2
hat jemand ne Idee?

Es handelt sich um ein 2.6.10 Kernel!
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 14.05.2006 23:08:31

Nun, langsam weiß ich auch nicht weiter

was hat das genau mit der Fehlermeldung auf sich? Habe ich irgendwas vergessen dürfen?

Ich verstehe das nicht ganz!?

was hat das genau mit initramfs aufsich? Wie muss ich dies einbinden?

Woher bekomme ich ein gutes wiki zu diesem Thema?

Vielen Dank im voraus
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

Benutzeravatar
Wikinator
Beiträge: 259
Registriert: 11.06.2005 13:39:20
Wohnort: Freiburg
Kontaktdaten:

Beitrag von Wikinator » 15.05.2006 14:57:28

hast du die initramfs-tools installiert?
wenn nicht, vielleicht hilft ein

Code: Alles auswählen

apt-get install initramfs-tools
Debian/unstable
copy

Computer sind die logische Weiterentwicklung des Menschen — Intelligenz ohne Moral.

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 15.05.2006 15:15:30

finde ich leider nicht! Ich habe stable laufen!

Was bringt mir dieses Tool eigentlich?
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 15.05.2006 19:10:46

okay ist vielleicht ne dumme Frage, aber wie installiere ich dies?

ich habe gerade mein System komplett platt machen müssen, da nach der Installation nichts mehr lief! Irgendwelche Fehlermeldungen wegen udev und hotplug!

Ich habe übrigens ein 2.4.x kernel installiert!

So wie ich das gesehen habe muss erst mal ein 2.6 drauf.

Hat dieses Tool schon jemand installiert?
Kann er mir da vielleicht weiter helfen?
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

Benutzeravatar
Tintom
Moderator
Beiträge: 3070
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Beitrag von Tintom » 15.05.2006 20:10:46

Wikinator hat geschrieben:hast du die initramfs-tools installiert?
wenn nicht, vielleicht hilft ein

Code: Alles auswählen

apt-get install initramfs-tools
Das Paket heisst initrd-tools
Also muss der Befehl

Code: Alles auswählen

apt-get install initrd-tools
lauten.

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 15.05.2006 20:47:46

okay, das ist schon bei mir drauf, aber was kann ich damit machen?
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 15.05.2006 21:33:42

Hallo,

sarge benutzt out-of-the-box nicht nicht initramfs-Format für die initrd, sondern macht ein cramfs-Image:

Code: Alles auswählen

/etc/mkinitrd/mkinitrd.conf:
...
MKIMAGE='mkcramfs %s %s > /dev/null'
...
initramfs bedeutet einfach ein gepacktes cpio-Archiv (*.cpio.gz). Das ist machbar mit:

Code: Alles auswählen

MKIMAGE='cd %s &&	find . | sort -u | cpio -H newc --create | gzip -cn9 > %s'
wahrscheinlich hast Du in menuconfig die Optionen für initramfs eingeschaltet/modifiziert.
Ein hierfür benötigtes Vorlagen-Verzeichnis kannst Du mit 'mkinitrd -k ...' erstellen: Mit der Option '-k' bleibt das Build für die initrd in /tmp erhalten und Du kannst es für Deine Zwecke abändern.

Mindeständerung ist: Kopiere initrd/sbin/init nach initrd/
(Nach der SuSE-Vorlage habe ich noch deren run_init nach initrd/ kopiert, weil SuSE es halt auch macht)
Eine so erstellte initramfs-initrd ist lauffähig.

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 15.05.2006 21:41:37

Vielen Dank für die kurze und gute Erklärung.

Ich bin gerade dabei ein Kernel für ein ARM9 zu basteln mit der Cross-Compiler Scratchbox. Der Kernel der drauf kommen soll ist: 2.6.10....

Aber irgendwie konnte ich zu initramfs nicht viel INET finden, was mich ein wenig eritiert hat!

Leider finde ich auch nicht die Option in menuconfig initramfs abzuschalten?!
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 15.05.2006 22:24:59

Hast Du Einträge für

Code: Alles auswählen

...
CONFIG_INITRAMFS_SOURCE=""
...
EDIT:

scripts/gen_initramfs_list.sh > usr/gen_init_cpio.c

usr/initramfs_data.S > usr/initramfs_data.cpio.gz
(welche out-of-the-box noch nicht existiert)
Zuletzt geändert von rendegast am 15.05.2006 22:31:58, insgesamt 2-mal geändert.

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 15.05.2006 22:29:09

Nein, da habe ich keine Einträge, aber wußte nicht, wie ich dies machen kann! Wenn ich die .config direkt geöffnet habe, dann konnte ich diesen Eintrag sehen doch im menuconfig, konnte ich nix dazu finden!

Desweiteren habe ich nicht verstanden, was ich da eintragen soll!?
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 15.05.2006 22:39:10

Hier unter 'General setup'

wenn bei Dir nichts ist, ? (arm-spezifisch ?)

wenn ich hier etwas eintrage, werden die Einträge aus usr/Kconfig einbezogen, was dann scheinbar den Vorgang 'scripts/gen_initramfs_list.sh > usr/gen_init_cpio.c' auslöst.
Zuletzt geändert von rendegast am 16.05.2006 01:40:36, insgesamt 1-mal geändert.

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 15.05.2006 23:03:59

Bei mir habe ich zweimal General Setup und da kann ich leider nix finden!

Wo liegt das genau? General Setup --> ?
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 15.05.2006 23:19:31

so, ein bischen probiert:

'make menuconfig SUBARCH=arm' > General_setup > Initramfs_source_file(s) ist bei mir leer.
Kompilierung 'make zImage' läuft bis System_is_too_big._Try_bzImage...
'make bzImage' läuft dann durch.



brauche nix cross-compiler, gcc reicht ;-) ? gcc=gnu-cross-compiler
Zuletzt geändert von rendegast am 16.05.2006 01:39:53, insgesamt 1-mal geändert.

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 15.05.2006 23:26:08

ja, aber mit welchem Kernel hast du das gemacht? Ich habe ein kernel mit einem softgunpatch gepatched! Das muss ich machen, damit auch mein Mikrocontroller drin ist!

siehe:

http://gentoo-wiki.com/HOWTO_Softgun_ARM_Emulator
Zuletzt geändert von Fileshäring am 15.05.2006 23:42:33, insgesamt 1-mal geändert.
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 15.05.2006 23:41:19

Mit 2.6.16-vanilla, gcc-3.3.5 (sarge)

'get_kernel_version arch/i386/boot/bzImage': 2.6.16-ARM

Habe gerade softgun-0.13 geladen, das ist aber vermutlich nicht der Patch, den Du erwähnt hast. Es kompiliert mir ein binary 'softgun', mit dem ich allerdings nix anzufangen weiss. Scheint eine Art firmware-loader zu sein?

EDIT: habe jetzt den NS9750-Patch.
aus dem README:
...
Both expect a usr/intramfs_data.cpio archive
which contains the root filesystem. If you do not want to boot
using initramfs change the kernel configuration.
...

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 16.05.2006 10:06:55

Hmmmmmmm.... das habe ich aber irgendwie nicht finden können!

Wo genau kann ich dies den einstellen?
Wenn ich in General setup gehe, sehe ich nix von initrd?!

Verstehe ich das schon richtig, das initrd praktisch, das root Verzeichnis auf dem RAM anlegt? Was währe denn die alternative? Ich meine, ich habe keine Festplatte zu verfügung!

Mein Konzept sieht so aus:

-U-boot startet und initialisiert das Board! Hab ich eingerichtet und läuft jetzt auch
-U-Boot soll den Linux Kernel aus dem Flash in den Ram entpacken und zum ausführen bewegen.

Nun, ja. Wie auch immer! Wie kann ich dieses initramfs_data.cpio.gz erzeugen?
Ich habe mir mal die Doku im Kernel angesehen, bin aber nicht wirklich schlauer geworden.
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 16.05.2006 15:13:44

Hallo,
Nun, ja. Wie auch immer! Wie kann ich dieses initramfs_data.cpio.gz erzeugen?
das ist der Knackpunkt.
Die Erzeugung dieser Datei ist nur ein Zwischenschritt, bei mir wird sie immer angelegt und ist fast leer:
  • /dev/console
    /root
da INITRAMFS_SOURCE_FILES="" (die Erzeugung eines initramfs übernimmt ja mkinitrd, und Du wirst wohl überhaupt keine initrd brauchen.)

Ist Deine heruntergeladene KernelSource in Ordnung? ('gpg --verify ...')
Ist der entpackte Inhalt noch in Ordnung? Vielleicht wurde etwas gelöscht/beschädigt.

Kompiliert die vanilla-source für irgendein arm-System? (und bleibt nicht dort hängen)
Dann könnte es an diesem Patch liegen.
Das Patch, mit dem ich hier experimentierte, war für Kernel 2.6.14. Vielleicht funktioniert es besser?


----------------------
Was ich da gestern kompiliert habe, war wohl Unfug, sorry.
Beim 'make zImage/bzImage' habe ich 'ARCH=arm' nicht eingesetzt und wegen der fortgeschrittenen Uhrzeit wohl einfach durch den anschliessenden config-i386-Dialog bestätigt ohne irgendwas zu merken.
Ich kann auch momentan nicht weiter nachvollziehen, da mein 'make ARCH=arm zImage' abbricht mit "...Kenne kein little/big-endian...usw..."

EDIT: Erstelle mir nun doch noch die cross-compiler-suite.
Zuletzt geändert von rendegast am 16.05.2006 21:27:22, insgesamt 1-mal geändert.

Benutzeravatar
Fileshäring
Beiträge: 265
Registriert: 27.10.2004 10:52:17

Beitrag von Fileshäring » 16.05.2006 21:13:07

Das eine Image habe ich jetzt hin bekommen! :D

das von softgun! Ich hatte was vergessen :

Also we need to create an empty file usr/initrd.image that will work as a fake root image that the kernel will expect to boot from:

$ touch usr/initrd.image


tja... es war wohl doch schon spät! ich habe dies gemacht und siehe da.... es ist durch gelaufen!

Leider läuft der andere Kernel nicht! in diesem Patch sind die Treiber besser...

Ich muss mir das jetzt erst nochmal in Ruhe ansehen, wahrscheinlich werde ich ein wenig manuell patchen müssen!

Aber vielen vielen Dank für deine Unterstützung! Ich melde mich und reporte wie es gelaufen ist!
Mein System:
Intel 800MHz
374MB RAM
60GB IBM IC35L060AVER07-0
160GB Samsung SP1604N
Elsa Erazor
Motherboard:M6VCG Rev1.1

Antworten