2015-11-02 35 views
1

我有工作內核模塊,我使用insmod/modprobe命令手動安裝,如閱讀書籍所瞭解的。不過我想知道是否有辦法編譯後自動執行 - 所以基本上如何自動化命令insmod/modprobe我們可以用make文件安裝內核模塊

我modprobe的有相關的文件thread_module.o以及

我make文件至今

運行後
obj-m := wakeup_counter.o 
obj-m += thread_module.o 
$INSTALL_MOD_PATH = /lib/modules/2.6.32-5-amd64/ 

all: 
    make -C /lib/modules/2.6.32-5-amd64/build M=$(PWD) modules 

install: 
    make $(INSTALL_MOD_PATH) =/build modules_install 
clean: 
    make -C /lib/modules/2.6.32-5-amd64/build M=$(PWD) modules 

輸出:make安裝

[email protected]:/home/xyz/Desktop/Drivers/symbols# make install 
make -C /lib/modules/2.6.32-5-amd64/build M=/home/xyz/Desktop/Drivers/symbols modules_install 
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-5-amd64' 
    INSTALL /home/xyz/Desktop/Drivers/symbols/thread_module.ko 
    INSTALL /home/xyz/Desktop/Drivers/symbols/wakeup_counter.ko 
    DEPMOD 2.6.32-5-amd64 
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-5-amd64' 

編輯:通過意見後去和https://www.kernel.org/doc/Documentation/kbuild/modules.txt我試圖添加安裝命令,但我沒有看到構建路徑中的任何模塊 - 也是在高層次,我得到我們在cmd提示符中輸入的內容,我們輸入Makefile,但如果有人可以舉一個例子,它會幫助我理解好基本情況來引用。命令shell指令

+1

安裝軟件通常是由'讓install'命令執行。只需在makefile中創建「安裝」目標,並將所有需要的操作放入其配方中即可。 – Tsyvarev

+0

是的,並從它調用'make ... modules_install'。 – 0andriy

+0

任何可以在命令shell中運行的命令,都可以將該操作添加爲makefile中目標的規則。 – cm161

回答

1
obj-m := wakeup_counter.o 
obj-m += thread_module.o 

KDIR = /lib/modules/2.6.32-5-amd64/build 

all: 
    make -C $(KDIR) M=$(PWD) modules_install 

clean: 
    make -C $(KDIR) M=$(PWD) clean 

例被用作規則的Makefile:

install: 
    modprobe wakeup_counter 
    modprobe thread_module 
+0

感謝您的答案 - 我需要做一些小的改變,而不是modules_install - 我不得不將其更改爲modules ..但是我必須將其更改爲模塊..但是按照您的步驟指出,我更瞭解一些更好的東西..非常感謝回答 – thedreamer

1

提高張貼@ cm161答案爲未來用戶以突出其工作對我來說

下面具體步驟Makefile使用以下步驟

第1步:make(只需創建命令) - 用於創建模塊,即.ko文件和相關文件

第2步:使安裝

第3步:現在你的lsmod,你應該能夠看到新的模塊

obj-m := wakeup_counter.o 
obj-m += thread_module.o 

KDIR = /lib/modules/2.6.32-5-amd64/build 

all: 
    make -C $(KDIR) M=$(PWD) modules 
    cp wakeup_counter.ko /lib/modules/2.6.32-5-amd64/ 
    cp thread_module.ko /lib/modules/2.6.32-5-amd64/ 

install: 
    modprobe wakeup_counter 
    modprobe thread_module 

clean: 
    make -C $(KDIR) M=$(PWD) clean 
+0

您可以自動執行復制。ko通過爲'all'目標添加'cp'規則來創建文件,如下所示:all: make .... cp wakeup_counter.ko $(DEST_DIR)/。 cp thread_module.ko $(DEST_DIR)/。 DEST_DIR = /lib/modules/2.6.32-5-amd64 – cm161

+0

True !! - 相應地更新了答案 – thedreamer

相關問題