看板 LinuxDev 關於我們 聯絡資訊
※ 引述《Spig (Spig)》之銘言: : ※ 引述《kafy ()》之銘言: : : 我目的只是想練習開發簡單的module、driver而已, : : 因為我原本用ubunt9.10,可是時在遇到很多問題沒辦法順利解決, : : 現在連個簡單的helloworld module的環境都建不起來, : : survey很多東西,每個東西一試,結果變得又要survey更多東西, : : 現在連系統都搞爛了,在survey下去原本的正事就不用做了, : : 有沒有比較適合開發、測試的版本呢? : : 我知道這不是真正的辦法,但現在實在不太允許花太多時間在設定環境上, : : 希望高手可以幫忙,謝謝! 開發Linux Device Driver的話使用目前有在維護的發行版都OK 目前我就使用Debian 5以及ubuntu10.04來開發Device Driver 如同之前幾篇的推文中所說的Linux Device Driver v3 真的是一本很好的教材 (2.4 kernel的driver的話請參考v2) 他最大的優點是,他可以免費取得^^ 免費線上版:http://lwn.net/Kernel/LDD3/ 範例程式下載:http://www.oreilly.com.cn/codeexample/ldd3/ LDD的學習過程入門真的比較辛苦,一開始跟著LDDv3這本書的範例走 下載一份發行版提供的kernel source code;裡面有很多driver的source code可以參考 學會使用find grep 搜尋程式碼 應該很快就會對LDD的架構有感覺了^^ : 好, 不要管 dkms 了, 請丟掉他 (丟遠一點) : 先安裝一下 gcc : # sudo apt-get install build-essential : 開個目錄, 建二個檔案 : 先建 Makefile : obj-m := hello.o : KVERSION := $(shell uname -r) : all: : $(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) modules : clean: : $(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) clean : 再建 hello.c : #include <linux/kernel.h> : #include <linux/init.h> : static int __init hello_init(void) : { : pr_info("Hello world.\n"); : return 0; : } : static void __exit hello_exit(void) : { : pr_info("Goodbye world.\n"); : } : module_init(hello_init); : module_exit(hello_exit); : 然後鍵入 make, 沒 error 的話應該可以看到 hello.ko : 然後鍵入 sudo insmod ./hello.ko : 都沒 error 的話 dmesg | tail -1 就會看到 hello world 了 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.166.2