1。建立hello目錄
mkdir hello
2。進入hello目錄
cd hello
3。編寫hello.c
#include
#include
module_license("gpl");
static int hello_init(void)
static void hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
4。編寫makefile檔案
obj-m := hello.o
kdir := /lib/modules/$(shell uname -r)/build
pwd := $(shell pwd)
default:
$(make) -c $(kdir) m=$(pwd) modules
5。在當前目錄下make:
/home/jb/hello# make
成功的結果如下:
make -c /lib/modules/2.6.32-35-generic/build m=/home/jb/hello modules
make[1]: 正在進入目錄 `/usr/src/linux-headers-2.6.32-35-generic'
building modules, stage 2.
modpost 1 modules
make[1]:正在離開目錄 `/usr/src/linux-headers-2.6.32-35-generic'
同時目錄下有檔案 hello.ko 生成 。
如果出現下面的錯誤:
make: nothing to be done for `default'
解決辦法:
檢查makefile檔案:
obj-m := hello.o
kdir := /lib/modules/$(shell uname -r)/build
pwd := $(shell pwd)
default:
$(make) -c $(kdir) m=$(pwd) modules 看看
$(make) -c $(kdir) m=$(pwd) modules 前面是不是有tab鍵空格
6。載入helloworld模組
sudo insmod hello.ko
7。解除安裝helloworld模組
sudo rmmod hello.ko
8。檢視輸出資訊:
/home/jb/hello# cat /var/log/kern.log | tail -8 或者
/home/jb/hello#dmesg | tail -8
結果如下:
[ 1195.255925] input: usb optical mouse as /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/input/input11
[ 1195.256119] generic-usb 0003:15d9:0a4c.0005: input,hidraw0: usb hid v1.11 mouse [ usb optical mouse] on usb-0000:00:1d.0-2/input0
[ 1196.580072] [drm:radeon_fence_wait] *error* fence(c80d6060:0x0000793d) 504ms timeout going to reset gpu
[ 1196.580288] [drm] gpu reset succeed (rbbm_status=0x00000140)
[ 1196.580299] [drm:radeon_fence_wait] *error* fence(c80d6060:0x0000793d) 512ms timeout
[ 1196.580308] [drm:radeon_fence_wait] *error* last signaled fence(0x0000793d)
[ 1470.581094] hello, world
[ 1476.732844] goodbye, cruel world
Linux核心模組自動載入機制
提交者 addylee 日期 2008 10 8 22 50 閱讀 636 www.osplay.org 摘要 本文討論了linux核心中udevd的模組自動載入機制。標題 思 考 如果想讓核心啟動過程中自動載入某個模組 該怎麼做呢?最容易想到的方法就是到 etc init.d 中新增乙個啟動指令碼...
Linux核心模組自動載入機制
思 考 如 果想讓核心啟動過程中自動載入某個模組該怎麼做呢?最容易想到的方法就是到 etc init.d 中新增乙個啟動指令碼,然後在 etc rcn.d 目 錄下建立乙個符號鏈結,這個鏈結的名字以s開頭,這核心啟動時,就會自動執行這個指令碼了,這樣就可以在指令碼中使用modprobe來實現自動載入...
Linux核心模組自動載入機制
標題 思考 如 果想讓核心啟動過程中自動載入某個模組該怎麼做呢?最容易想到的方法就是到 etc init.d 中新增乙個啟動指令碼,然後在 etc rcn.d 目 錄下建立乙個符號鏈結,這個鏈結的名字以s開頭,這核心啟動時,就會自動執行這個指令碼了,這樣就可以在指令碼中使用modprobe來實現自動...