分享
分销 收藏 举报 申诉 / 30
播放页_导航下方通栏广告

类型Linux2.6内核的定制.doc

  • 上传人:二***
  • 文档编号:4763207
  • 上传时间:2024-10-12
  • 格式:DOC
  • 页数:30
  • 大小:1.68MB
  • 下载积分:5 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Linux2 内核 定制
    资源描述:
    一Linux内核结构 Linux内核主要有五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。 进程调度(SCHED):Linux2.6内核推出了一种内嵌0(1)调度算法的调度器,该算法在进程间切换时有恒定的时间复杂度O(1)。该调度器在进程调度性能、实时性、内核可抢占中发挥了极大的作用,迎合了嵌入式的要求。 内存管理(MM):Linux操作系统支持虚拟内存,允许多个进程共享内存区域,而Linux2.6版本又引进了基于页的反向映射技术,显著地改善了虚拟内存在一定负载下的性能。该技术提供了一个发现哪些进程正在使用给定的内存物理页的机制。 虚拟文件系统(VirtualFileSystem,VFS):虚拟文件系统使Linux安装和支持不同类型的文件系统成为可能。它对Linux的每个文件系统的所有细节进行了抽象,使得不同的文件系统在Linux内核及其进程看来都是相同的。 网络接口(NET):网络向来都是Linux引以自傲的强项,它提供了对各种网络标准的存取和各种网络硬件的支持。 进程间通信(IPC):linux不但支持单个计算机进程间的通信,而且支持基于Socket的进程间通信 这五个子系统除了各自完成自己的功能外,还是相互依赖功能完成linux内核应有的义务。在多道程序环境下,程序要运行必须要进程调度,而进程调度的第一件事就是通过内存管理为程序和数据分配内存;进程间通信中的共享内存通信机制则需要内存管理的协助;虚拟文件系统是在网络接口的基础上来支持网络文件系统(NFS)。Linux内核个子系统及其依赖关系开用图2-4-1来表示。 内存管理 虚拟文件系统 文件系统 进程调度 进程间通信 网络接口 图2-4-1 Linux内核子系统及其以来关系 二 Linux2.6内核源码目录结构分析 在linux的内核源码一般都安装在/usr/src/linux目录下,在安装linux发行版本,如Red Hat、ubuntu等过程中我们可以选择是否安装linux内核源码。对linux内核的研究,当然首先要对其源码目录结构了解一下。不同版本的linux内核其源码组织结构没有多大的差别,都是以树形结构组织的,但本次分析以linux2.6.19为例。Linux内核源码的结构目录(简单的树形结构图见附录B)如下: 1) arch目录 此目录下包括了所有与体系结构有关的核心代码,其下的每一个子目录都代表一种体系结构。Linux支持众多的处理器体系结构,主流的有x86系列处理器、arm系列的处理器、mips体系结构处理器。这些体系结构在本目录下都有其对应的子目录。每一个子目录下又至少包含三个子目录:kernel,存放支持体系结构特有的诸如信号处理和SMP之类特征的实现;lib,存放高速的体系结构特有的诸如strlen和memcpy之类的通用函数的实现;mm,存放了体系结构特有的内存管理程序的实现。除此之外,大部分的体系结构子目录还包含了供附加特性或改进组织使用的其他子目录。 2) COPYING文件 该文件中是GPL版权声明。 3) documentation目录 这个目录下没有内核源码,是一些内核相关的文档,但是这些文档只是对内核部分源码的解释和描述,有些内核模块该目录中并没有相应的文档。 4) drivers目录 在这个目录中是系统所有的设备驱动程序。Linux又将这些驱动程序分成不同的种类,每个种类存在不同的子目录中,如char主要是字符设备驱动程序,block主要是快设备的驱动程序,scsi是scsi设备的驱动目录,net是网络设备的驱动程序目录等等。而这些驱动目录有些是和处理器体系结构相关的,如Zorro总线只是Amiga特有,pci也只是针对部分平台的。 5) fs目录 该目录存放了linux支持的文件系统代码和各种类型的文件操作代码。其中的每一个子目录代表了一种文件系统,其中有ext3子目录存放ext3文件系统代码,nfs目录存放了网络文件系统(NFS)的代码。要指出的是,在nfs子目录中的网络文件系统代码是依赖于drivers目录下的net子目录中的网络驱动程序的。 6) include目录 该目录包含了编译内核所需要的大部分头文件。在建立交叉编译环境时也用得到该目录下的文件。其下的子目录中的代码部分是与体系结构有关的,而部分则是无关的。 “asm-*”格式的子目录是与体系结构有关的,它们每一个都对应arch目录下的一个子目录。每个子目录下的文件支持给定体系结构所必须的预处理宏和短小的内联函数。这些内联函数全部或是部分的使用汇编编写,而且在C或者汇编代码中都会用到这些文件。当我们编译内核时,系统将建立一个include/asm到给定体系结构特有的子目录的符号链接。 linux子目录中的文件多数是与体系结构无关的。其中包含了内核和用户应用程序请求内核服务时所需要的常量和数据结构。在安装内核时,这些头文件将被复制或链接到/usr/src/linux下,这样用户就可以很方便的通过#include来实现内核服务的调用。 还有一些子目录也是与体系结构无关的,但其只是对内核来说是必须的,对用户的应用程序没有必要。如net子目录(与网络子系统有关的头文件),scsi子目录(与SCSI控制器和SCSI设备有关的头文件),video子目录(与显卡和帧缓冲有关的头文件)。 7) init目录 包含了内核的初始化代码。其用来实现内核运行前的初始化工作。 8) ipc目录 该目录包含了内存共享、信号量及其它进程间通信的代码 9) kernel目录 该目录包含了linux内核中最重要的部分。主要包括了进程调度(sched.c)、进程创建(fork.c)和进程销毁(exit.c)等。这些代码大多是与体系结构无关的,而与体系结构有关的相关代码在arch/*/kernel中可以找到。 10) lib目录 其下文件主要有两部份。其中inflate.c文件中的函数能够在系统启动时展开经过压缩的内核。其余的文件中是些对所有的内核代码都通用的函数。有字符串和内存操作方面的函数等等。这些都是体系结构无关的代码。与体系结构有关的相关代码在arch/*/lib下可找到。 11) MAINTAINERS目录 该目录存放了对当前版本linux内核做出贡献的的人员列表。 12) Makefile文件 顶层的Makefile文件是整个内核编译、配置的总体控制文件;位于arch/*/下的Makefile文件是针对相应的体系结构的Makefile文件;位于其他子目录下的Makefile文件则负责自己当前目录下的代码编译。 13) Kbuild文件 该文件在内核的编译时要用到。其中预定义了一些变量和目标,使内核的编译和扩展很方便。 14) mm目录 该目录包含了所有的与体系结构无关的内存管理代码,如页式存储管理、内存的分配和释放等。另外,与linux2.6新增的基于页的内存反向映射技术的实现代码也在该目录下。在目录arch/*/mm目录下存放了和体系结构相关的内存管理代码。 15) net目录 该目录下是部分的网络相关代码,主要是高层的网络代码。这个层次的代码可以根据数据包将数据传递给用户层的应用程序,或是丢弃数据,或是在内核中使用。其下的子目录core中包含了大部分的网络协议都用到的代码。特定的网络协议代码在相应的net子目录下,如在ipv4子目录下可以找到版本4的IP代码,在bluetooth子目录下可以找到有关蓝牙的代码。 16) README文件 此文件中主要是内核及其编译配置方法简单介绍。 17) REPORTING-BUGS文件 其内部是些有关报告bug的一些内容。 18) scripts目录 其下包含了用于配置内核的脚本文件。 19) cryto目录 该目录下包含了一些内核本身加密所用到的加密API。其中包括MD4、MD5等加密算法。 20) security目录 该目录下主要是不同Linux安全模型的代码。 21) sound目录 该目录下放的是声卡驱动和其他与声音相关的代码。 22) usr目录 此目录下的代码用于构建包含root文件系统映像的cpio格式的归档文件,用于早期用户空间。 在linux内核源码目录中,与体系结构有关的源码,大多存放在arch目录下,但在include目录下也有部分与体系结构有关的代码。虽说linux2.6.19内核源码的大小达200M之多,但是drivers目录就有100M,在drivers目录中的驱动代码很大一部分是不用而且没有必要编译进内核的,只是在需要时编译或着是以模块的方式加载进内核。而且在其它目录中实现的内核代码也并不是都要编译进内核的,由于linux内核的可定制、裁剪性,其实最后编译进内核的代码部分很少的。其代码之所以这么大,也是为了支持更多的体系结构和硬件设备,为了提供更多、更好的功能供内核用户定制、选择。 三 嵌入式linux的启动过程 我们要对linux进行移植,首先要明白我们要移植哪些东西,做哪些事情才能实现我们的最终目的。而指导我们移植过程的当属linux的启动过程。Linux的启动是从系统上电一直到系统的第一个进程建立起来的整个过程。对这个过程的分析能够使我们明白我们在做些什么,要做些什么以及为什么要做这些的问题。 从软件的角度来看嵌入式linux,其主要分为4个层次:引导加载程序、linux内核、文件系统、用户的应用程序。而在linux的启动分析上,我们只做引导加载程序、linux内核启动运行过程、文件系统的挂载这三个方面的分析。说到底这三个过程的启动以及运行,也是为了用户的应用程序能过更好、更快的运行,这也正是嵌入式操作系统的真正目的所在。 1 bootloader引导加载 在PC机上的系统引导是由BIOS来完成的,它是系统上电后的第一段程序。然而在嵌入式系统上一般不存在BIOS,那它的工作就只能用其它的东西来代替,那就是bootloader。常见的bootloader有uboot、vivi等。我们本次课题研究中用的是vivi。虽说bootloader能够执行一些用户的命令,当总的来说,bootloader的目标是正确的调用linux内核来执行。在加载内核前,bootloader还要进行一些硬件的初始化和寄存器配置。主要有以下几点:(1)设置中断和异常向量;(2)按系统启动的最小配置,设置ARM处理器寄存器;(3)设置看门狗;(4)配置所使用的存储器;等等。另外,bootloader还有完成下面的功能: 1) 初始化RAM 通过设置CPU的控制寄存器参数等动作来初始化RAM,为调用linux内核做准备。 2) 初始化串口 串口是嵌入式linux内核与互用交互的主要方式之一。在linux内核启动前将串口初始化,可以将linux的启动信息通过串口显示给用户,方便用户了解启动过程,在我们的内核编译、调试过程中也很有用的。注:这个过程并不是bootloader必须的,只是为了我们的方便才这样做的。 3) 检测处理器类型和设置启动参数 这个过程是为linux内核的启动提供有关硬件的信息和必要的系统参数。 4) 调用linux内核镜像 对于nand flash这样的非易失性存储器,需要将linux内核复制到RAM中,它才能运行,这个工作是由bootloader完成的,它也是bootloader的最后一个工作。然后,CPU跳转到RAM中的linux内核去执行。 图2-5-1 表述了bootloader的工作过程。 2 linux内核的启动 对于linux内核总的分两种:压缩内核与非压缩内核。在本次研究课题中,我们用的是压缩内核,所以在此只分析压缩内核的启动方式,其实,对于非压缩内核的启动只是没有解压缩过程而已。对于linux内核的启动主要分为以下几个步骤: 1) 解压压缩的内核 对于arm处理器,编译后的压缩内核文件将在arch/arm/boot/compressed目录下产生。该目录下的代码的主要工作就是对内核的压缩和解压缩。内核压缩文件zImage的入口程序是head.S文件,改文件完成一些内核启动前的初始设置。然后,head.S将调用misc.c文件中的decompress_kernel()函数。在decompress_kernel()函数中,调用函数proc_decomp_setup()和函数arch_decomp_setup(),最后调用gunzip()解压内核。 2) 进入内核,建立页表 内核解压完毕后,将跳转到解压后内核的基地址处。该地址处执行的第一个文件是arch/arm/kernel/head-armv.S。在该文件中,调用汇编子函数__lookup_processor_type来完成处理器内核类型的检测,然后调用__lookup_processor_type完成 对处理器类型的检测。当处理器内核和处理器类型检测结束后,调用__create_page_tables来建立页表。 3) 内核的初始化 在上一步建立页表后,CPU掉转到start_kernel()函数处。在该函数中完成一些剩余的与硬件相关的初始化工作。最后创建init进程。 4) 挂载根文件系统 挂载根文件系统是由init进程来完成的。图2-5-2表述了内核的启动过程。 配置寄存器并设置中断和异常向量 初始化RAM 检测处理器类型和设置启动参数 调用内核镜像 解压缩内核 建立页表 启动内核并初始化内核 启动init进程并挂载根文件系统 图2-5-1 bootloader工作流程 图2-5-2 内核启动过程 四 内核配置系统 Linux内核的配置系统主要有两部分部分组成,分别是: 配置文件:它包括顶层的Makefile文件,内核配置文件.config,各种架构下的Makefile文件,scripts目录下各种通用的Makefile规则以及各目录下的Kbuild文件。 配置工具:对于linux2.6内核,它提供了四种用于内核配置的编辑器:config 服务于内核设置的一个冗长的命令行界面;oldconfig 一个文本模式的界面,主要包含一个已有设置文件,对用户所发现的内核资源中的设置变量进行排序;menuconfig 一个基于光标控制库的终端导向编辑器,可提供文本模式的图形用户界面;xconfig 一个图形内核设置编辑器,需要安装X-Window系统。 在这里我们选用了menuconfig配置方式。首先,进入宿主机的终端,进入linux2.6内核源码目录,将其作为我们的当前工作目录。然后,在输入命令”make menuconfig”,在该编译模式下,内核配置选项是以树状方式进行组织的。后面有”--->”的代表其有下级目录。选项的选择符号有三种:”*”在内核编译时直接被加载进内核;“M”以模块的方式进行编译但不直接加载进内核;“”既不加载进内核也不进行以模块方式编译。 五 内核配置选项 为了能够对使编译后的内核满足我们的需求,需要对内核的编译配置选项进行分析,在此我们仅分析一些比较常用和重要的配置选项。内核配置的顶级选项如下图。 图 3-2-1 menuconfig 顶级选项 1) Code maturity level options 代码成熟度选项 Prompt for development and/or incomplete code/drivers 对尚在开发中的或尚未完成的代码与驱动进行提示。不选择它。 2) General setup Support for paging of anonymous memory(swap)使用交换分区或者交换文件来做为虚拟内存。 System V IPC System V进程间通信(IPC)支持,许多的程序都需要这个功能的。 3) Loadable module support 可加载模块支持,如图3-2-2 Eable loadable module support 打开可加载模块支持。 Module unloading 允许卸载已经加载的模块。 Force module unloading允许强制卸载正在使用的模块,这是比较危险的,一般情况下这个选项是不选的。 Module versioning support允许使用其它版本的模块。这样可能会出现些问题,在我们linux2.6内核的研究中,此选项不应选择。 Source checksum for all modules为所有的模块校验源代码,在本次课题中我们要自己些驱动源码,所以这一项最好编译进内核。 Automatic kernel module loading让内核运行modprobe来自动加载所需要的模块,比如可以自动解决模块间的依赖关系。 图 3-2-2 Loadable module support 4) process type and feature中央处理器类型及特性 preemption Model内核抢占模式。 no forced preemption(server)适用于服务器环境的禁止内核抢占。 voluntary kernel preemption(Desktop)适合普通桌面环境的资源内核抢占。 preemptible kernel(low_Latency Desktop)适合于嵌入式系统。 high memory support 最高内存支持,总内存小于或者等于1G时,选“off”。 5) networking网络 在Networking下有个networking options选项,进入该选项,如图3-2-3。 图3-2-3 Networking options TCP/IP networking 支持TCP/IP协议,这个当然要选择的 6) Device Drivers 在Generic driver options下选项: Select only drivers that don't need compile-time external firmware只显示那些不需要内核对外部设备的固件作map支持的驱动程序。 Userspace firmware loading support 提供某些内核之外的模块需要的用户空间固件加载支持,在内核树之外编译的模块可能需要它。 在Network device support下: Network device support 网络设备支持,本课题要通过网络调试的,这要选择上编译进内核。 7) File Systems 文件系统 在本次课题中,我们用到了很多文件系统,例如yaffs2、cramfs、sysfs等。 Second extended fs support EXT2文件系统支持,在桌面操作系统中常用,在嵌入式领域用的较少。 ROM file system support 内存文件系统的支持,在嵌入式中是很常用的。 在Netwok File Systems(如图3-2-4)下有: NFS file system support NFS文件系统支持,在系统的调试过程中,要用到NFS来共享主机的文件,这要编译进内核的。 图3-2-4 Network File Systems 第四章 Linux内核的移植 4.1 交叉编译环境的建立 Linux2.6的交叉编译环境主要包括以下几个部分: 1、针对目标系统的二进制工具binutils。其中包括了连接器、汇编器和用于维护目标文件和文档的二进制工具; 2、目标系统的内核头文件。在编译内核时,文件之间的相互依赖和函数、变量、宏的定义等需要头文件的支持。编译过程中,要能够找到相关的头文件,所以要把配置好的内核的头文件复制到编译器的默认头文件存放处。 3、目标系统的标准C库。在编译内核时,需要C库的支持。 4、针对目标系统的交叉编译器ARM-LINUX-GCC。 其建立过程流程图如图4-1-1。 配置环境变量 创建工作目录 编译安装binutils 首次安装GCC 编译安装GLIBC库 安装完整的GCC 配置和复制头文件 图4-1-1 交叉编译环境建立流程图 在建立交叉编译环境时,需要两次编译GCC。第一次编译GCC是不需要GLBC库支持的,编译它的目的是为其下一步的编译GLIBC提供编译器。第二次编译GCC需要GLIBC的支持,是一个完整的GCC编译器。 编译后的交叉编译工具如图4-1-2。 图4-1-2 交叉编译工具 4.2 linux-2.6.19内核的编译 4.2.1修改Makefile 修改内核源码顶层的Makefile文件,修改其中的ARCH和CROSS_COMPILE变量,修改后的结果为: ARCH ?=arm CROSS_COMPILE?=arm-linux- 4.2.2设置nand flash分区信息。 修改arch/arm/mach-s3c2410/common.c文件。 修改的内容如下: static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "vivi", .size = SZ_128K, .offset = 0, }, [1] = { .name = "param", .offset = SZ_128K, .size = SZ_1M-SZ_128K, }, [2] = { .name = "kernel", .offset = SZ_1M, .size = SZ_2M, }, [3] = { .name = "root", .offset = SZ_2M+SZ_1M, .size = SZ_4M, }, [4] = { .name = "user", .offset = SZ_1M * 7, .size = SZ_1M * 57, }, }; 注:对于不同版本的linux2.6内核,设置分区的文件可能不同。 4.2.3 指定启动时初始化 修改文件arch/arm/mach-s3c2410/mach_smdk2410.c。 在smdk2410_devices[]中添加&s3c_device_nand,如下 static struct platform_device *smdk2410_devices[] __initdata = { … &s3c_device_iis, /* 添加如下语句即可 */ &s3c_device_nand, }; 4.2.4禁止nand flash的ECC校验 修改文件drivers/mtd/nand/s3c2410.c文件,查找函数s3c2410_nand_init_chip(),在函数的最后一行,添加chip->ecc.mode=NAND_ECC_NONE; 4.2.5支持启动时挂载devfs Devfs是linux-2.6.12及其以前版本的设备文件系统,但是在linux-2.6.13及其以后的版本中用得是udev。但是,为了能够使内核能够支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,修改fs/Kconfig文件,修改方式如下: 查找menu “Pseudo filesystems” 在其后添加以下内容: config DEVFS_FS bool "/dev file system support (OBSOLETE)" default y config DEVFS_MOUNT bool "Automatically mount at boot" default y depends on DEVFS_FS 4.2.6内核的配置 1) 载入s3c2410的默认配置文件 S3c2410的默认配置文件为arch/arm/configs/s3c2410_defconfig 在kernel/linux-2.6.19目录下执行如下的命令: [root@vm-dev linux-2.6.19]#cp arch/arm/configs/s3c2410_defconfig .config 根据提示覆盖原./config文件。 2) 手动配置内核 在s3c2410_defconfig的基础上,增加一些配置选项(见附录A)。 4.2.7编译内核 1) 内核的编译操作 #make menuconfig 配置编译选项 #make dep 提供变量依赖关系信息 #make clean 删除生成的模块和目标文件 #make zImage 编译内核生成压缩的映像 #make modules 编译模块 #make modules_install 安装编译完成的模块 2) 生成压缩的内核映像 [root@vm-dev linux-2.6.19]#make dep [root@vm-dev linux-2.6.19]#make zImage 至此,内核的编译工作完成,在arch/arm/boot目录下生成了zImage文件,即为压缩的内核映像。 4.3 根文件系统的建立 内核启动后,需要挂载根文件系统。根文件系统中存放了linux下的一些必需的目录和配置文件。如果没有根文件系统,内核虽然能够正常的启动,但是并不能运行用户程序。在本次毕业设计中利用了busybox生成根文件系统中的命令,根文件系统式利用的cramfs压缩文件系统。根文件系统的建立流程如图4-3-1。 Busybox编译成功后,需要将其中编译好的bin和sbin目录拷贝到根文件系统的目录下。这两个文件中存放了一些常用的linux命令。 在创建配置文件时,需要创建linuxrc、inittab、rcS、fstab等配置文件。在linux内核启动完毕后,首先运行脚本linuxrc,它负责挂载一些文件系统。然后,运行init进程,该进程依赖inittab文件运行。最后要运行rcS脚本,该脚本可执行用户需要的一些命令,如文件系统的挂载、库文件路径的设置等。 编译busybox 创建linux目录树 创建配置文件 创建设备节点 创建C库 制作cramfs压缩文件系统 图4-3-1 根文件系统的建立流程 4.4 开发板的烧写 利用JTAG将vivi烧写到开发板上,然后,启动vivi利用vivi中的load命令依次将内核和根文件系统镜像烧写到开发板上。内核的烧写如图4-4-1。 图4-4-1 内核的烧写 4.5 启动内核 重新启动ARM2410S开发板,按回车键启动linux内核。部分内核启动信息如图4-5-1、图4-5-2和图4-5-3。 图4-5-1 linux2.6内核启动信息 图4-5-1 linux2.6内核启动信息 图4-5-1 linux2.6内核启动信息 4.6 内核的测试 编写test.c,进行交叉编译用来测试新内核。test.c代码见附录。 #include <stdio.h> int main() { printf(“The kernel of linux2.6.19 transplanted by LiangBaoqiang success!\n”); } 建立调试环境,运行test。结果如图4-6-1。 图4-6-1 内核测试 第八章linux2.4与linux2.6驱动开发比较 在linux2.6内核中,对设备的驱动程序做了很大的改进,其首次采用了udev架构做为驱动程序开发架构。以下为linux2.6相对于linux2.4内核在驱动开发方面的改进: Linux2.4 Linux2.6 File_operaions的定义方式 read:xxxread的方式定义 .read=xxxread的方式定义 注册的方法 用函数int register_chrdev(unsigned major, char * name, struct file_operation * fops)来实现的 用函数int register_chrdev_region(dev_t from, unsigned count, char *name)和函数int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, char *name)来实现,前者是用来静态注册地,后者是用于动态注册 模块引用计数的方式 靠MOD_INC_USE_COUNT和MOD_DEC_USE_COUNT两个宏来实现模块引用计数的加减的 驱动程序的开发者不用关心此问题,驱动的底层已经实现了引用计数机制 模块的编译方式 只需要内核的头文件就可以,生成*.o的文件 需要内核的头文件,它还需要系统内核树的支持,首先生成*.o文件,再生成*.ko文件 附录 附录A Linux2.6.19内核配置 Loadable module support >(如图10-1) [*] Enable loadable module support [*] Automatic kernel module loading  System Type >(如图10-2) [*] S3C2410 DMA support Boot options >(如图10-3) Default kernel command string: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 mem=64M  Floating point emulation > [*] NWFPE math emulation  Device Drivers >(如图10-4) Memory Technology Devices (MTD) >        [*] MTD partitioning support              [*] Command line partition table parsing RAM/ROM/Flash chip drivers >                 <*> Detect flash chips by Common Flash Interface (CFI) probe                 <*> Detect nonCFI AMD/JEDECcompatible flash chips                 <*> Support for Intel/Sharp flash chips                 <*> Support for AMD/Fujitsu flash chips                 <*> Support for ROM chips in bus mapping NAND Flash Device Drivers > <*> NAND Device Support <*> NAND Flash support for S3C2410/S3C2440 SoC Character devices >             [*] Nonstandard serial port support             [*] S3C2410 RTC Driver       File systems >(如图10-5)         <> Second extended fs support #去除对ext2的支持         Pseudo filesystems >(如图10-6)             [*] /proc file system support             [*] Virtual memory file system support (former shm fs)             [*] /dev file system support (OBSOLETE)             [*] Automatically mount at boot (NEW)      #这里会看到我们前先修改fs/Kconfig的成果,devfs已经被支持上了         Miscellaneous filesystems >(如图10-7)             <*> Compressed ROM file system support (cramfs)            <*> YAFFS2 file system support                  #支持yaffs2 [*] Lets Yaffs do its own ECC         Network File Systems >             <*> NFS file system support [*] NFS file system support [*] Provide NFSv3 client support [*] Provide client support for the NFSv3 ACL protocol extension [*]  Provide NFSv4 client support (EXPERIMENTAL)  [*]   Allow direct I/O on NFS files (EXPERIMENTAL)  [ ] NFS server support  [*] Root file system on NFS  图10-1 Loadable module support配置 图10-2 System Type选择 图10-3 Boot option配置 图10-4 mtd配置 图10-5 file systems配置 图10-6 Pseudo filesystems配置 图10-7 Miscellaneous filesystems配置 附录B Linux内核源码树形结构图 init 内核初始化代码 kernel 内核核心部分:进程、定时、程序执行、信号、模块。。。 mm 内存处理 arch 平台相关代码     i386 IBM的PC体系结构        kernel 内核核心部分        mm 内存管理        lib 硬件相关工具函数        boot 引导程序           compressed 压缩内核处理           tools 生成压缩内核映像的程序     arm 基于ARM处理器的体系结构 fs 文件系统     proc /proc虚拟文件系统     devpts /dev/pts虚拟文件系统     ext2 Linux本地的Ext2文件系统     nfs 网络文件系统(NFS)     msdos 微软的MS-DOS文件系统     vfat 微软的Windows文件系统(VFAT)     m
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:Linux2.6内核的定制.doc
    链接地址:https://www.zixin.com.cn/doc/4763207.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork