zoukankan      html  css  js  c++  java
  • linux内核体系结构 分类: arm-linux-Ubuntu 2013-07-22 16:28 359人阅读 评论(0) 收藏

    linux内核第一记
     
    1.linux体系结构

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    从上图可知,Linux分为:用户空间和内核空间。内核空间和用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。
      www.2cto.com  
    2.linux内核架构

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    2.1系统调用接口(SCI)
    SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核的桥梁。
    2.2进程管理(PM)
    进程管理的重点是创建进程(fork,exec),停止进程(kill,exit),并控制他们之间的通信(singal或POSIX机制),进程管理还包括控制活动进程如何共享CPU(进程调度).。
     
    2.3内存管理(MM)
    内存管理的主要作用是控制多个进程安全的共享内存区域。
    2.4网络协议栈(NS)
    网络协议栈为Linux提供了丰富的网络协议实现。
    2.5虚拟文件系统(VFS)  www.2cto.com  
    VFS隐藏各种文件系统的具体细节,为文件操作提供统一的接口。

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    2.6设备驱动(DD)
    Linux内核中有大量的代码都在设备驱动程序中,他们控制特定的硬件设备。
    2.7 Arch
    Arch中包含内核所支持的每种CPU体系,在Arch目录中,都有每种CPU体系对应的子目录,子目录中又包含boot,mm,kenerl等子目录,分别控制系统引导,内存管理,系统调用等。如X86体系如下图:
     
    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    linux内核第二记
     
    目录结构(一般修改Arch和Drivers目录中的文件)
      www.2cto.com  
    1.block目录
    部分块设备驱动程序
    2.crypto目录
    加密、压缩、CRC校验算法
    3.documentation
    内核的文档
    4.drivers目录
    设备驱动程序
    5.fs目录
    存放各种文件系统的实现代码。每个子目录对应一中文件系统的实现,公用的源程序用于实现虚拟文件系统VFS
      www.2cto.com  
    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    6.include目录
    内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的都文件则放在相应的子目录中。
    7.init目录
    内核初始化代码
    8.ipc目录
    进程间通信实现代码
    9.kenerl目录
    Linux大多数核心功能都在这个目录实现(调度程序、进程控制、模块化)。
    10.lib目录
    库文件代码
    11.mm目录
    mm目录中的文件用于实现内存管理中与体系结构无关的部分
    12.net目录
    网络实现的协议代码
      www.2cto.com  
    linux内核 - 毛毛虫 - 毛毛雨的刻薄

    13.samples目录
    一些内核编程的范例
    14.script目录
    配置内核的脚本
    15.security目录
    SElinux的模块
    16.sound目录
    音频设备的驱动程序
    17.usr目录
    cpio命令实现
    18.virt目录
    内核虚拟机
     

    linux内核第三记
     
    Linux内核配置
    Linux内核具有可定制的优点,具体步骤如下:
     
    1.清理临时文件,中间文件和配置文件
    ·make clean:删除大部分产生文件(如编译中的.o文件)但是把配置保留下来。
    ·make mrproper:删除所有产生文件并把配置文件也删除了。
    ·make distclean:在make mrproper的基础上,还要删除编辑器文件和补丁文件。

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    2.确定目标系统的软硬件配置情况,比如CPU的型号,网卡的型号,所支持的网络协议等。
     
    3.使下列的命令之一配置内核:
     
    ·make config:基于文本模式的交互式配置(以提问的方式配置)。

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    ·make menuconfig:基于文本模式的菜单型配置(推荐使用)。

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    ·make oldconfig:使用已有的配置文件(.config),但是会询问新增的配置选项。

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    ·make xconfig:图形化的配置(需要安装图形化系统)
     
    如果没有安装qt:  www.2cto.com  
    sudo apt-get install libqt3-mt
    sudo apt-get install libqt3-mt-dev
    sudo make xconfig:

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    在make menuconfig后,ls -a:注意多了一个.config文件

    linux内核 - 毛毛虫 - 毛毛雨的刻薄

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    一般情况下都用make menuconfig:如上图,y=*、n=[]、M,y或*代表的是将这个项目编译到内核中,n或空为不选择,M表示编译成模块。
     
    [*]A.c---->A.o
                            --->zimage(*要经历编译和连接)
    [*]B.c---->B.o/
    [M]D.c---->D.o(指编译)
    []E.c---X(不编译不连接)
     
    配置项的选择:
    参见内核配置参考.doc
    常常利用已有的内核配置参考进行修改。例如进入arm中的s3c2410的配置:
     
    linux内核 - 毛毛虫 - 毛毛雨的刻薄

    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
    把该配置拷贝到liunx内核下的.config中,然后在此基础上进行修改。
    如:cp s3c2410_defconfig ../../../.config  www.2cto.com  
     
    假如我要将我修改本身系统运行的内核:
     
    linux内核 - 毛毛虫 - 毛毛雨的刻薄
     
     

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    网络和笔记本
    病毒惹的祸
    Virtual MachineVmware(2)
    VS2010 工具箱装载出错
    Virtual Machine VmWare(1)
    javascript写计数器
    代码自动生成操作
    用live writer写博客
    上海招聘.net程序员
    将用户导入到membership
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706955.html
Copyright © 2011-2022 走看看