相关文章推荐
讲道义的闹钟  ·  c# Automapper ...·  2 月前    · 
无邪的仙人球  ·  Common Data Model 格式 ...·  1 年前    · 

Linux内核架构及内核裁剪

Linux系统分为内核空间和用户空间;



用户空间主要包括:用户应用程序和基本的库文件



内核空间主要包括:

系统调用接口SCI:系统封装给用户空间的应用函数调用接口

进程管理PM:管理进程调度

虚拟文件系统VFS:针对各种文件系统封装的统一调用接口层

内存管理MM :与CPU无关的内存管理代码,与CPU相关的在ARCH路径下

网络协议栈NS:网口多层协议栈相关代码

设备驱动程序DD:设备驱动程序

CPU相关代码ARCH :

内核源代码目录结构:

arch:内核支持代码各种cpu架构。

block:块驱动程序

crypto:加密压缩CRC加密算法

documention:内核文档

driver:设备驱动程序

fs:各种文件系统实现代码,每个子目录一种文件系统

include:内核需要的头文件

lib:库文件

mm:内存管理与CPU无关

net:网络协议栈

内核裁剪:

1.清除临时文件

make clean 删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块

make distclean mrproper删除的文件, 加上编辑备份文件和一些补丁文件。

make mrproper 删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件。

2.分析系统硬件结构和软件需求;得出内核需求模块

3.生成配置文件

make config:基于文本模式,挨个配置选择y/n

make menuconfig:基于菜单模式,复选框都会有默认选项。

make oldconfig:使用已有的配置文件

make xconfig:需要安装图形化系统

得到系统源文件下的config 文件。

4.生成镜像

make iImage :是vmlinux经过objcopy gzip压缩后的文件, objcopy实现由vmlinux的elf文件拷贝成纯二进制数据文件。

make bzImage :bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。

如果编译过程中出现宏定义错误,可以进入到相关的报错目录下将宏定义添加到EXTRA_CFLAGS后面。

initrd 是“initial ramdisk”的简写。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。一般情况下都在生成 vmlinux 后,再对内核进行压缩成为 zImage,压缩的目录是 kernel/arch/arm/boot。

ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。

制作ramdisk:makeitrd initrd_2.6.29 2.6.29

5.安装

修改/etc/grub.config文件参照现有的系统 添加需要安装的系统ramdisk

将镜像放到/boot/下

重启,即可启动自己制作的系统。

————————————————

版权声明:本文为CSDN博主「弯弯的丝瓜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接: Linux内核架构及内核裁剪_u012516571的博客-CSDN博客_内核裁剪

发布于 2021-03-24 16:04

文章被以下专栏收录