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/下

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

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值