您的位置:首页 > 运维架构 > Linux

《linux设备驱动程序》前期准备工作

2016-03-03 19:10 555 查看
最近在看《linux设备驱动程序》,由于这本书使用的是2.6.10内核,属于比较老的内核。那么有两种办法,一是在新内核上编译scull,可以参考之前写过的一篇日志(在linux 3.17.6上编译成功);第二种就是直接使用2.6.10内核,可以安装ubuntu 5.04(不一定要这个,最好相差不要太远)。

一、安装ubuntu 5.04

下载地址:http://old-releases.ubuntu.com/releases/hoary/

安装过程没什么好说的,需要提到的是,因为这是2005年的发行版,所以虚拟机软件的默认硬件配置不适用它,请自行修改。如CD,硬盘接口类型最好改为IDE。

安装配置ssh,samba,可以参照网上教程。

二、编译linux 2.6.10内核代码

下载地址:https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.gz

下载后随便找个目录解压,最好是自己的主目录。

tar zxvf linux-2.6.10.tar.gz

开始编译:

1.拷贝正在使用的内核配置文件

cp /boot/config-2.6.10-5-amd64-generic /home/zhujiang/linux2.6.10/.config

2.make menuconfig提示没有图形库,可以使用make oldconfig

3.make -j(注:make成功后不要make install,不然系统重启后进不来)

4.make modules

5.make modules_install

至此,已编译安装完成,可以写个hello world模块测试一下,当你插入测试模块会发现提示

insmod: error inserting 'test.ko': -1 Invalid module format

test: disagrees about version of symbol struct_module

这是内核版本不一致造成的,虽然都是2.6.10,但是内核版本的字符串名称不一样,所以认为是不同版本,可以用下面几步搞定:

1.sudo cp test.ko /lib/modules/`uname -r`

2.sudo depmod

3.sudo modprobe --force-modversion test

三、编译 scull代码

scull是《linux设备驱动程序》的示例代码,除了makefile里面需要修改一下指向/lib/modules/2.6.10,其他均不需要修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: