Der Linux-Kernel make überschreibt immer meine .config / drop-Änderungen

1317
rudib

Ich versuche, einen benutzerdefinierten ARM-Kernel auf einem BeagleBone Black Wireless zu erstellen. Ich benutze diesen Kernel als Start

Ich habe die aktuelle .configDatei kopiert ( make localmodconfig) und sie manuell bearbeitet, um Unterstützung für das eingebaute WLAN-Modul hinzuzufügen (Änderungen von dort aus ).

Wenn ich make uImageoder andere Ziele renne, werden mir immer Fragen gestellt. Nach der Beantwortung wird das .configüberschrieben und einige Änderungen sind weg. Ich habe auch versucht, make olddefconfigwas ungefähr die gleichen Ergebnisse ohne die Fragen zeigte.

Änderungen vorgenommen:

CONFIG_WLAN=y CONFIG_WIRELESS=y CONFIG_WIRELESS_EXT=y CONFIG_WL12XX_PLATFORM_DATA=y  CONFIG_KEYS=y CONFIG_SECURITY=y CONFIG_CRYPTO=y  CONFIG_CRYPTO_ARC4=y CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_MICHAEL_MIC=y CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_CCM=y CONFIG_CRYPTO_GCM=y  CONFIG_RFKILL=y  CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_CRC7=y  # The following are needed for soft AP CONFIG_NETFILTER=y CONFIG_NETFILTER_ADVANCED=y CONFIG_NF_CONNTRACK=y CONFIG_NETFILTER_XTABLES=y CONFIG_NF_DEFRAG_IPV4=y CONFIG_NF_CONNTRACK_IPV4=y CONFIG_NF_CONNTRACK_PROC_COMPAT=y CONFIG_IP_NF_IPTABLES=y CONFIG_IP_NF_FILTER=y CONFIG_IP_NF_TARGET_LOG=y CONFIG_NF_NAT=y CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=y  CONFIG_INPUT_UINPUT=y  # Enable Ethernet-WLAN Bridge CONFIG_NETFILTER=y CONFIG_NETFILTER_ADVANCED=y CONFIG_BRIDGE_NETFILTER=y CONFIG_STP=y CONFIG_BRIDGE=y CONFIG_BRIDGE_IGMP_SNOOPING=y CONFIG_LLC=y CONFIG_INPUT_UINPUT=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_NLATTR=y CONFIG_AVERAGE=y 

Wie kann und kann ich das überspringen? Benötige ich einen anderen Kernel? Oder noch etwas tun? Danke für alle Hinweise.

0

1 Antwort auf die Frage

0
sawdust

Der Linux-Kernel make überschreibt immer meine .config / drop-Änderungen

Dies bedeutet, dass Sie wahrscheinlich keine gültige .config- Datei zum Erstellen eines Kernels haben.
Anscheinend haben Sie die von Ihnen erwähnte Anleitung nicht befolgt:

It is often easiest to start with a base default configuration and then customize it for you use case if needed. 

Wenn Sie tatsächlich eine " Basis-Standardkonfiguration " (z. B. den letzten Teil dieser Antwort) anstelle einer geheimen " aktuellen .config- Datei " verwendet hätten, wären Sie wahrscheinlich nicht auf solche Probleme gestoßen .


Ich habe die aktuelle .config-Datei (make localmodconfig) kopiert und manuell bearbeitet, um Unterstützung für das integrierte Wlan-Modul hinzuzufügen

Nein, das ist nicht die richtige Art, einen Linux-Kernel zu konfigurieren.
Die Verwendung einer .config- Datei aus einer älteren Kernel-Version hat wahrscheinlich veraltete Konfigurationsnamen und sollte einfach vermieden werden, wenn Sie sich nicht sicher sind, was Sie tun.
Andernfalls "verwenden Sie" make oldconfig ", wenn Sie Ihre vorhandene Konfiguration ohne großen Aufwand auf eine neue Version übertragen möchten. Sie werden nur nach Antworten auf neue Fragen gefragt " (Zitat aus der README-Datei des Linux-Kernels).

Wenn Sie nicht wirklich wissen, was Sie tun, führt das direkte Bearbeiten der .config- Datei möglicherweise dazu, dass abhängige und erforderliche Konfigurationsoptionen fehlen.


Benötige ich einen anderen Kernel? Oder noch etwas tun?

Sie haben sich für den Mainline-Kernel entschieden, der keine Defconfig-Datei speziell für den Beaglebone Black-SBC enthält.
Sie könnten mit einem generischen Build für ein TI AM335x-Board beginnen und dann mit der am335x-boneblack.dtb- Device-Tree-Datei booten

Beginnen Sie noch einmal mit dem Shell-Befehl

make mrproper 

oder

make distclean 

Stellen Sie sicher, dass sich Ihre Toolchain (Cross-Compiler usw.) in Ihrem PATH befindet, z

echo $PATH 

Legen Sie die Umgebungsvariable für die Architektur fest:

export ARCH=arm 

Legen Sie die Umgebungsvariable für das Toolchain-Präfix entsprechend der Installation fest, z

export CROSS_COMPILE=arm-linux-gnueabihf- 

Beachten Sie den nachfolgenden Bindestrich.

Installieren Sie eine generische Kernelkonfiguration für die TI Sitara-Produktlinie (anstelle einer bestimmten Beaglebone Black-Defconfig).

make omap2plus_defconfig 

Passen Sie den Kernel-Build mit einem geeigneten Konfigurationstool an:

make menuconfig 

Erstellen Sie dann das Kernel-Image, ladbare Module und Device Tree-Blob:

make uImage make modules make am335x-boneblack.dtb 

Weitere Informationen finden Sie in der README-Datei in der Linux-Kernel-Quelle.

Danke für deine Antwort! Ich denke, es ist die gleiche Kernel-Version (soweit ich weiß, habe ich es jetzt nicht mit ne). Obwohl make oldconfig mit neuen Konfigurationsoptionen aufgefordert wird. Ich überprüfe noch einmal. Aber wie kann ich zum Beispiel hinzufügen: `CONFIG_WL12XX_PLATFORM_DATA`, wenn es abfällt? Wird es nicht vom Kernel unterstützt? Ich habe die Treiber dafür im Treiberverzeichnis gefunden. rudib vor 7 Jahren 0
CONFIG_WL12XX_PLATFORM_DATA sieht nicht aus wie ein gültiges Symbol. Warum WL12xx? Die Anleitung, auf die Sie verwiesen haben, bezieht sich auf WL18xx. Welche "Fahrer" haben Sie gefunden? sawdust vor 7 Jahren 0
Es ist eine WL18XX, aber der Leitfaden dazu hat mir gesagt, dies zu ermöglichen. Es könnte ein Fehler sein. Aber warum wird es fallen gelassen? Vielleicht kommt es auf etwas an. Ich werde versuchen, die Option irgendwo im Config-Tool zu finden, aber haben Sie eine Idee, wie ich diese Option einfügen kann? Danke noch einmal! rudib vor 7 Jahren 0
Ein grep für den String "WL12XX_PLATFORM_DATA" in der 4.9-Kernel-Quelle findet keine Vorkommen. Sie können nichts aktivieren, was nicht existiert, und es ist Zeitverschwendung, da es in 4.9 nicht verwendet wird. sawdust vor 7 Jahren 0
Ja, brauche ich einen speziellen Kernel oder kann ich erwarten, dass der Gerätebaum richtig konfiguriert ist und die verfügbaren Optionen aktiviert sind? rudib vor 7 Jahren 0
Versuchen Sie, den 4.9-Kernel mit "Generic IEEE 802.11 Networking Stack (mac80211)" und "TI wl18xx support" zu konfigurieren. Und die .dts-Datei des Boards korrigieren. Schauen Sie sich ** am335x-evm.dts ** an, um ein Beispiel für einen WL18xx-Knoten zu erhalten. sawdust vor 7 Jahren 0