第四章-linux内核裁剪与移植


内核:为底层可编程部件提供服务,为上层app提供执行环境
裁剪:裁剪功能,选取满足特定平台和需求的功能

4.1 内核结构
    模块化,文件目录形式,方便裁剪,编译
    4.1.1主要组成
            内核基本元素:进程调度,内存管理,虚拟文件系统,网络接口,进程管理
            ******插入图片一张****
            进程调度--控制进程对CPU访问
            内存管理--管理多进程安全共享主内存区,从逻辑上分硬件无关部分和硬件相关部分
                                                 硬件无关即提供了进程的映射和逻辑内存的对换
                                                 硬件相关部分为内存管理硬件提供虚拟接口
            虚拟文件系统:隐藏不同类型硬件具体细节,提供标准接口,VFS提供十多种文件系统
            网络接口:支持各种网络标准的存取和网络硬件
            进程通信:支持进程间各种不同的通信机制
            进程调度:核心,内核其他子系统都要依赖,都存在进程挂起或恢复的过程。
            
            *****************************
            进程调度与内存管理:互相依赖,多程序环境下,程序要运行必须为之创建进程,创建进程必须将程序和数据装入内存。
                                内存管理子系统也有进程挂起和恢复过程
            进程间通信与内存管理:进程间通信子系统要依赖内存管理支持共享内存通信机制,操作共同内存达到通信目的
            虚拟文件系统&&网络接口:VFS通过网络接口支持NFS,通过依赖内存管理支持RAMDISK设备
            内存管理与VFS:MM利用VFS支持交换,交换进程定期由调度程序调度,也是内存管理依赖于进程调度的唯一原因。
                          当进程存取的内存映射被换出时,内存管理将会向问阿金系统发出请求,同时挂起当前正在运行的进程
            
            *****************************
    4.1.2  内核架构
        ***************内核源码关系****************


        arch
        drivers:设备驱动(相关和无关的)
        fs:嵌入式cramfs,romfs,ramfs,yaffs,jffs2等
        init:核心的初始化代码,不是引导代码,main.c和version.c 研究核心的起点
        ipc:核心进程间通信代码。管道,信号,消息对垒,共享内存,信号量,套接字
        kernel:内和管理的核心代码,/arm/*/kernel
        net:核心网络部分,具体协议或网络模型代码
        mm:内存管理,具体硬件体系结构相关的内存代码 arc/*/mm
        scripts: 配置核心的脚本文件
        lib:核心库代码,与处理器结构相关库代码: arch/*/lib/
    4.2 内核配置
        General setup:无特殊要求只选择System V IPC,最新版本有Embedded system选项
        更多选项解释
    4.2.2内核模块加载方式
        允许强制加载模块驱动/允许卸载已经加载的模块,
        ---------插入图片


    4.3 系统调用,类型,特性等
        1)Blocklayer----包含系统调用选项
        2)System Type--包含一些系统类型选项,在配置内核时选择机器对应的芯类型
        3)Kernel Features--包含特性,嵌入式系统一般不配置
            Preemptible kernel 抢占式内核,建议采用
            Use the ARM EABI to compile the kernel  使用ARM eabi编译内核
            Allow old ABI binaries to run with this kernel 使用内核支持旧版本的ABI程序
            Memory model    只有Flat memory 供选择
            Add LRU list to track non-evictable pages 对没有使用的页采用最近最少使用算法,建议选择
        4)Boot Options 系统启动选项
            1]Compressed ROM boot loader base address xImage 存放的基地址
            2]Compressed ROM boot loader BSS address  BSS地址
            3]Default Kernel command string 内核启动参数
            4]Kernel Execute-In-Placefrom ROM 从ROM中直接运行内核,该内核使用make xipImage编译
            5](0x00080000)XIP Kernel Physical Location 选择XIP后,内核存放的物理地址
            6]kexec system call Kexec系统调用
    4.2.4 网络(Networking Support)包含网络协议支持的选项,只需要选择即可
            1]Amateur Radio support 无线电支持
            2]CAN bus substystem support can总线子系统支持
            3]IrDA(infrared)subsystem support  红外线支持
            4]Bluetooth subsystem support 蓝牙支持
            5]RxRPC session sockets RxRPC 回话套接字支持  
            6]Phonet protocols family Phonet协议族支持
            7]Wireless 无线电协议支持
            8]WIMAX Wireless Broadband support WIMAX无线宽带支持
            9]RF switch subsystem support RF 交换子系统支持
            10]Plan9 ResourceSharing(9P2000) 9计划资源共享支持
    4.2.5 设备驱动支持相关先徐昂(Device drivers)
            ****************插入图片**************************

           
            1]Connector--unified userspace<->kernelspace linker 用户空间和内核空间的统一连接器
            2]memory technology Devices(MTD)support MTD 设备支持,嵌入式系统使用
            3]Debugging 调试功能
            4]MTD concatenating support 连接多个mtd设备,例如使用jffs2管理多篇flash,只有一篇flash时不选择
            5]MTD partitioning support MTD测试支持
            6]RedBoot partition table parsing 使用Reboot解析Flash分区表,如果需要读取这个分区表信息就选择此项
            7]Command linepartitiontable parsing 允许通过内核命令行传递MTD分区表信息
            8]ARM Firmware Suite partition parsing 使用AFS分区信息
            9]TI AR7 partitioning support AR7 分区支持
            10]Direct char device access to MTDdevices 将系统中的MTD设备看做字符设备进行读写
            11]Caching block device access to MTD devices 文件系统挂载后,模拟块设备访问,常用语只读文件系统,如果是DiskOnChip 使用NTFL方式
            12]FTL(Flash Translation Layer)support 提供对Flash翻译层支持,可以不选
            13]NFTL(NAND Flash Translation Layer)
            14]INFTL(Inverse Nand flash tranlsation layer)DiskOnChip使用
            15]Resident Falsh Disk 提供RFD支持,为嵌入式系统提供类似BIOS功能
            16]Nand SSFDC(SmartMedia)read only translation layer nand ssfdc只读翻译层
            17]Log panic/opps to an MTD buffer MTD缓冲区日志
            18]RAM/ROM/Flash chip drivers RAM/ROM/Flash 芯片驱动
            19]Mapping drivers for chip access 为芯片的访问方式选择Mapping驱动
            20]Self-contained MTD device drivers 自身包含MTD设备驱动,一般不选
            21]Nand Device Support Nand Flash支持
            22]OneNand Device Support One Nand相关驱动
            23]LPDDR flash memory drivers LPDDR Flash 内存驱动
            24]UBI-Unsorted block images 只提供UBI支持
            25]Parallel port support 并口支持
            26]Block devices 块设备
            27]Bluetooth subsystem support 蓝牙支持
            28]RxRPC session  sockets RxRPC会话套接字支持
            29]Phonet protocols family Phonet 协议族支持
            30]Wireless 无线电协议支持
            31]WIMAX Wireless Broadband support WIMAX 无线宽带支持
            32]RF switch subsystem support RF交换子系统支持
            33]Plan 9 Resource Sharing Support
            
    4.2.6   文件系统类型(File System),kernel 制作完成,需要FS,在此处选择支持的格式
            1]Second extended fs support ext2文件系统支持
            2]Ext3 journaling file system support Ext3文件系统
            3]The Extended 4 filesystem   ext4 文件系统
            4]FUSE(Filesystem in Usespace)support 在用户空间挂载文件系统,建议选择
            5]CD-ROM/DVD Filesystems ISO9660,UDF等文件系统支持
            6]DOS、FAT,NT Filesystem FAT/NTFS文件系统支持,如果用于访问存储设备,并包含windowwindows文件时选择
            7]Pseudo filesystems 伪文件系统,多指内存中的文件系统
            8]Miscellaneous filesystems 杂项文件系统,包括ADFS,BFS,BeFS,HPFS等,比较少,建议不用
            9]Network File System NFS开发过程使用
            10]Partition Types 分区类型,包含多种类型,嵌入式很少使用
            11]Distributed Lock Manager DLM分布式锁管理器
            12]
            13]
            14]
            15]
            16]
    4.2.7   安全选项(Security option),建议不选
            黑客选项(Kernel hacking),建议不选
            Cryptographic API--包含内核加密算法,很少用建议不选
    4.2.8   其他选项
            Bus Support 总线接口支持,嵌入式不选
            CPU Power management 包含电源管理,嵌入式不选
            Floating 包含总线接口,嵌入式不选
            Library routines 包含库配置,主要提供CRC支持,通信类产品选择对应CRC
    

4.3 内核裁剪及编译
    4.3.1 源码
    4.3.2 编译环境
    4.3.3 配置内核
        1]选择System V IPC
        2]Initial RAM filesystems and RAM disk(initramfs/initrd)support在制作Ramdisk文件系统时选择
        3]模块加载方式只选择Module unloading,其他不选,因为Force安全隐患,Module unloading支持动态卸载模块,减少内核占用资源
        4]如果对磁盘调度无特殊要求,block layer不做配置
        5]系统类型选择S3C2410 DMA support force Uart FIFO on during boot process
        6]ARM EABI 的FloatPoint Performance只用Vector Float Point 极大提高涉及浮点运算的速度,如果内核支持EABI,则选择此项
        7]启动参数,BootLoader启动后会将ramdisk大小,命令行字符串等信息传递给内核,然后启动内核,对选项具体地址和参数。内核大小,文件系统大小来定
        8]设备驱动选择,特别是在发动驱动和系统移植时
4.4 内核升级
    内核升级和内核源
4.4.1:文件能升级
     模拟移植过程
       1]拷贝代码
       2]打补丁 patch
       3]修改makefile
       ARCH =arm/*/kernel
       CROSS_COMPILE= 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值