Kernel的配置、编译和移植
kernel 简介
linux内核的特点
- linux内核源码开源
- linux支持多种架构平台:ARM、x86、powerpc
- linux内核代码采用模块化设计:不同驱动对应不同的.c和.h文件;用时加载驱动,不用时卸载驱动
- linux内核代码采用分层的思想:应用层 ,内核层(驱动),硬件层
- linux内核源码使用汇编和c语言实现,具有良好的移植和可裁剪特性
linux内核源码的获取
从linux内核官方获取:
https://mirrors.edge.kernel.org/pub/linux/kernel/
linux内核的命名规则
linux-主版本号.次版本号.修订版本号.tar.xz
kernel-3.4.39-ok.tar.bz2
1)主版本号:内核源码有较大更新时,才会升级主版本号
2)次版本号:
- 次版本号为偶数:表示稳定版本
- 次版本号为奇数:表示测试版本
3)修订版本号:内核源码中只要有代码更新就会,升级修订版本号
注:如何选择linux内核的版本
1》不可以太新
2》不可以太旧
3》选择稳定版本
本文章使用的内核源码为:kernel-3.4.39-ok.tar.bz2
Kernel的部署
内核部署分为两个阶段:开发阶段和产品发布阶段
(1)开发阶段系统部署
uboot镜像(ubootpak.bin) --》 搬移到 Flash/EMMC中,指定启动方式:从emmc启动
linux内核镜像(uImage) --》通过网络方式(TFTP)直接下载到内存中并且启动内核
根文件系统镜像(ramdisk.img) --》通过网络方式(NFS) 直接挂在根文件系统
好处:高效,因为Flash的读写是有次数限制,不能每次调试都是在flash