第12章 Linux内核裁剪与编译

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Linux操作系统精讲大连理工大学软件学院邱铁综合楼413,Tel:0411-87571632E_mail:qiutie@dlut.edu.cn参考教材:‡《Linux应用与开发典型实例精讲》邱铁、于玉龙、徐子川编著.清华大学出版社.2010.5第12章Linux内核裁剪与编译学习本章要达到的目标:†1.理解Linux内核编译选项的含义;†2.学会根据不同的硬件配置裁减定制内核;†3.理解内核编译过程中每一步的功能,并编译Linux2.6.30内核。12.1内核编译选项需要去重新编译Linux内核†增加操作系统对新的硬件设备的支持†增加内核新的功能†对内核代码或内核配置进行优化时12.1.1常规设置GeneralsetupPromptfordevelopmentand/orincompletecode/drivers†显示处于开发调试中或尚未完善的代码或驱动†选中:如果是测试人员或者开发者;†不选:其他情况Localversion-appendtokernelrelease†追加本地版本号†使用命令“uname–a”进行查看。†Supportforpagingofanonymousmemory(swap)†使用交换分区或支持虚拟内存SystemVIPC†SystemV进程间通信(IPC)支持,许多程序需要这个功能。这个功能一般是必选。POSIXMessageQueues†POSIX消息队列的支持,这是POSIX进程间通信的一部分。BSDProcessAccounting†将进程的统计信息写入文件†信息通常包括建立时间、所有者、命令名称、内存使用、控制终端等,这个选项一般是选择的。12.1.2可加载模块支持LoadablemodulesupportEnableloadablemodulesupport†使能可加载模块支持†如果使能此选项则可以通过makemodules_install把内核模块安装在/lib/modules/中Automatickernelmoduleloading†使能模块自动加载†在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块。12.1.3处理器类型及特性ProcessortypeandfeaturesSubarchitectureType(PC-compatible)†CPU架构选择Processorfamily(386)†处理器系列选择Genericx86support†通用x86支持,如果在Processorfamily中没有选择任何CPU,可以选择此项。12.1.4可执行文件格式ExecutablefileformatsKernelsupportforELFbinaries†内核对ELF文件格式的支持†ELF是开放平台下最常用的二进制文件格式,支持动态连接,支持不同的硬件平台.Kernelsupportfora.outandECOFFbinaries†早期UNIX系统的可执行文件格式,目前已经被ELF格式取代12.1.5网络支持NetworkingsupportUnixdomainsockets†本机高效率的Socket†仅能运行在本机上的高效率的Socket,简称Unixsocket。†很多进程使用为这种机制在操作系统内部进行进程间通信,例如XWindow和syslog等。TCP/IPnetworking†TCP/IP网络协议的支持12.1.6设备驱动程序选项DeviceDrivers†blockdevices块设备选项中RAMdisksupport内存虚拟磁盘的支持generic/defaultIDEchipsetsupport通用IDE芯片组支持SCSIdevicesupport†对于具有SCSI/SATA/USB/光纤/FireWire/IDE-SCSI接口的设备就需要选上。SCSIdisksupport†具有SCSI接口的硬盘或U盘需要此选项。†ATAACPIsupport†对于使用SATA或PATA接口的硬盘或光驱等设备的支持。IntelPIIX/ICHSATAsupportViaSATAsupport†这两个选项是对具体芯片组的支持,一般选择模块方式Networkingdevicesupport网卡驱动选项Ethernet(10or100Mbit)†这是我们以前应用最广泛的10/100M网卡。Ethernet(1000Mbit)†这是当前已成装机主流的1000M网卡。Ethernet(10000Mbit)†这是这是未来发网络发展的趋势:万兆网卡。WirelessLAN†无线网卡的支持Inputdevicesupport输入设备支持Genericinputlayer(neededforkeyboard,mouse,...)†通用输入层的支持,要使用键盘、鼠标等就要选择此项。Keyboards†键盘驱动,在通用PC机中,通常选AT键盘。Mouse†鼠标驱动,在通用PC机中,通常选PS/2鼠标。Characterdevices字符设备Virtualterminal†Linux的虚拟终端†选择此选项后linux启动时,在屏幕可以看到一些显示信息,另外还负责键盘输入信息等等。Supportforconsoleonvirtualterminal†内核将一个虚拟终端用作系统控制台,可以将模块错误、内核错误、启动信息等警告信息发送到这个虚拟终端。†对于通常的Linux来说,这是必备的Graphicssupport图形设备/显卡支持Supportforframebufferdevices†帧缓冲设备支持†帧缓冲设备是为了让应用程序使用统一的接口操作显示设备,这是内核对硬件设备进行的抽象,通常使用桌面的用户需要选择这选项。12.1.7文件系统Filesystems选项†在Linux的PC机中进行安装的最常用的标准文件系统EXT2、EXT3的相关选项一般都要选择†当前正在处于开发和调试阶段的文件系统是EXT4,但还没有正式发布,读者从2.6.30内核源码中会发现,EXT4现已加进内核选项。12.1.8对于其它配置选项的说明†在配置编译选项时,一定要对每一个选项都进行查看,保证所编译的内核能在所对应的硬件下运行。†对于PC机来说,不确定的硬件或选项,通常可以采用默认的选项†参考所安装的Linux的发行版的配置文件(.config)的说明。12.2内核编译与订制†获得Linux内核与补丁†准备编译需要的工具†解压内核†给内核打补丁†设定编译选项†编译与安装内核12.2.1获得Linux内核与补丁†最新的Linux官方源码是可以从或其映像站点取得†最新2.6.x版本一般放在/pub/linux/kernel/v2.6/下载LINUX2.6.30内核补丁12.2.2准备编译需要的工具†1.安装gcc,make等编译工具:†2.安装makemenuconfig时必须的库文件:NCurses(libncurses5-dev或ncurses-devel),这是当makemenuconfig时用作生成菜单窗口的程序库†3.安装Linux系统生成kernel-image的一些配置文件和工具†4.一般在编译Linux内核时,一般还需要以下工具(这些工具一般是可选的):†GNUC++Compiler(g++或gcc-c++)-编译makexconfig使用的Qt窗口时需要†Qt3(qt-devel或qt3-devel)-makexconfig时用作Qt窗口的程序库†GTK+(gtk+-devel)-makegconfig时用作GTK+窗口的程序库†Glade(libglade2-devel)-要编译makegconfig时的GTK+窗口时需要12.2.3解压内核†tarxzvflinux-2.6.30.tar.gz†tarxjvflinux-2.6.30.tar.bz212.2.4给内核打补丁†这一步在内核的编译过程中是可选的,如果你对内核有特殊的要求,可以将自己写的补丁打到内核中去。†cdlinux-2.6.30†bzcat../patch-2.6.30.bz2|patch-p112.2.5设定编译选项†makemenuconfig菜单选项格式makexconfig编译选项界面makegconfig编译选项界面12.2.5编译与安装内核†清除所有旧的配置和旧的编译目标等文件:†cd/usr/src/linux-2.6.30†makemrproper†接着执行命令make来编译内核†在某些情况下,有的源文件不需以其他源文件为基础即可编译,这时可以使用–j选项调用make来完成并行编译操作†make–jn†经过上面的编译内核的步骤,会在目录arch/x86/boot目录下生成名为“bzImage”的文件†makeinstall†进行来编译模块†makemodules†将内核模块安装到/lib/modules中†makemodules_install12.3安装引导配置†创建initramfs†设置grub†启动选项12.3.1创建initramfs†mkinitramfs会把/lib/modules/${kernel_version}/目录下的一些启动时需要使用的模块添加到initramfs中。†mkinitramfs-o/boot/initrd.img-2.6.30/lib/modules/2.6.3012.3.2设置grub12.3.3启动选项思考与练习†1.分析Linux内核编译选项,理解编译选项中的常用功能描述。†2.获取当前最新版本的Linux内核及其补丁,打开补丁包,分析补丁包意义,举例说明。†3.根据你自己计算机的硬件配置进行裁减定制内核;并进行编译和安装,启动新安装的内核并查看其版本号。

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功