hello.c
#include
<
linux
/
init.h
>
#include
<
linux
/
module.h
>
MODULE_LICENSE(
"
Dual BSD/GPL
"
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
static
int
hello_init(
void
)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
printk(KERN_ALERT "wellcome to the real world, it sucks! ");
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
static
void
hello_exit(
void
)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
printk(KERN_ALERT "but you're gonna love it ! ");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
module_init(hello_init);
module_exit(hello_exit);
------------------------------------------------------------------------------------------
Makefile
KERNELDIR
=/
home
/
fown
/
kernel
/
kernel
-
2.6
.
13
PWD :
=
$(shell pwd)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CC
=/
usr
/
local
/
arm
/
3.4
.
1
/
bin
/
arm
-
linux
-
gcc
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
obj
-
m :
=
hello.o
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
modules:
$(MAKE)
-
C $(KERNELDIR) M
=
$(PWD) modules
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
clean:
rm
-
rf
*
.o
*~
core .depend .
*
.cmd
*
.ko
*
.mod.c .tmp_versions
-------------------------------------------------------------------------------------
make modules
make -C /home/fown/kernel/kernel-2.6.13 M=/home/fown/ldd/hello modules
make[1]: Entering directory `/home/fown/kernel/kernel-2.6.13'
WARNING: Symbol version dump /home/fown/kernel/kernel-2.6.13/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /home/fown/ldd/hello/hello.o
Building modules, stage 2.
MODPOST
CC /home/fown/ldd/hello/hello.mod.o
LD [M] /home/fown/ldd/hello/hello.ko
make[1]: Leaving directory `/home/fown/kernel/kernel-2.6.13'
--------------------------------------------------------------------------------------
2440
--------------------------------------------------------------------------------------
[root@FriendlyARM /]# insmod hello.ko
wellcome to the real world, it sucks!
[root@FriendlyARM /]# lsmod
Module Size Used by
hello 1120 0 - Live 0xbf000000
[root@FriendlyARM /]# rmmod hello
but you're gonna love it !
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
------------------------------------------------------------------------------------------
Makefile
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
-------------------------------------------------------------------------------------
make modules
make -C /home/fown/kernel/kernel-2.6.13 M=/home/fown/ldd/hello modules
make[1]: Entering directory `/home/fown/kernel/kernel-2.6.13'
WARNING: Symbol version dump /home/fown/kernel/kernel-2.6.13/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /home/fown/ldd/hello/hello.o
Building modules, stage 2.
MODPOST
CC /home/fown/ldd/hello/hello.mod.o
LD [M] /home/fown/ldd/hello/hello.ko
make[1]: Leaving directory `/home/fown/kernel/kernel-2.6.13'
--------------------------------------------------------------------------------------
2440
--------------------------------------------------------------------------------------
[root@FriendlyARM /]# insmod hello.ko
wellcome to the real world, it sucks!
[root@FriendlyARM /]# lsmod
Module Size Used by
hello 1120 0 - Live 0xbf000000
[root@FriendlyARM /]# rmmod hello
but you're gonna love it !