"unknown symbol" beim laden von kernel-modulen

Wie lange würde es dauern, ein neues Image zu erstellen?
Wie lange wartest Du jetzt schon auf eine Antwort?
Länger als Du auf das neue Image gewartet hättest.

Woher kommt das /lib/firmware?

Außerdem hatte ich weiter oben noch eine andere Möglichkeit genannt.
 
Halt ein junger Recke ! Um die Situation beurteilen zu können, mußt schon alles wissen ;-)

ad1)
Die Neuerstellung versuche ich parallel seit Tagen, außer einem ERROR: kernel image is too big gibt hier keine verwertbaren Ergebnisse.
Auch dann, wenn das Freetz Image ohne auch nur einem Paket etc erstellt wird. Aber das ist ein anderen Thema ...
Hardware: 7270er Box, 16Mb Flash
Freetz Version: Release 1.1 oder wahlweise aktueller Trunk

ad2)
Der Prefix lib kommt vom Kernel Modul Support
Der Prefix firmware kommt vom Firmware Subsystem
Der Prefix zd1211 kommt vom Treiber
Der Filename zd1211b_ub resultiert aus der Kombination VID und PID

Macht in Summe /lib/firmware/zd1211/zd1211b_ub ;-)

ad3)
Ich sitz nicht da und warte auf Antwort, sondern anaylsiere weiter und lasse alle Interessierten an den Erkenntnissen teilhaben (siehe ad2) !

ad4)
Mounts sind schon ne feine Sache, helfen aber innerhalb eines Read Only Filesystems nicht wirklich weiter ...
Laß mich aber gerne eines Besseren belehren. Benötigt wird ein Link von /lib/firmware auf /var/tmp/firmware
BTW: Ein remount des squashfs als rw geht leider auch nicht.

ad5)
Auf den Prefix des Firmware Pfads läßt sich nach letzten Infos über das durch den User Event Handler aufgerufene
Script /sbin/hotplug über eine Variable Einfluß nehmen ...

Hat da wer einen Tip für mich ?

Danke Euch schon mal ...
 
Wenn Du eine 16MB Box zu hast, dann muß aber eine ganze Menge im Image sein. Irgendwann hast Du ja mal ein Image hinbekommen. Oder ist die Datei zd1211b_ub so groß, daß die 16MB überschritten werden?

Ich wollte in diesem Fall nicht andeuten, daß Du sitzt und gar nichts tust, soviel Initiative wie bei Dir gibt es selten. Es gibt andere, die hätten geschrieben "Kann mir mal jemand das fertige Modul zur Verfügung stellen" ...
Die Frage ist aber, ob es sinnvoller ist, stundenlang zu analysieren, wie man die Datei von anderswo laden kann, oder in der Zeit schon etliche Images erstellt haben könnte, in denen die Datei am vorgesehenen Platz ist.
Zumindest weißt Du inzwischen, wo die Pfade herkommen. Und es sieht nicht danach aus, als könnte man das so einfach ändern. Hotplug wird Dir vermutlich nicht helfen, weil das für das Laden der Module da ist und nicht für das Laden der Firmware. Wenn der Pfad /lib/firmware aus einem Modul kommt, dann kannst Du versuchen, das Modul neu zu erstellen. Ansonsten bräuchtest Du einen neuen Kernel.

Ich spreche von "mount --bind". Damit kann man einen Eintrag (Datei oder Verzeichnis) mit einem anderen überlagern, aber leider keinen neuen erstellen. Da /lib/firmware nicht existiert, heißt das, daß /lib überlagert werden muß. Und das bedeutet, daß man alle Libraries vorher ins RAM kopieren muß, was auch auf einer 7270 eng werden könnte.

Ein squashfs ist nicht dafür gedacht, daß es rw gemountet werden kann, es wird einmalig erstellt, ähnlich wie die ISO-Dateisysteme für CD-ROMs.
 
Joo, das laufende Image habe ich mit einer relativ alten Revision gebaut, war so ca. 10MB groß.

Ursprünglich wollte ich "mal schnell" mittels der aktuellen Revision ein neuen Image incl. aller benötigten File bauen und gut isses ...
Wie so oft, war das wohl nix mit "mal schnell ..." :( Zu diesem Thema mach ich dann mal nen eigenen Thread auf.
Ausgabe siehe unten, er behauptet immer 27MB (!) obwohl nicht ein Paket etc angewählt ist ... Hab da inzwischen schon das Host OS im Verdacht ...

Code:
merging kernel image
  kernel image size: 27456000 (max: 16121856, free: -11334144)
ERROR: kernel image is 11334144 bytes too big. See http://trac.freetz.org/wiki/FAQ#Filesystemimagetoobig for details
make: *** [firmware-nocompile] Error 1

Zurück zum Thema:
Der Treiber fordert über das Firmware Subsystem das passende Firmware File an.
Laut Kernel Doku (Documentation/firmware_class/hotplug-script) wird im User Space dieses Script angezogen und
kann zum Laden eines Firmware Images so aussehen (siehe Zeile 7)

Code:
#!/bin/sh
  2 
  3 # Simple hotplug script sample:
  4 # 
  5 # Both $DEVPATH and $FIRMWARE are already provided in the environment.
  6 
[B]  7 HOTPLUG_FW_DIR=/lib/firmware/[/B]
  8 
  9 echo 1 > /sys/$DEVPATH/loading
 10 cat $HOTPLUG_FW_DIR/$FIRMWARE > /sys/$DEVPATH/data
 11 echo 0 > /sys/$DEVPATH/loading
 12 
 13 # To cancel the load in case of error:
 14 #
 15 #       echo -1 > /sys/$DEVPATH/loading
 16 #

Aktuell sieht das Script auf der Box so aus. Wobei im Falle eines USB User Events letztendlich /etc/hotplug/usb.pandu aufgerufen wird.

Code:
#!/bin/sh

# User mode helper for kernel hotplug events:
# Calling pandu (= plug and unplug) agent...
# v20050422 =OS=

GUARD=/var/DONTPLUG
AGENT=/etc/hotplug/$1.pandu

if test -f $GUARD; then
        exit 1
elif test -x $AGENT; then
        exec $AGENT "$*"
        exit 1
fi

Joo, an die Option das komplette /lib zu überlagern, hatte ich auch schon gedacht, hat aber leider im RAM nicht Platz ...

Klar ist ein neues Image die schnellere und einfachere Option (wenn es denn laufen würde), keine Frage,
jedoch ist der Ergeiz und Ansporn, das mit dem Vorhanden zu lösen, größer :cool:

Mein Ansatz wäre nun im proc Filesystem den Kernelpointer auf /sbin/hotplug zu ändern in/var/tmp/sbin/hotplug,
um das modifizierte Script ablegen und verwenden zu können ...

Schau mer mal, ich halt euch auf dem Laufenden ;)
 
Schönen Guten Morgen zusammen

Nach einer Nachschicht hab ich jetzt geschafft, ein neues Freetz Image zu bauen.

Wie schon vermutet, war mein Build Host schuld an der Sache.
Hab die Maschine mit ner frisch installierten Lenny beglückt, schon liefs wieder durch ?! :confused::silly:

In meinem neuen Image sind nun auch die Firmware Files etc.
Wie vermutet mußte ich auch die /sbin/hotplug anpassen, damit er die Files auch anzieht:

Jetzt beglückt er mich mit dieser Meldung:

Code:
usb 1-1.2: new high speed USB device using musb_hdrc and address 13
usb 1-1.2: configuration #1 chosen from 1 choice
usb 1-1.2: print_id() 0ace:1215 v4810 high
zd1211rw 1-1.2:1.0: zd_netdev_alloc() netdev->flags 0x1002
zd1211rw 1-1.2:1.0: zd_netdev_alloc() netdev->features 0x00000000
usb 1-1.2: request_fw_file() fw name zd1211/zd1211b_ub
firmware_loading_store: unexpected value (0)
usb 1-1.2: upload_firmware() firmware device id 0x4810 is equal to the actual device id
usb 1-1.2: request_fw_file() fw name zd1211/zd1211b_uphr
firmware_loading_store: unexpected value (0)
usb 1-1.2: upload_code() transfer size 4096
usb 1-1.2: upload_code() transfer size 1024
usb 1-1.2: upload_code() firmware confirm return value 0x01
zd1211rw 1-1.2:1.0: zd_usb_enable_int()
zd1211rw 1-1.2:1.0: zd_usb_enable_int() submit urb 95e56980
zd1211rw 1-1.2:1.0: zd_chip_init_hw()
zd1211rw 1-1.2:1.0: zd_usb_ioread16v() read timed out
zd1211rw 1-1.2:1.0: zd_ioread32v_locked() error: zd_ioread16v_locked. Error number -145
zd1211rw 1-1.2:1.0: dump_cr() error reading CR_AFTER_PNP. Error number -145
zd1211rw 1-1.2:1.0: zd_usb_disable_int() urb 95e56980 killed
zd1211rw 1-1.2:1.0: probe() couldn't initialize mac. Error number -145
usb 1-1.2: reset high speed USB device using musb_hdrc and address 13
zd1211rw: probe of 1-1.2:1.0 failed with error -145
usb 1-1.2: device_add(1-1.2:1.0) --> -145

Any hints ??

Danke Euch schon mal
 
@RalfFriedl Was ist Google ? :cool:

Im Ernst, sieht wohl so aus als wäre das ein Timing Problem (nur bei MIPS Architektur) auf dem USB Bus, da es ein High Speed Device ist.
Mit einem USB 1.1 Hub zwischen Box und Stick sollte das Problem gelöst sein ...

Dachte, das wäre (weils MIPS betrifft) hier von Interesse bzw. evtl. schon bekannt.

Schönes WE
 
Ich würde mal danach suchen: "firmware_loading_store: unexpected value (0)"

Meine Vermutung ist, daß das Laden der Firmware nicht funktioniert und das danach eine folge davon ist.
 
Nochmal zum ursprünglichen Problem zurück. Deaktiviert man die Kindersicherung, so stürzt die Box bei Internet-Verbindung ab. Ich habe herausgefunden, dass dies auch beim entfernen (rmmod) des Moduls userman_mod passiert (erst Segfault, dann Reboot), nicht jedoch beim bloßen Beenden vom usermand Daemon.
Man kann die KiSi deaktivieren und usermand entfernen, muss jedoch dafür sorgen, dass userman_mod vor Aufbau der Verbindung geladen wird (temporär über Eintrag in mod/modules, permanent evtl. über Eintrag in rcS?).
 

Neueste Beiträge

Statistik des Forums

Themen
246,157
Beiträge
2,247,061
Mitglieder
373,677
Neuestes Mitglied
MK34
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.