心血来潮,准备开始Linux Device Driver的学习。当即下了Linux Device Driver 第三版来学习。
第一个Module Hello Kernel.Code 随处可见,这里就不粘贴了,主要说自己遇到的几个问题。
1.Environment Build
由于使用的是虚拟机上安装的Mint系统,原有的Header貌似不支持build kernel,因而自己去官网
上下了个Linux 2.6.34.13 source code.参考网上文档自己build 出image。然后开机时候遇到第一个
问题,使用'uname -r'发现版本依然是mint自带的3.2.0.23.查了下原因,需要修改/bootgrub/grub.cfg
启动文件的default的值(需要默认启动的是哪个linux kernel就用对应的submenu的值,顺序往下数)。
修改后再次运行Mint,该问题成功KO。
2.Makefile
按照书上写好Makefile,运行时总是提示“make:nothing need to for all”,查找原因,是因为Makefile
中每个伪目标下一行开始应该使用TAB键而不是空格。修改后make可生成Hello.ko
3. Log
发现insmod/rmmod hello.ko的时候,没有log输出。可能和Environment设置有关。使用cat /var/log/
syslog并在其中查找自己相关log,可找到相关printk的output信息。