您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第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)使用交换分区或支持虚拟内存SystemVIPCSystemV进程间通信(IPC)支持,许多程序需要这个功能。这个功能一般是必选。POSIXMessageQueuesPOSIX消息队列的支持,这是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/IPnetworkingTCP/IP网络协议的支持12.1.6设备驱动程序选项DeviceDriversblockdevices块设备选项中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字符设备VirtualterminalLinux的虚拟终端选择此选项后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.gztarxjvflinux-2.6.30.tar.bz212.2.4给内核打补丁这一步在内核的编译过程中是可选的,如果你对内核有特殊的要求,可以将自己写的补丁打到内核中去。cdlinux-2.6.30bzcat../patch-2.6.30.bz2|patch-p112.2.5设定编译选项makemenuconfig菜单选项格式makexconfig编译选项界面makegconfig编译选项界面12.2.5编译与安装内核清除所有旧的配置和旧的编译目标等文件:cd/usr/src/linux-2.6.30makemrproper接着执行命令make来编译内核在某些情况下,有的源文件不需以其他源文件为基础即可编译,这时可以使用–j选项调用make来完成并行编译操作make–jn经过上面的编译内核的步骤,会在目录arch/x86/boot目录下生成名为“bzImage”的文件makeinstall进行来编译模块makemodules将内核模块安装到/lib/modules中makemodules_install12.3安装引导配置创建initramfs设置grub启动选项12.3.1创建initramfsmkinitramfs会把/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.根据你自己计算机的硬件配置进行裁减定制内核;并进行编译和安装,启动新安装的内核并查看其版本号。
本文标题:第12章 Linux内核裁剪与编译
链接地址:https://www.777doc.com/doc-4232370 .html