Linux驱动程序学习(一)

从驱动程序编译开始,驱动程序编译需要内核源码支持,所以第一个问题就是下载源码

下载源码需要先知道自己的内核版本,

[root@localhost /]# uname -r

3.10.0-862.el7.x86_64

首先找到www.kernel.org发现并没有所需要的内核版本

官方解释说看到在-后面有任何东西,表示你现在正在运行一个发行版本(distribute kernel),要内核请找发行这个版本的人。

我的系统是Centos,查了下是http://vault.centos.org/

查看自己系统版本

[root@localhost /]# cat /proc/version 

Linux version 3.10.0-862.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Fri Apr 20 16:44:24 UTC 2018

然后下载并相应版本下的rpm包

[root@localhost ~]# rpm -ivh kernel-3.10.0-123.el7.src.rpm

这时会产生目录/root/rpmbuild/SPECS和/root/rpmbuild/SOURCES。

利用rpmbuild命令安装,发现系统并没有带rpmbuild,所以安装rpmbuild。

以为是yum install rpmbuild, 没找到。。。所以知道挂载安装盘找到相应的rpm包安装。结果在挂载/dev/cdrom时卡死。。。无法umount

umount: /var/www/html/centos: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

结果又是查查查。。。

fuser /mnt

返回相应的进程号,

kill -9 进程号

成功挂载后安装,相应的依赖包用yum安装,最后发现其实不叫rpmbuild。。叫rpm-build。。。。所以yum装就可以了。。。

进入SPECS目录

[root@localhost SPECS]# rpmbuild -bp --target=$(uname -m) kernel.spec 
Building target platforms: x86_64
Building for target x86_64
error: Failed build dependencies:
        pesign >= 0.109-4 is needed by kernel-3.10.0-123.el7.x86_64
        elfutils-devel is needed by kernel-3.10.0-123.el7.x86_64
        zlib-devel is needed by kernel-3.10.0-123.el7.x86_64
        binutils-devel is needed by kernel-3.10.0-123.el7.x86_64
        newt-devel is needed by kernel-3.10.0-123.el7.x86_64
        python-devel is needed by kernel-3.10.0-123.el7.x86_64
        perl(ExtUtils::Embed) is needed by kernel-3.10.0-123.el7.x86_64
        bison is needed by kernel-3.10.0-123.el7.x86_64
        audit-libs-devel is needed by kernel-3.10.0-123.el7.x86_64
        numactl-devel is needed by kernel-3.10.0-123.el7.x86_64
        pciutils-devel is needed by kernel-3.10.0-123.el7.x86_64

缺啥yum啥

成功解析出的内核源码在/root/rpmbuild/BUILD中,把它放到/usr/src/kernel/里

新解析出的内核源码有一个configs文件,其实还有一个.config文件,因为是隐藏的所以之前没有发现,还以为make oldconfig是使用了configs里的文件,其实用的是.cofnig。。。

接着开始编译

make(经历一段漫长的等待。。。)

编译内核镜像

make bzImage

Kernel: arch/x86/boot/bzImage is ready  (#2)

安装内核模块

make modules_install

执行结束之后,会在/lib/modules下生成新的目录/lib/modules/3.13.0-48-generic/, 下面的build文件就是编译模块的要用到的文件。至此内核编译完成。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值