Kann ich feststellen, ob mein benutzerdefinierter Kernel mit Modulunterstützung erstellt wurde?

Kann ich feststellen, ob mein benutzerdefinierter Kernel mit Modulunterstützung erstellt wurde?

Ich habe eine vom Hersteller bereitgestellte minimale Linux-Installation erhalten. Aus einer Antwort auf eine vorherige Frage habe ich erfahren, dass es möglich ist, einen Kernel mit oder ohne Modulunterstützung zu erstellen. Ich muss ein CANBUS-Gerät anschließen, das mit Treibern in Form von .ko-Dateien geliefert wird. Ich möchte diese mit den bereitgestellten Installationsskripten installieren können, aber zuerst muss ich wissen, ob mein Kernel mit Modulunterstützung erstellt wurde. Kann ich dies über die Befehlszeile feststellen?

Beim Ausführen lsmodwird nichts zurückgegeben, sodass ich weiß, dass momentan keine .ko-Dateien vorhanden sind. Bedeutet dies jedoch, dass der Kernel mir die Installation einer .ko-Datei nicht erlaubt?

Antwort1

/procWenn Sie ein Dateisystem haben , /proc/modulesexistiert die Datei genau dann, wenn der Kernel mit Modulunterstützung kompiliert wurde. Wenn die Datei existiert, aber leer ist, unterstützt Ihr Kernel Module, aber im Moment sind keine geladen. Wenn die Datei nicht existiert, kann Ihr Kernel kein Modul laden.

Es ist technisch möglich, ladbare Module ohne zu unterstützen /proc. Sie können das Vorhandensein der Systemaufrufe init_moduleund delete_modulein der Kernel-Binärdatei überprüfen. Dies ist möglicherweise nicht einfach, wenn Sie nur eine komprimierte Binärdatei haben (z. B. vmlinuzoder uImage). SieheWie entpacke ich vmlinuz nach vmlinux?für vmlinuz. Wenn Sie es geschafft haben, den Großteil des Kernels zu dekomprimieren, suchen Sie nach der Zeichenfolge sys_init_module.

Beachten Sie, dass Sie, wenn Module unterstützt werden, trotzdem zusätzliche Dateien benötigen, um Ihre eigenen Module zu kompilieren:Kernel-Header. Dies sind C-Headerdateien ( *.h), von denen einige beim Kompilieren des Kernels generiert werden (Sie können sie also nicht einfach aus den Kernelquellen übernehmen). SieheWas enthält ein Kernel-Quellcodebaum? Hat dies etwas mit Linux-Kernel-Headern zu tun?

Antwort2

Die meisten Distributionen speichern irgendwo eine Textdatei mit der Kernelkonfiguration. Auf einem Debian-System finden Sie sie in /boot/config-<kernel_version>.

Anschließend können Sie grepfür die Datei einfach Folgendes ausführen:

grep CONFIG_MODULES /boot/config-<kernel_version>

verwandte Informationen