Anzeige:
Ergebnis 1 bis 8 von 8

Thema: bzImage zerlegen, Treiber hinzufügen und neu packen/compiliern

  1. #1
    Registrierter Benutzer
    Registriert seit
    Sep 2018
    Beiträge
    4

    bzImage zerlegen, Treiber hinzufügen und neu packen/compiliern

    Hallo zusammen,

    ich habe zurzeit ein für mich eher komplexes Problem und lerne täglich viel neues über Linux und dessen Kernel Da ich nichts passendes im Internet gefunden habe, hoffe ich, dass ich euer Schwarmwisen nutzen kann.

    Meine Fragestellung reduziert sich auf folgendes Thema: ich habe eine bzImage-Datei, in der eine initramfs-Datei enthalten ist. Bisher war ich der Meinung, dass diese bzImage-Dateien nur den Kernel samt Modulen umfassen, aber dem ist wohl nicht so. Jedenfalls soll das bzImage von einer eMMC gebootet werden, was nicht funktioniert. Ich tippe darauf, dass der Treiber hierfür fehlt (ist wohl ein Embedded-Linux) und versuche diesen "nachzureichen". Schlussendlich müssen alle Dateien auf diese eMMC und von dort aus gebootet werden, da der kleine Rechner, den ich hier habe nur diesen internen Speicher hat. Das bzImage habe ich nicht selbst erzeugt, sondern es so auf einer Embedded-Kiste vorgefunden. Die Sourcen liegen mir leider auch nicht vor, kann also den Build-Prozess nicht einfach nochmal anstoßen.

    Ganz naiv gefragt: Kann man in ein bzImage "einfach so" ein Treiber injizieren, oder dass man das Paket komplett zerlegen muss?

    Wenn nein -- wovon ich ausgehe -- wie kann ich das Paket sinnvoll zerlegen, den Treiber einbauen und dann erneut packen, dass es im Anschluss lauffähig ist? Kann mir hier jemand helfen?

    Ich habe schon ein paar Anleitungen (stackexchange.com, gentoo.org) gefunden, die via binwalk das Paket halbwegs zerlegbar macht. Aber wie bekomme ich das wieder sinnvoll zusammen?

    Hier noch zwei Auszüge:
    Code:
    mws200:~/Desktop//Foo # file bzImage 
    bzImage: Linux/x86 Kernel, Setup Version 0x20d, bzImage, Version 4.1.4 (root@srv238) #2 SMP Thu Feb 9 12:29:53 CET 2017, RO-rootFS, swap_dev 0x4B, Normal VGA
    
    mws200:~/Desktop//Foo # binwalk bzImage                                                                    
                                                                                                               
    DECIMAL       HEXADECIMAL     DESCRIPTION                                                                  
    --------------------------------------------------------------------------------
    15993         0x3E79          gzip compressed data, maximum compression, from Unix, NULL date (1970-01-01 00:00:00)
    14084064      0xD6E7E0        MySQL MISAM compressed data file Version 2
    14766291      0xE150D3        StuffIt Deluxe Segment (data): fm                                                                                                                 
    51888228      0x317C064       IMG0 (VxWorks) header, size: 1530639172                                                                                                                 
    53500378      0x33059DA       gzip compressed data, has header CRC, has 15753 bytes of extra data, last modified: 1996-12-09 06:17:48                                                       
    61944139      0x3B1314B       Zip archive data, at least v2.0 to extract, compressed size: 46280, uncompressed size: 95232, name: pip/_vendor/distlib/t64.exe                                   
    62011789      0x3B2398D       Zip archive data, at least v2.0 to extract, compressed size: 44958, uncompressed size: 88576, name: pip/_vendor/distlib/w32.exe
    62056819      0x3B2E973       Zip archive data, at least v2.0 to extract, compressed size: 45442, uncompressed size: 92160, name: pip/_vendor/distlib/w64.exe
    62102328      0x3B39B38       Zip archive data, at least v2.0 to extract, compressed size: 9466, uncompressed size: 39035, name: pip/_vendor/distlib/wheel.py
    62915012      0x3C001C4       Zip archive data, at least v2.0 to extract, compressed size: 39173, uncompressed size: 74752, name: setuptools/cli-64.exe
    62954246      0x3C09B06       Zip archive data, at least v2.0 to extract, compressed size: 37481, uncompressed size: 69120, name: setuptools/cli-arm-32.exe
    62991792      0x3C12DB0       Zip archive data, at least v2.0 to extract, compressed size: 35966, uncompressed size: 65536, name: setuptools/cli.exe
    63040659      0x3C1EC93       Zip archive data, at least v2.0 to extract, compressed size: 701, uncompressed size: 1821, name: setuptools/extension.py
    63041418      0x3C1EF8A       Zip archive data, at least v2.0 to extract, compressed size: 36047, uncompressed size: 65536, name: setuptools/gui-32.exe
    63077526      0x3C27C96       Zip archive data, at least v2.0 to extract, compressed size: 39307, uncompressed size: 75264, name: setuptools/gui-64.exe
    Bin über jede Hilfe oder über jeden Tipp dankbar!
    Geändert von s.h.a.r.k (25.09.18 um 13:43 Uhr)

  2. #2
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Ich würde vorschlagen, du kompilierst den Kernel einfach neu. Die passende Config solltest du auf dem System finden, von dem du den Kernel genommen hast. Entweder liegt sie dort irgendwo rum (vermutlich in /boot) oder du kannst sie über /proc/config.gz auslesen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Sep 2018
    Beiträge
    4
    Zitat Zitat von DrunkenFreak Beitrag anzeigen
    Ich würde vorschlagen, du kompilierst den Kernel einfach neu. Die passende Config solltest du auf dem System finden, von dem du den Kernel genommen hast. Entweder liegt sie dort irgendwo rum (vermutlich in /boot) oder du kannst sie über /proc/config.gz auslesen.
    Ich habe das bzImage selbst nicht erzeugt. Ich habe auch keinen Zugriff auf die Sourcen oder die Config. Mir liegt nur die Embedded-Kiste vor, auf dem die kompilierte bzImage-Datei (samt weiteren Daten) drauf ist, die auf die eMMC eines anderen Rechners sollen. Das erneute Compilieren hätte ich sonst schon gemacht

  4. #4
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Dann verbinde dich auf die "Embedded-Kiste" und lies dort die Config aus.

    Wenn es alles nichts hilft, musst du den Kernel wohl von Grund auf neu konfigurieren und dann kompilieren. Die Version hast du ja oben stehen.

  5. #5
    Registrierter Benutzer
    Registriert seit
    Sep 2018
    Beiträge
    4
    Zitat Zitat von DrunkenFreak Beitrag anzeigen
    Dann verbinde dich auf die "Embedded-Kiste" und lies dort die Config aus.
    Meinst du damit, nachdem das bzImage gebootet ist, kann ich die Config auslesen?

  6. #6
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.551
    Jetzt mal Butter bei die Fische:

    Welches Embedded-System (genau bitte!) bootet nicht das bzImage welches Systems?

  7. #7
    Registrierter Benutzer
    Registriert seit
    Sep 2018
    Beiträge
    4
    Dann hole ich mal ganz aus und erzähle die komplette Geschichte. Ich versuche einen Rechner zu klonen. Dieser kommt von Meyton, einem Hersteller elektronischer Schießanlagen (in meinem Fall für Luftdruckwaffen). Es gibt dort einen "DisplayController", ein kleiner x86-Rechner (Embedded-Rechner von Kontron), welchen man an ein Netzwerk anschließt und der eine Zusammenfassung auf z.B. einem Beamer darstellt. Dieser hat eine eingebaute CompactFlash-Karte, auf der alle Meyton-spezifischen Dateien inkl. der bzImage-Datei liegen.

    Nun habe ich es geschafft alles auf meinen Minix Z83-4 zu klonen. GRUB erkennt die eMMC und lädt auch den Kernel, ABER der Kernel selbst erkennt die eMMC nicht und so scheitert der Boot-Prozess dieses Software-Pakets. Ich gehe daher davon aus, dass der Treiber für die eMMC fehlt. Weiterer Hinweise hierfür wäre, dass wenn die Meyton-Software auf einem USB-Stick liegt, ich sie auf der Minix-Kiste booten kann. Verbinde ich mich dann via SSH erscheint unter /dev/ kein mmcblk0, etc.

    Daher der Gedanke, dass ich den Treiber für die eMMC "nachliefern" will. An der Stelle habe ich gemerkt, dass quasi alles in der bzImage-Datei steckt. Da ich selbst die bzImage-Datei nicht erzeugen kann, da mir hierfür auf den ersten Blick alles fehlt, dachte ich mir, dass es doch möglich sein muss, dass man die bzImage "zerlegt" (siehe binwalk), den Treiber hinzufügt und dann alles wieder zusammenfügt. Letztlich hatte ich gehoffe, dass es für sowas eine Art Anleitung gibt -- irgendwer hat das Problem sicher schon mal vor mir gelöst.

  8. #8
    Elefantenversteher Avatar von florian0285
    Registriert seit
    Jun 2016
    Beiträge
    1.054
    Aus dem Bauch heraus:
    Das System bootet von einem in den Kernel eingebettetem initramfs. Mit binwalk kannst du dieses extrahieren und dann bearbeiten.
    Also das CPIO Archiv entpacken, Treiber reinpacken und dann wieder packen.
    Guckst du hier
    Theoretisch könntest du das mit dd an die exakt selbe Stelle zurück schreiben. Du kannst aber auch ganz einfach die neue initrd als Parameter in Grub übergeben. Ein für dein eMMC kompatibles Kernelmodul zu bauen wäre dann das nächste. Vielleicht ist das Ding auch nur ge-blacklistet usw. da du das System ja booten kannst, kannst du ja darin rumwursteln.
    Matthäus 7:3 Was siehst du aber den Splitter in deines Bruders Auge, und wirst nicht gewahr des Balkens in deinem Auge?

Ähnliche Themen

  1. Unraid Treiber hinzufügen
    Von Paincookie im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 07.03.14, 20:17
  2. wicd: einen treiber hinzufügen
    Von Unicate im Forum Anbindung an die Aussenwelt
    Antworten: 0
    Letzter Beitrag: 27.01.09, 21:32
  3. Knoppix, Treiber hinzufügen
    Von nahemoth im Forum Linux Allgemein
    Antworten: 1
    Letzter Beitrag: 08.03.05, 19:12
  4. Treiber in kaputten Kernel packen?
    Von falky im Forum X-Konfiguration
    Antworten: 1
    Letzter Beitrag: 20.05.04, 14:28
  5. [ot]Warum packen treiberhersteller Linux treiber in exe datein ?[/ot]
    Von theborg im Forum Meldungen und Mitglieder
    Antworten: 12
    Letzter Beitrag: 20.04.04, 22:46

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •