linux kernel、module编译

linux kernel编译,大致可分为几个步骤:

1. 获取想要编译的目标版本源码。

源码获取地址:https://www.kernel.org/

以下载linux-2.6.32.63.tar.xz为例。


2. 解压缩源码。将kernel的源码压缩文件上传到自己编译机器上,通过tar命令进行解压。

命令格式:tar xvf linux-2.6.32.63.tar.xz

解压结果会在当前路径生成一个linux-2.6.32.63的目录。


3. 准备.config文件。可以使用make oldconfig,或make menuconfig命令在当前目录生成编译所需的.config文件。

又或者是进入到arch/x86_64/目录下,拷贝KConfig文件出来,再重命名成.config均可。


4. 编辑配置.config文件,选择想要编译进vmlinux的modules。


5. 执行make -j4命令多线程编译。编译完成之后,会生成bzImage文件,这是压缩过后的vmlinux内核映像文件。


6. 执行make modules_install,会将编译完成的modules添加到/lib/modules/2.6.32.63对应内核的目录。


7. 执行make install,会自动生成initrd文件,以及重新配置/boot/grub/menu.lst文件,将自己编译的内核添加到系统启动选项中。


至此,编译一个版本的内核就完成了。


-------------------------------------------------分 割 线-------------------------------------------------


如果,想要编译此版本的驱动,或想要添加默认没有的模组。两种方式可行。

1. 通过修改.config文件,将需要的驱动或模组开关打开,比如,想要增加gfs2的modules。编辑CONFIG_GFS2=m。

2. 进入到对应驱动的目录下,执行命令make /lib/modules/linux-xxx/build M=$PWD modules进行编译。


编译出对应的ko文件之后,通过make -C modules_install将modules添加进该内核版本的/lib/modules/linux-xxxx目录下,在必要时通过insmod <xx>.ko的方式,加载到系统当中。另外modprobe命令也相当的好用,因为modprobe会自动解决modules加载时的依赖。



阅读更多
文章标签: linux内核
个人分类: linux内核
上一篇互联网架构体系讲座随堂笔记
下一篇一张图了解linux IO子系统
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭