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

CentOS7编译内核模块

2018-03-14 08:22 357 查看
想在CentOS系统直接编译内核模块,然后运行调试,这样做主要还是用于学习Linux内核。当然也可以进行交叉编译,在开发板上跑模块调试,但是,这样做比较慢而且麻烦,因此上网找些办法在CentOS上搭建可以进行内核模块编译的环境,以下内容大部分出自博客,在此借用,勿怪。
1,安装工具
# yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto
# yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel
# yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel

2,下载源码http://vault.centos.org,选择合适的内核版本,当前使用的是kernel-3.10.0-693.1.1.el7.src.rpm。
可能用到
# cat /etc/redhat-release
# uname -a
3,解压源码
# mkdir -p ~/kernel/centos7/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
# echo '%_topdir %(echo $HOME)/kernel/centos7' > ~/.rpmmacros
路径可自行确定。

#  cd ~

# rpm -i kernel-3.10.0-693.1.1.el7.src.rpm
解压之后,在~/kernel/centos7/BUILD/kernel-3.10.0-693.1.1.el7/linux-3.10.0-693.1.1.el7.x86_64/目录,就是当前系统的内核源码。
4,编译内核获取Module.symvers文件
# cd ~/kernel/centos7/BUILD/kernel-3.10.0-693.1.1.el7/linux-3.10.0-693.1.1.el7.x86_64

# cp /boot/config-`uname -r` .config
拷贝当前系统配置文件
# make oldconfig

# make menuconfig
配置menuconfig
# make
5,编译模块
Makefile

     KDIR ?= ~/kernel/centos7/BUILD/kernel-3.10.0-693.1.1.el7/linux-3.10.0-693.1.1.el7.x86_64
完成之后insmod。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: