2012-06-23 29 views
5

我試着用make defconfig來編譯內核,但是正如所料,它啓動失敗。我想知道爲Ubuntu使用Canonical這樣的內核供應商的.config文件,內核能夠立即啓動。當然,我仍然是一名初學者,並且配置了各種參數,目前我的聯盟有點不合適。如何獲得正確的.config文件來編譯特定於我的硬件的Linux內核源代碼?

具體來說,我正在尋找加載一個基本的「你好,世界!」模塊到我運行的內核2.6.32.41。爲此,我需要針對用於運行內核的.config文件編譯內核源代碼。

回答

5

我不知道如何獲得「正確適用於您的硬件」的配置,但是您可以使用Ubuntu提供的配置,通過在/boot/中查找以名稱config開頭的文件。可能有多個,在這種情況下,使用命令uname -r來告訴您當前正在運行哪個內核,然後可以使用相應的配置。

0

「defconfig」通常固定在常用的硬件 - x86或x86_64上,也許不是最新的芯片組或主板。有時候,像我的聯想筆記本電腦一樣,只有最新的內核源代碼,並且在啓用一些配置選項後,在搜索bugzilla數據庫之後,它會起作用。

與Jeff Welling所說的一樣,要使用配置,您可以查看/ boot目錄下的內容。我的Fedora Core也一樣。但是,如果你想編譯一個基本的程序作爲「內核模塊」,並且它只是意味着「可加載內核模塊」,你不需要編譯內核源代碼。你只需要當前版本的內核頭文件。例如,「容易緩存搜索」在Ubuntu 10.04的回報幾種可能的選項:

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

Ubuntu的正常修補現有的內核(來自kernel.org)擁有自己的內核。如果你已經下載了股票內核,並嘗試使用/ boot的配置文件(或者有時你可以找到當前加載的配置爲/proc/config.gz,例如基於10.04 LTS的Backtrack的Ubuntu),那麼你可能需要使用名爲「.config」的當前配置文件執行「make oldconfig」。 「make oldconfig」將使用.config生成一個與內核源代碼兼容的新.config。

13

如果您運行的內核是用CONFIG_IKCONFIG_PROC選項編譯,你可以得到的配置在/proc/config.gz

$ zcat /proc/config.gz >my_config 

複製my_config到您的內核構建目錄.config和運行make config被提示是配置選項缺少您的配置文件(只有在您使用比運行內核更新的內核源時纔會發生這種情況)。然後,您應該能夠編譯一個與當前版本具有相同功能的新內核。

發行版通常使用它們自己的內核配置,其中大多數驅動程序被編譯爲需要相應硬件時動態加載的模塊。此外,內核需要使用相關的引導選項(如指定根文件系統的引導選項)來引導。因爲你的defconfig內核可能無法啓動。

5

選項1:

你引導的系統源代碼

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

這將產生的.config

sudo make oldconfig; 
vi .config 

選項2:

zcat /proc/config.gz > my_config 

選項3:

echo /boot/config* > my_config 
+0

有時.oldconfig位於內部 坎德拉/ usr/src目錄/內核; – ashish

相關問題