L14D5内核编译

一、内核的6大模块

.mkimage帮助生成uImage文件

1、mm:内存管理

2、fs:文件系统

3、net:网络协议栈

4、dirvers:设备驱动

5、arch+init:启动相关

6、kernel+ipc:任务/进程管理

不是内核源码:

1、scripts:配置内核的脚本工具

2、Documentation:内核相关文档

3、samples:内存代码

4、tools:生成/运用内核工具

其他文件:

1、fireware:使用场合少

2、include头文件

3、sound:声音设备框架

4、block:块设备框架

5、lib:六大设备公用的基本函数,包括字符串、链表等,类似于C库,内核不能调用C库。

6、crynto:加密解密算法

7、usr:辅助生成uImage

8、security:安全机制

二、向内核增加新功能_静态加载理论

L14D5内核编译_第1张图片

Linux是单内核,属于内核源码

(一)向内核中添加一个功能

1、Kconfig是make menuconfig的配置文件

2、内核模块文件:相当于一个插件,不会编译到uImage。

3、make menuconfig中的选择会保存到.config,内核会根据.config的内容进行编译,方便内存裁剪,不过内存管理、任务管理会一直被编译。

L14D5内核编译_第2张图片

三、内核增加新功能_同一目录动态加载 

动态加载的方式,新增加的功能不再编译到内核中,而是作为内核模块,以文件.ko(kernol object)结尾,相当于插件,可以安装和卸载。

四、内核增加新功能_不同目录动态加载

写一个辅助型的makefile

1、自己编写的makefile需要依赖顶层目录下的makefile

2、make (生成的ko文件适用于主机ubuntu linux)

L14D5内核编译_第3张图片

3、make ARCH=arm (生成的ko文件适用于开发板linux,注意此命令执行前,开发板的内核源码已被编译)

L14D5内核编译_第4张图片

五、内核增加新功能_动态加载之运行ko文件

ko文件名被插入到内核里面有一个模块名,不一定和ko文件名相同。

wins:

L14D5内核编译_第5张图片

 arm开发板:L14D5内核编译_第6张图片

 作业

如何实现静态加载展示?

1、在linux-3.14/driver/char/目录下编写myhello.c
2、给新功能代码配置Kconfig
3、给新功能代码改写Makefile
4、make menuconfig 界面里将新功能对应的那项选择成<*>
5、编译内核,将内核放到tftp工作目录
6、启动开发板观察串口终端中的打印信息

你可能感兴趣的:(linux,运维,服务器)