linux device driver 第三版 - 1. hello world
0. 说明
因为书是第三版,需要linux 2.6的内核,所以用了centos-6.5
1. 安装 centos-6.5虚拟机
下载centos-6.5的dvd镜像1, 然后安装在虚拟机里
2. 设置光盘安装源
修改 /etc/yum.repos.d/CentOS-Media.repo 为如下内容:
因为书是第三版,需要linux 2.6的内核,所以用了centos-6.5
1. 安装 centos-6.5虚拟机
下载centos-6.5的dvd镜像1, 然后安装在虚拟机里
2. 设置光盘安装源
修改 /etc/yum.repos.d/CentOS-Media.repo 为如下内容:
1 2 3 4 5 6 7 8 | [c6-media] name=CentOS-$releasever - Media baseurl=file: ///media/CentOS_6.5_Final/ 这个设置为实际的光盘mount目. file: ///media/cdrom/ file: ///media/cdrecorder/ gpgcheck=0 enabled=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 |
** 将其它的 .repo文件删除或挪走。
3. 添加源码树
下载centos-6.5源代码rpm文件: http://vault.centos.org/6.5/os/Source/SPackages/kernel-2.6.32-431.el6.src.rpm
1 2 3 | # yum install -y gcc bison patchutils rpm-build redhat-rpm-config hmaccalc perl-ExtUtils-Embed pesign xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel ncurses-devel numactl-devel python-devel zlib-devel # useradd -s /sbin/nologin mockbuild # rpm -ivh kernel-2.6.32-431.el6.src.rpm |
这样源代码就安装好了,放在/usr/src/kernels/2.6.32-431.el6.i686
4. hello模块的.c源文件 hello.c
创建目录 /opt/driver/ch2, 创建文件hello.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE( "Dual BSD/GPL" ); static int hello_init( void ) { printk(KERN_ALERT "Hello, LINUX DRIVER\n" ); return 0; } static void hello_exit( void ) { printk(KERN_ALERT "Goodbye, cruel world\n" ); } module_init(hello_init); module_exit(hello_exit); |
Makefile: 只有一行
1 | obj-m := hello.o |
5. 编译
在/opt/driver/ch2目录里:
1 | # make -C /usr/src/kernels/2.6.32-431.el6.i686 M=`pwd` modules |
其中 -C 表示会进入到 /usr/src/kernels/2.6.32-431.el6.i686目录里。
编译成功,会生成 hello.ko, 2.6内核模块是.ko为扩展名
6. 运行
1 | # insmod hello.ko |
运行后控制台无显示
1 2 3 4 5 | # tail -n 20 /var/log/messages 可查看printk打印信息 ... Sep 19 22:18:13 centos6 yum[2793]: Installed: numactl-devel-2.0.7-8.el6.i686 Sep 19 22:49:30 centos6 kernel: Hello, LINUX DRIVER Sep 19 22:49:54 centos6 kernel: Goodbye, cruel world |
7. 卸载
# rmmod hello
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix