2013-11-15 49 views
1

我最終想修改和編譯現有的Linux USB存儲驅動程序並對其進行測試。第一步,我想按原樣編譯模塊。如何從下載的Linux源碼編譯模塊?

我下載了最新的Linux內核(版本3.12)並將其提取到~/linux-3.12

我發現我想要編譯驅動程序:drivers/usb/storage,但是當我跑做,我得到了以下錯誤:

make: *** No targets. Stop. 

我在網上找到許多指南,但它們都沒有工作了USB存儲驅動。我只需要編譯這個模塊並獲取.ko,這樣我就可以測試它了。

注意:我正在運行Ubuntu 13.04 64位和uname -r輸出3.8.0-30-generic - 我不確定是否是問題所在,但我之前設法編譯了整個內核。我現在不想這樣做,因爲它需要一個eon。

回答

3

如果你想建立的drivers/usb/storage模塊你可以這樣做:從內核樹的根目錄

make M=drivers/usb/storage 

。在這之前,您需要確保您的配置與正在運行的內核的配置相同。

+0

謝謝。我編譯了整個內核並將其安裝在我的系統上。然後我能夠以root權限運行該命令(sudo)。 – Sefu

2

您不能簡單地將一個內核的源代碼用於構建另一個內核的模塊。該模塊需要使用與內核本身相同的源代碼和相同的配置構建。

基本上,您需要找到正在運行的Ubuntu內核的源代碼。在Ubuntu中,就像在Debian中那樣,可以用'apt-get source'來完成。包名可能類似於'linux-image-3.8-2-amd64'。

一旦你有源代碼,你需要找到正在運行的內核的配置。幸運的是,Ubuntu保持在/boot/config-3.8-.....

將該配置複製到您的內核源代碼樹中,並運行「make oldconfig」。現在你應該可以建立這個模塊(假設它已經不在你的內核中!)。