
Als Titel habe ich zwei vmlinuz-Dateien für ein eingebettetes System hängen.
Und ich habe weder den Quellcode noch den Compiler dafür, und der Entwickler dieses eingebetteten Systems arbeitet auch nicht mehr.
Das erste vmlinuz unterstützt 4 serielle Com-Ports und zwei VGA.
Das zweite vmlinuz unterstützt 6 serielle COM-Anschlüsse und einen VGA.
Ich möchte ein vmlinuz haben, das 6 serielle COM-Anschlüsse und zwei VGA unterstützt.
Gibt es eine Möglichkeit, den Treiber vom zweiten vmlinuz in den ersten vmlinuz zu kopieren und den Originaltreiber im ersten vmlinuz zu ersetzen?
Antwort1
Gibt es eine Möglichkeit, den Treiber vom zweiten vmlinuz in den ersten vmlinuz zu kopieren und den Originaltreiber im ersten vmlinuz zu ersetzen?
Abgesehen von umfangreichem Reverse Engineering und binären Patches, nein.
Ich möchte einen haben,
vmlinuz
der 6 serielle COM-Anschlüsse und zwei VGA unterstützt.
Ohne die Quellen ist dies höchstwahrscheinlich nicht zu erreichen.
Selbst wenn Sie über die Quellen verfügen, lässt die Tatsache, dass zwei Kernel mit unterschiedlichen Fähigkeiten angeboten werden (z. B. Kompromiss zwischen Seriell und VGA), darauf schließen, dass möglicherweise eine Hardwarebeschränkung vorliegt (FPGA-/CPLD-Ressourcen?).
Ohne zu wissen, um welches Gerät es sich handelt, können wir nur spekulieren.
Wenn der Gerätehersteller Quellen für das BSP veröffentlicht hat (z. B. Yocto), können Sie es möglicherweise von dort aus einsehen - aber Sie müssen wahrscheinlich trotzdem kompilierenetwas.
Wenn das Gerät von einem Mainline-Kernel unterstützt wird (d. h. alle Quellen sind imkernel.org-Repository), dann haben Sie möglicherweise die Möglichkeit, die Konfiguration neu zu erstellen und neu aufzubauen.
- Booten Sie das System und führen Sie es aus
uname -r
- dies ist die Kernel-Version- Beispielsweise
4.15.0-48-generic
weist auf dieVersion 4.15freigeben
- Beispielsweise
- Suchen Sie nach einer Datei mit dem Namen
/proc/config.gz
- auf einem eingebetteten oder neueren System existiert diese möglicherweise nicht- Dies kann mit dekomprimiert
gzip -d < /proc/config.gz > ~/config
und anschließend bei der Konfiguration des Kernels verwendet werden. - Dies ist nur verfügbar, wenn der Kernel entsprechend konfiguriert ist
- Distributionen deaktivieren es immer häufiger für "Sicherheitsbedenken"
- Auf einem eingebetteten System kann es deaktiviert werden, um die Größe des Kernel-Images zu reduzieren.
- Dies kann mit dekomprimiert
Sie können außerdem unter anderem hier nach der Kernelkonfiguration suchen: /boot
und in einem entsprechenden Paket (wenn Sie eine Distribution verwenden).
Wenn einer oder beide dieser Schritte zu keinem Ergebnis führen, haben Sie wahrscheinlich Pech gehabt.