欢迎来到天天文库
浏览记录
ID:5904456
大小:372.00 KB
页数:39页
时间:2017-11-13
《第十一讲____linux内核定制及编译方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux内核定制及编译方法目的、要求了解Linux内核主要的模块组成,掌握内核的定制或配置方法,重点掌握Linux内核的编译过程及相关命令的使用方法。Linux内核系统模块组成1、进程调度模块Linux以进程作为系统资源分配的基本单位,并采用动态优先级的进程高级算法,保证各个进程使用处理机的合理性。进程调度模块主要是对进程使用的处理机进行管理和控制。2、内存管理模块Linux的内存管理模块采用先进的虚拟存储机制,实现对多进程的存储管理。它提供了十分可靠的存储保护措施,对进程赋予不同的权限,用户不能直接访问系统的程序和数据,保证了系统的安
2、全性。同时,为每个用户进程分配一个相互独立的虚拟地址空间。Linux内核系统模块组成及功能3、文件系统模块Linux的文件系统模块采用先进的虚拟文件系统(VFS)技术,屏蔽了各种文件系统的差别,为处理各种不同的文件系统提供了统一的接口,支持多种不同的物理文件系统达90多种。同时,Linux把各种硬件设备看作一种特殊的文件来处理,用管理文件的方法管理设备,非常方便、有效。4、网络接口模块Linux具有最强大的网络功能。网络接口模块通过套接字(Socket)机制实现计算机之间的网络通信,并采用网络层次模型提供对多种网络协议和网络硬件设备的支持
3、。5、进程间通信模块进程间通信模块保证了Linux支持多种进程间通信机制,包括最基本的信息和管道,同时支持信息队列、信号量和共享内存等。Linux内核的编译模式:1、编译到内核:内核启动时可以支持相应的功能,其优点是方便、速度快,系统启动即可使用这部分功能;缺点是内核变得很庞大。同时,系统安全性会降低。2、编译成模块:内核启动后可以动态加载。优点是不会使内核过分庞大,缺点是必须由自己来调用这些模块。(主流)内核配置界面(#makemenuconfig):内核配置主要选项及功能:1.Codematurityleveloptions(代码成熟
4、度)Promptfordevelopmentand/orincompletecode/drivers使用尚在开发中或尚未完成的代码与驱动程序。2.Generalsetup(常规设置)1)Localversion-appendtokernelrelease在内核版本后面加上自定义的版本标识(如直接输入:test)。2)Automaticallyappendversioninformationtotheversionstring自动在版本字符串后面添加版本标识信息,编译时需要有perl以及git仓库支持。3)Supportforpagingo
5、fanonymousmemory(swap)内核使用交换分区或者交换文件作为虚拟内存。4)SystemVIPC支持SystemV的进程间通信(IPC),许多程序需要这个功能。5)POSIXMessageQueuesPOSIX消息队列。6)BSDProcessAccounting将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间、创建者、指令名、内存占用情况等信息。7)Exporttask/processstatisticsthroughnetlink(EXPERIMENTAL)通过netlink接口向用户空间导出任务/进程的
6、统计信息。8)UTSNamespaces支持UTS名字空间。9)Auditingsupport审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计。10)Kernel.configsupport把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息。11)Createdeprecatedsysfsfiles创建过时的sysfs文件系统。12)Kernel->userspacerelaysupport(formerlyrelayfs)提供从内核空间
7、向用户空间传递大量数据的接口。13)InitialRAMfilesystemandRAMdisk(initramfs/initrd)support支持内存文件系统(initramfs/initrd)。14)Optimizeforsize(Lookoutforbrokencompilers!)编译时优化内核尺寸。15)Configurestandardkernelfeatures(forsmallsystems)配置标准的内核特性(面向小型系统)。3.Loadablemodulesupport(可加载模块支持)1)Enableloadabl
8、emodulesupport打开可加载模块支持,如果打开它则必须通过“makemodules_install”把内核模块安装在/lib/modules/目录下。2)Moduleunloadin
此文档下载收益归作者所有