一. 内核树
即内核源码目录,保存有内核的顶层 Makefile 文件
Ubuntu:安装 linux-source
Redhat:安装 kenel-devel
默认的安装路径是 /usr/src/,前者是 /usr/src/linux-headers-xxx,后者是 /usr/src/kernels/xxx。同时,/lib/modules/xxx/build 目录软链接到该目录,make -C 时指定任何一个即可。
二. Makefile
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
#KERNELDIR ?= /lib/modules/2.6.32-71.el6.x86_64/build
KERNELDIR ?= /usr/src/kernels/2.6.32-71.el6.x86_64/
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
三. 输出
insmod hello.ko
lsmod
rmmod hello
根据系统传递消息行机制的不同,输出结果可能不一样。在 Redhat Server 虚拟机中,终端中直接可见,但在 Ubuntu 物理机上,却是输出到 /var/log/syslog 文件。