Linux實驗二【最簡單kernel module的例子】
2014-10-19
首先要學習一些基礎知識:
1. 模組(module)是可以按照需求載入或解除安裝到系統核心中,擴充套件了核心的功能而不需要重啟或重新編譯核心。
2. makefile相關知識:註釋用#
#obj-m 編譯成核心模組
obj-m := hello.o
#makefile中:=是指引用,比如 KDIR:= /lib/modules/2.6.30/build,其中檔案路徑太長,用KDIR來表示,在後面的語句中就可以用$KDIR來代指/lib/modules/2.6.30/build;其實就是為了方便程式的書寫。記著引用時要在前面加$。
KDIR := /lib/modules/$(shell uname -r)/build
#PWD代表當前路徑,:=代表一經賦值不在改變,功能類似巨集定義;shell pwd代表在shell輸入pwd命令中取得的路徑
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
今天做實驗好坎坷,有時候過於著急得出結果,但是對一個東西不瞭解之前是很難的,無論是人機互動實驗還是Linux實驗,都想拿來現成的東西執行成功再慢慢學習。但發現這樣效率很低,應該首先多瞭解一下相關的知識,不能太急功近利了,再去做,得結果。有時候盲目地照著網上的教程做,都不懂是什麼意思,應該大致理解了才能融會貫通啊!
建核心原始碼樹,但是使用apt-get install Linux_sources-3.0.0時不能更新源,是source.list的問題,又遇到檔案只讀,找不到更新包等一系列問題。現在有兩種解決辦法,一種是在網上下一個Linux 3.0.0的核心,直接複製過去,另一種就是安裝最新版本的Ubuntu,就快斷網了,只能明天再下了。只能看看接下來要做的,
source.list檔案只讀不能更改用該命令:
sudo gedit /etc/apt/sources.list 就能編輯檔案了
2014-10-21
這個實驗無需建立核心原始碼樹,被網上一些帖子誤導,也由於自己沒有看仔細,只加上一個命令即可,dmesg。