幽兰上默认附带了一些用户空间及内核空间的小实验,这些实验可以让大家快速方便地了解Linux系统的主要特性。
本篇文章以自带的llaolao驱动为引子,带领用户进入内核空间的世界。
1. 进入llaolao目录
geduer@ulan:~$ cd /home/geduer/gelabs/llaolao2/
geduer@ulan:~/gelabs/llaolao2$ pwd
/home/geduer/gelabs/llaolao2
geduer@ulan:~/gelabs/llaolao2$ ls
baner.c llaolao2.sln llaolao.cpp main.c
gearm.c llaolao2.vcxproj llaolao.h Makefile
gearm.h llaolao2.vcxproj.user llaolao.mod README.txt
geduer@ulan:~/gelabs/llaolao2$
2. 编译驱动
geduer@ulan:~/gelabs/llaolao2$ make clean
rm -rf *.o *~ .*.cmd *.ko *.mod.c *.order *.symvers .tmp_versions built-in.o
geduer@ulan:~/gelabs/llaolao2$ make
make -C /lib/modules/5.10.110/build M=/home/geduer/gelabs/llaolao2 modules
make[1]: Entering directory '/usr/src/5.10.110'
CC [M] /home/geduer/gelabs/llaolao2/main.o
CC [M] /home/geduer/gelabs/llaolao2/gearm.o
LD [M] /home/geduer/gelabs/llaolao2/llaolao.o
MODPOST /home/geduer/gelabs/llaolao2/Module.symvers
CC [M] /home/geduer/gelabs/llaolao2/llaolao.mod.o
LD [M] /home/geduer/gelabs/llaolao2/llaolao.ko
make[1]: Leaving directory '/usr/src/5.10.110'
3. 加载驱动
先执行ls -l命令观察确认已经构建出新的ko文件,文件名可能是llaolao.ko或者llaolao2.ko,然后通过sudo insmod llaolao.ko
或者sudo insmod llaolao2.ko
命令加载刚刚编译好的驱动,完成加载后,可以在模块列表及dmesg内看到llaolao或者llaolao2
驱动的身影。
geduer@ulan:~/gelabs/llaolao2$ lsmod
Module Size Used by
llaolao 24576 0
br_netfilter 28672 0
bpfilter 16384 0
tun 53248 0
bridge 262144 1 br_netfilter
stp 16384 1 bridge
llc 16384 2 bridge,stp
ndb 20480 0
bcmdhd 1609728 0
dhd_static_buf 16384 1 bcmdhd
ipv6 606208 85 bridge,br_netfilter
autofs4 45056 0
geduer@ulan:~/gelabs/llaolao2$ dmesg
[ 4020.929075] llaolao: loading out-of-tree module taints kernel.
[ 4020.931234] NGB module head is updated 0000000092451803 on self 00000000537bf900 val 1, data 00000000d308fc47
[ 4020.931991] Hi, I am llaolao at address: 00000000d5ec09c2
symbol: 0x00000000d5ec09c2
stack: 0x00000000e13b4d65
first 16 bytes: fd:7b:ba:a9:fd:03:00:91:f3:53:01:a9:f5:5b:02:a9
[ 4020.933681] NGB module head is updated 0000000092451803 on self 00000000537bf900 val 0, data 00000000d308fc47
geduer@ulan:~/gelabs/llaolao2$
作者:admin 创建时间:2023-05-02 10:15
最后编辑:Zhang Yinkui 更新时间:2024-12-20 17:01
最后编辑:Zhang Yinkui 更新时间:2024-12-20 17:01