2011-06-10 32 views
3

我正在運行Fedora 14 64位。命令'make modules'不會構建所有模塊

我克隆了git的內核源代碼樹://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

大約一個星期前我編譯和升級從2.6.35到2.6.39內核,它去相當順利,我所做的就是很直接:

make menuconfig 
make oldconfig 
make -j8 
make modules_install && install 

然後,我添加一個虛擬系統調用(我用Linux內核開發的書下面這由羅伯特洛夫)並試圖再次編譯,它編譯的內核很好,但是當我發佈時:

[[email protected] Kernel]# make modules 
CHK  include/linux/version.h 
CHK  include/generated/utsrelease.h 
CALL scripts/checksyscalls.sh 
Building modules, stage 2. 
MODPOST 4 modules 

它只做了4個模塊,以前有超過2000個模塊。

我以爲這是我的虛擬系統調用導致的問題,我解開了所有的變化,並再次嘗試,結果相同。

再次,步驟我把爲:

make menuconfig 
make oldconfig 
make -j8 
make modules ----> suspicious 

我不知道是什麼原因造成這一點。

編輯: 多一點信息,我跑make clean重新編譯之前,但它仍然只取得4個模塊。 在某一點上,我做了modules_install,並檢查了/lib/modules/[ver],只有那4個模塊被複制到那裏。我應該停在那裏,但我繼續運行make install,無論如何,它安裝了內核,但無法啓動它。

編輯: 我剛剛下載從kernel.org的穩定版本(2.6.39.1),去通上面的步驟,同樣的事情發生了。這很奇怪。也許在我的系統中有一些東西搞砸了:(希望有人遇到過這個並且灑下一些光

+0

爲了讓人們知道您已找到解決方案,請進行第三次編輯,將其粘貼爲答案,然後單擊「接受」複選標記。 – 2011-06-11 21:48:29

+0

會這樣做,感謝您的幫助! – wliao 2011-06-13 13:49:33

回答

2

好吧,經過幾杯咖啡和大量的谷歌搜索,我不知道這一切是如何工作的,但看起來像我第一次升級內核時,.config基於運行內核的配置,它包括所有需要的模塊,因此它運行良好?然後在後續的編譯中,幾乎所有的模塊都沒有在.config中配置(除了上面提到的4)。長話短說,我用舊的.config和運行menuconfig做了額外的修改,似乎解決了我的問題。謝謝!

0

如果你不做一個「make clean」,以前的編譯結果仍然存在。你改變的代碼將被重建

+0

對不起,我應該提到我確實乾淨了,結果也一樣。 – wliao 2011-06-10 13:51:15

+0

你剛剛從哪裏下載了新下載的內核? – 2011-06-10 15:14:49

+0

嗨,我解壓縮到我的下載文件夾中,它是/home/wliao/Downloads/linux-2.6.39.1,但位置應該是不相關的? – wliao 2011-06-10 15:29:42

0

也許只有這四個模塊纔會依賴於你所觸摸的文件如果你想確認這個,請執行一個make clean然後再試一次,看看你是不是'當然,這將花費更長的時間

+0

嗨,是的,我做了一個乾淨的,但它沒有幫助 – wliao 2011-06-10 13:54:20

0

嘗試make V=1 ...爲詳細輸出 甚至V=2