2012-06-23 2 views
5

Ich habe versucht, make defconfig zu verwenden, um den Kernel zu kompilieren, aber wie erwartet, konnte es nicht gestartet werden. Ich habe mich gefragt, welche .config-Datei Kernel-Hersteller wie Canonical für Ubuntu verwenden, dass der Kernel in der Lage ist, direkt aus der Box zu booten. Natürlich bin ich noch ein Anfänger und konfiguriere die verschiedenen Parameter, ist momentan ein wenig außerhalb meiner Liga.Wie bekomme ich die richtige .config-Datei zum Kompilieren der Linux-Kernel-Quelle, die für meine Hardware spezifisch ist?

Speziell, ich bin auf der Suche nach einem einfachen "Hallo, Welt!" Modul zu meinem laufenden Kernel 2.6.32.41. Dazu müsste ich die Kernel-Quelle gegen die gleiche .config-Datei kompilieren, die für den laufenden Kernel verwendet wurde.

Antwort

5

Ich weiß nicht über das Erhalten der, die "für Ihre Hardware" korrekt ist, aber Sie können die Konfiguration verwenden, die Ubuntu Ihnen gibt, indem Sie in /boot/ nach einer Datei suchen, die mit dem Name config beginnt. Es kann mehr als einen geben, in diesem Fall verwenden Sie den Befehl uname -r, um zu ermitteln, welchen Kernel Sie gerade ausführen, und dann können Sie die entsprechende Konfiguration verwenden.

0

"Defconfig" ist in der Regel an der häufig verwendeten Hardware - x86 oder x86_64 und vielleicht nicht so aktuellen Chipsatz oder Motherboard gekoppelt. Manchmal, wie bei meinem Lenovo Laptop, funktioniert nur die neueste Kernel-Quelle und wenn ich eine Konfigurationsoption aktiviere, nachdem ich durch die Bugzilla-Datenbank gegoogelt habe.

Wie Jeff Welling sagte, um die Konfiguration zu verwenden, können Sie unter/boot-Verzeichnis suchen. Das Gleiche gilt auch für meinen Fedora Core. Wenn Sie jedoch ein Basisprogramm als "Kernelmodul" kompilieren wollen, und damit einfach "ladbares Kernelmodul" bedeutet, müssen Sie die Kernelquelle nicht kompilieren. U brauchen nur die Kernel-Header für diese aktuelle Version. Zum Beispiel: "apt-cache search" in Ubuntu 10.04 kehrt mehrere mögliche Option:

linux-headers-2.6.38 - Header files related to Linux kernel, specifically, 
linux-libc-dev - Linux Kernel Headers for development 

Ubuntu gepatcht normalerweise den Standard-Kernel (von kernel.org) ihre eigenen Kernel zu haben. Wenn Sie den Aktien-Kernel heruntergeladen haben und versuchen, die Konfigurationsdatei von/boot zu verwenden (oder manchmal die aktuell geladene Konfiguration als /proc/config.gz finden, wie das Backtrack-Ubuntu, das auf 10.04 LTS basiert), dann u Möglicherweise müssen Sie "make oldconfig" mit der aktuellen Konfigurationsdatei namens ".config" ausführen. "make oldconfig" wird dann mithilfe der .config-Datei eine neue .config-Datei generieren, die mit der Kernel-Quelle kompatibel ist.

13

Wenn Sie Ihr laufender Kernel mit der CONFIG_IKCONFIG_PROC Option kompiliert wurde, können Sie die config in /proc/config.gz erhalten:

$ zcat /proc/config.gz >my_config 

Kopieren my_config in den Kernel zu kompilieren als .config und make config laufen für Konfigurationsoptionen aufgefordert werden, die abwesend in Ihrer Konfigurationsdatei (dies wird nur passieren, wenn Sie eine Kernel-Quelle verwenden, die neuer ist als Ihr laufender Kernel). Sie sollten dann in der Lage sein, einen neuen Kernel mit den gleichen Funktionen wie Ihr aktueller zu kompilieren.

Distros verwenden in der Regel ihre eigene Kernel-Konfiguration, wobei die meisten Treiber als Module kompiliert werden, die dynamisch geladen werden, wenn die entsprechende Hardware angefordert wird. Außerdem muss der Kernel mit relevanten Boot-Optionen (wie dem, der das Root-Dateisystem spezifiziert) gestartet werden. Ihr defconfig-Kernel konnte deshalb wahrscheinlich nicht booten.

5

option1:

Quellcode Ihrer gestiefelten System

cd /usr/src/linux-headers-3.2.0-29; 

diese .config generieren

sudo make oldconfig; 
vi .config 

option2:

zcat /proc/config.gz > my_config 

option3:

echo /boot/config* > my_config 
+0

irgendwann ist .oldconfig befindet sich innerhalb cd/usr/src/kernel; – ashish

Verwandte Themen