




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式课程设计嵌入式linux内核编译与裁剪姓名:白潇学号:200705030123老师:冷小鹏一 Linux内核分析1操作系统一个完整可用的操作系统主要由 4部分组成:硬件、操作系统内核、操作系统服务和用户应用程序,用户应用程序是指那些字处理程序、Internet浏览器程序或用户自行编制的各种应用程序;操作系统服务程序是指那些向用户所提供的服务被看作是操作系统的部分功能的程序。在 Linux操作系统上,这些程序包括 X窗口系统、shell命令解释系统以及那些内核编程接口等系统程序;操作系统内核程序即是本书所感兴趣的部分,它主要用于对硬件资源的抽象和访问调度。 用户应用程序 操作系统服务 操作系统内核 硬件系统 2操作系统组成部分Linux内核的主要用途就是为了与计算机硬件进行交互,实现对硬件部件的编程控制和接口操作,调度对硬件资源的访问,并为计算机上的用户程序提供一个高级的执行环境和对硬件的虚拟接口。 3 .Linux内核模式操作系统内核的结构模式主要可分为整体式的单内核模式和层次式的微内核模式。单内核模式的主要优点是内核代码结构紧凑、执行速度快,不足之处主要是层次结构性不强。 在单内核模式的系统中,操作系统所提供服务的流程为:应用主程序使用指定的参数值执行系统调用指令(int x80),使CPU从用户态(User Mode)切换到核心态(Kernel Model),然后操作系统根据具体的参数值调用特定的系统调用服务程序,而这些服务程序则根据需要再底层的一些支持函数以完成特定的功能。在完成了应用程序所要求的服务后,操作系统又从核心态切换回用户态,返回到应用程序中继续执行后面的指令。因此概要地讲,单内核模式的内核也可粗略地分为三个层次:调用服务的主程序层、执行系统调用的服务层和支持系统调用的底层函数。 主程序 系统服务 支持函数 4.单内核模式的简单结构模型 Linux内核系统体系结构Linux 内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。 进程调度模块用来负责控制进程对 CPU资源的使用。所采取的调度策略是各进程能够公平合理地访问 CPU,同时保证内核能正时地执行硬件操作。内存管理模块用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多大的内存容量。并可以利用文件系统把暂时不用的内存数据块会被交换到外部存储设备上去,当需要时再交换回来。文件系统模块用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容的多种文件系统格式。进程间通信模块子系统用于支持多种进程间的信息交换方式。网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。 进程调度 进程间通信内存管理 虚拟文件系统 文件系统 网络接口 5.Linux内核系统模块结构及相互依赖关系所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可继续运行。例如,当一个进程试图将一数据块写到软盘上去时,软盘驱动程序就可能在启动软盘旋转期间将该进程置为挂起等待状态,而在软盘进入到正常转速后再使得该进程能继续运行。另外3个模块也是由于类似的原因而与进程调度模块存在依赖关系。 其它几个依赖关系有些不太明显,但同样也很重要。进程调度子系统需要使用内存管理器来调整一特定进程所使用的物理内存空间。进程间通信子系统则需要依靠内存管理器来支持共享内存通信机制。这种通信机制允许两个进程访问内存的同一个区域以进行进程间信息的交换。虚拟文件系统也会使用网络接口来支持网络文件系统(NFS),同样也能使用内存管理子系统来提供内存虚拟盘(ramdisk)设备。而内存管理子系统也会使用文件系统来支持内存数据块的交换操作。 除了这些图中已经给出的依赖关系以外,所有这些模块还会依赖于内核中的通用资源。这些资源包括内核所有子系统都会调用的内存分配和收回函数、打印警告或出错信息函数以及一些系统调试函数。 6.Linux内核源代码的目录结构由于 Linux内核是一种单内核模式的系统,因此,内核中所有的程序几乎都有紧密的联系,它们之间的依赖和调用关系非常密切。所以在阅读一个源代码文件时往往需要参阅其它相关的文件。因此有必要在开始阅读内核源代码之前,先熟悉一下源代码文件的目录结构和安排。Linux内核完整的源代码目录,包括其中的子目录。然后逐一介绍各个目录中所包含程序的主要功能,使得整个内核源代码的安排形式能在我们的头脑中建立起一个大概的框架, 使用tar命令将linux-0.11.tar.gz解开时,内核源代码文件被放到了 linux目录中。其中的目录结构为: linux boot系统引导汇编程序 fs 文件系统 include头文件(*.h) asm与CPU体系结构相关的部分 linuxLinux内核专用部分 sys系统数据结构部分 init内核初始化程序 kernel内核进程调度、信号处理、系统调用等程序 blk_drv块设备驱动程序 chr_drv字符设备驱动程序 math数学协处理器仿真处理程序 lib 内核库函数 mm 内存管理程序 tools生成内核Image文件的工具程序 该内核版本的源代码目录中含有 14个子目录,总共包括 102个代码文件。二Linux内核编译1.内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。2.内核版本号由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral-教堂模型-对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。到目前为止,稳定树的最高版本是2.2.16,最新发布的Redhat7.0所采用的就是2.2.16的内核。为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:a自己定制编译的内核运行更快(具有更少的代码)b系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)c不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 d将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 3.内核编译模式 如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是得自己来调用这些模块。新版本内核的获取和更新:linux-2.4.0-test8.tar.bz2 18M将需要升级的内核拷贝到/usr/src/下,命令为#cp linux-2.4.0test8.tar.gz /usr/src #cd /usr/src #rm -f linux 现在解压下载的源程序文件。命令: #tar -xzvf linux-2.4.0test8.tar.gz 防止在升级内核的时候会不慎把原来版本内核的源程序给覆盖掉了。处理: #mv linux linux-2.4.0test8 #ln -s linux-2.4.0test8 linux 下载了patch文件, patch-2.4.0test8,进行patch操作(下面假设patch-2.4.0test8已经位于/usr/src目录下了,): #patch -p0 代码成熟等级选项Prompt for development and/or incomplete code/drivers 第二部分 :除以下选项,其它全部删除General setupSystem V IPC (IPC:Inter Process Communication)第三部分:除以下选项,其它全部删除Loadable module support - Enable loadable module support第四部分:全部删除Block layer-块设备第五部分:除以下选项,其它全部删除Processor type and features - 处理器类型Subarchitecture Type (PC-compatible) -使Linux可以支持多种PC标准,使用的PC机是遵循所谓IBM兼容结构(pc/at)。选择一些其它架构。选择PC-compatible。Processor family(386) :对每种CPU做最佳化,让它跑的好又快,选的是386第六部分:除以下选项,其它全部删除Power management options (ACPI, APM) - 电源管理选项 Power Management Debug Support 电源管理的调试信息支持, ACPI Support -高级电源接口配置支持, Button 这个选项用于注册基于电源按钮的事件,第七部分:除以下选项,其它全部删除Bus options (PCI, PCMCIA, EISA, MCA, ISA) - 总线选项PCI supportPCI access mode (Any) - PCI外围设备配置,选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。第八部分:除以下选项,其它全部删除Executable file formats -Kernel support for ELF binaries ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。要选。第九部分:除以下选项,其它全部删除NetworkingNetworking options -Unix domain socketsTCP/IP networking第十部分:除以下选项,其它全部删除Device Drivers -设备驱动Block devices-Compaq SMART2 support Compaq Smart Array 5xxx support Loopback device support RAM disk supportSCSI device support - 里面有关于USB支持的,要选择SCSI device support USB要用,必须选择legacy /proc/scsi/ support USB要用,必须选择SCSI disk support USB要用,必须选择SCSI Low-level driversSerial ATA(SATA) supportIntel PIIX/ICH SATA support 这个必须选择,否则无法产生引导文件Via SATA supportNetworking device support - 这个下面是选网卡驱动,一定要选Ethernet(1000mbit)-我的电脑是千兆网卡所以就选这个broadcom Tigon3supportInput device support - 这个里面要设置你的鼠标键盘什么的Provide legacy /dev/psaux deviceGraphics support -Support for frame buffer devices 支持Frame buffer的,一定要选择USB support -USB device filesystem 这个好象是用U盘必须的EHCI HCD (USB 2.0) support 有usb2.0就选上把,编译成模块OHCI HCD support 必须选择,编译成模块UHCI HCD (most Intel and VIA) support 必须选择,编译成模块USB Mass Storage support 用U盘必须选择USB Human Interface Device (full HID) support 里面选择usb鼠标和usb键盘,HID input layer support选择/dev/hiddev raw HID device support选择第十一部分:除以下选项,其它全部删除file systems -文件系统 Second extended fs support * Ext2 extended attributes * Ext2 POSIX Access Control Lists * Ext2 Security Labels Ext3 journalling file system support * Ext3 extended attributes * Ext3 POSIX Access Control Lists * Ext3 Security Labels Kernel automounter support 内核自动挂载的,当然要选 Kernel automounter version 4 support (also supports v3) 当然要选DOS/FAT/NT Filesystems - DOS FAT fs support MSDOS fs support VFAT (Windows-95) fs support NTFS file system supportNative language support语言支持,这里就支持英语和汉语就行了,不多说了NLS ISO 8859-1 必须选择,这个是关于U盘挂载的。CD-ROM/DVD Filesystems - 这个是关于挂载ISO文件的 ISO 9660 CDROM file system support第十二部分: 全部删除Instrumentation support 第十三部分:全部删除Kernel hacking -破解核心?可不是当骸客啦,不选第十四部分:全部删除Security options -第十五部分:全部删除Cryptographic options -这是核心支持加密的选项第十六部分:全部删除Library routines -内核配置内核配置内核就越大,不仅运行速度慢、占用内存多,在少数情况下、还会引发其他问题。具体步骤如下:首先确定shell是bash。然后$make menuconfig可以配置的选项有以下一些:1)code maturity level option 代码成熟度prompt for development and/or incomplete code/drivers N/y/?2)processor type and features 处理器类型及特性Processor family(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC, PPro/6x86MX)PPro/6x86MXMath emulation(CONFIG_MATH_EMULATION)N/y/?MTRR(Memory Type Range Register)support(CONFIG_MTRR)N/y/?在Pentium、Pro/Pentium II类的系统中可以提高图像写入速度。Symmetric multi-processing support(CONFIG_SMP)Y/n/?3)loadable model support 可加载模块支持Enable loadable module support(CONFIG_MODULES)Y/n/?Set version information on all symbols for modules(CONFIG_MODVERSIONS)N/y/?选NKernel module loader(CONFIG_KMOD)N/y/?4)general setup 一般设置Networking support(CONFIG_NET)Y/n/?PCI support (CONFIG_PCI)Y/n/?PCI 总线和设备总该有吧。PCI access mode(BIOS,Direct,Any)Any选BIOS。PCI quirks (CONFIG_PCI_QUIRKS)Y/n/?用于修补BIOS中对PCI有影响的BUBackward-compatible /proc/pci(CONFIG_PCI_OLD_PROC)Y/n/?保持兼容性选y。MCA support(CONFIG_MCA)N/y/?查看帮助。SGI Visual Workstation support(CONFIG_VISWS)N/y/?选y。System V IPC(CONFIG_SYSVIPC)Y/n/?进程间通信函数和系统调用。Linux内核的五大组成部分之一,要选。BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)N/y/?启动由内核将进程信息写入文件的用户级系统调用。Sysctl support(CONFIG_SYSCTL)Y/n/?在内核正在运行的时候修改内核。用8KB空间换取某种方便。Kernel support for a.out binaries(CONFIG_BINFMT_AOUT)Y/m/n/?为了能使用以前编译的程序,选y。Kernel support for ELF binaries(CONFIG_BINFMT_ELF)Y/m/n/?为了能使用现在编译的程序,选y。Kernel support for MISC binaries(CONFIG_BINFMT_MISC)Y/m/n/?选y,用于支持java等代码的自动执行。Parallel port support(CONFIG_PARPORT)N/y/m/?并口设备,如打印机。5)plug and play support 即插即用设备支持Plug and Play support (CONFIG_PNP)N/y/?选y吧。6)block devices 块设备Normal PC floppy disk support(CONFIG_BLK_DEV_FD)Y/m/n/?一般的软驱。选y。Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support(CONFIG_BLK_DEV_IDE)Y/m/n/?这几种接口的硬盘、光驱、磁带、软驱。选y。Include IDE/ATAPI CDROM support(CONFIG_BLK_DEV_IDECD)Y/m/n/?CDROM。选y。7)networking options 网络选项Packet socket (CONFIG_PACHET)Y/m/n/?Kernel/User netlink socke(CONFIG_NETLIN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版暖通设备安装与节能改造合同样本
- 二零二五年度第二章国际贸易标的国际货物运输保险理赔合同
- 二零二五年度拆除工程劳务合同范本(含施工技术指导)
- 二零二五年度二手房购房合同范本模板-房屋交易安全保证
- 二零二五年小学门卫岗位设置与工作协议聘用合同
- 地下排水管网排水能力提升方案
- 二零二五年度汽车维修配件销售合同模板
- 二零二五年度高效节能环保型二人合伙包工地施工合同
- 2025版门窗工程节能设计与施工分包合同范本
- 2025眼科诊疗考试题及答案
- 健身数据分析与管理平台企业制定与实施新质生产力战略研究报告
- 悟空识字1-300(带拼音)-可打印
- 小学与初中科学课程衔接策略
- (完整版)西门子ARCADICOrbic3D三维C型臂培训
- 检验科免疫室工作制度
- 《智能感知技术》课件
- 2024版酷家乐课件
- 税务停业申请书
- 班组长一日工作培训
- 2025年春季安全教育主题班会教育记录
- 劳保用品的使用和管理
评论
0/150
提交评论