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

Linux内核裁剪过程

2016-09-22 18:32 239 查看
博客内容来源:网络、书籍和自己整理补充

Linux 内核裁剪过程(以烧录到arm开发板为例)

1、将新内核拷贝到/usr/src下,
2、解压缩内核:
tar jxvf linux.2.6.29.tar.bz2

3、cd /usr/src/linux

4、清除不必要的文件:make disclean

5、裁剪内核:系统运行的必要配置+动态添加其他配置,make menuconfig生成一个.config文件,文件位置位于arch/$cpu/configs

6、menuconfig配置菜单,选择相应配置时,有三种选择方式:Y--将该功能编译进内核、N--不将该功能编译进内核、M--将该功能编译成可以在需要的时候动态插入到内核的模块,通过空格键进行选取,可以将其重命名,以便下次直接使用cp mini2451_config .config

7、将配置好的内核进行交叉编译:make ARCH=arm CROSS_COMPILE=arm-linux-

8、生成uImage:内核镜像在arch/arm/boot中的zImage

     将mkimage工具拷贝/bin:cp mkimage /bin

     生成内核镜像uImage:make uImage
9、编译内核模块
 命令:make modules
10、安装内核模块
 命令:make modules_install
 将编译好的内核模块会从内核源代码目录拷贝至/lib/modules下

11、通过modprobe filename或insmod hello.ko(路径:/sbin/insmod)把模块加载到内核中,modprobe -r filename 和 rmmod hello.ko从内核中卸载模块

普及知识点:modprobe和insmod的区别?

1、modprobe可以解决load module时的依赖关系,比如load moudleA 就必须先load moudleB,它是通过/lib/modules/modules.dep文件来查找依赖关系的,而insmode不能解决问题

2、modprobe默认会去/lib/modules下查找moudles,而insmod只在给它的参数中去找modules

3、insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址,modprobe则可以一次将有依赖关系的驱动全部加载到内核

希望能对大家有帮助!谢谢阅读!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息