您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > linux教程20-20
1/Linux系统管理与应用计算机科学与技术系信息与教育技术中心2/第20讲系统内核的裁剪与编译教学目标理解系统内核的工作机制;掌握系统内核的裁剪方法。掌握系统内核的编译、启用的方法。教学内容系统内核的裁剪和编译3/系统内核的工作机制如果说Linux的shell是用户或用户应用程序与计算机系统的接口(作业级),则Linux内核可以看成是shell与硬件的接口,它们之间的关系如图10-1所示。图10-1系统层次关系硬件系统内核shell应用程序4/系统内核的工作机制系统内核的一些核心函数文件在/usr/src/linux-2.4.20-8/kernel目录下。其中有:acct.c、capability.c、context.c、cpufreq.c、dma.c、exec_domain.c、exit.c、fork.c、futex.c、info.c、itimer.c、kallsyms.c、kksymoops.c、kmod.c、ksyms.c、lowlat.c、Makefilemodule.c、panic.c、pid.c、pm.c、printk.c、profile.c、ptrace.c、resource.c、sched.c、signal.c、softirq.c、sys.c、sysctl.c、time.c、timer.c、uid16.c、user.c5/系统内核的裁剪尽管硬盘驱动器中linux系统的/boot目录下带有系统内核,但你仍然可以重新创建、裁剪系统内核,以拥有适合你的驱动程序和对系统硬件的支持。内核支持(编译)模式Linux对于计算机硬件、网络和文件系统等部件的驱动程序支持既可以放在系统内核中,也可以作为一个可加载的模块(modules)使用。6/系统内核的裁剪裁剪系统内核应遵循的步骤:其基本步骤如下:1、检查编译器的版本2、删除过时的目标文件3、重新设置系统内核4、重新编译系统内核5、备份正在使用的系统内核6、试用新的系统内核7/系统内核的裁剪检查编译器的版本要查看编译器版本,可以执行命令:#gcc–v删除过时的目标文件进入/usr/src/linux-2.4.20-8目录,运行makemrproper命令以清除过时、旧的目标文件。如果没有编译过或者是系统升级的新解压缩目录,则这一步骤可以省略。8/系统内核的裁剪配置系统内核共有三种方式来运行配置内核的命令:设置屏幕的类型命令文本makeconfig窗口菜单(NCurses)makemenuconfigX图形makexconfig一般在/usr/src/linux-2.4.20-8/目录下运行设置命令。9/图10-2menuconfig主屏幕10/图10-3xconfig主屏幕11/系统内核的裁剪配置内容配置系统内核的目的是建立一个适合大小、满足需求的系统内核;因此,用户必须根据自己所设计系统的需要对Linux系统支持的硬件和软件进行适当裁减,即从配置内容中选择相应的硬件类型和合适的设备驱动程序。以Linux内核2-4-20版本为例,配置内容共有35个类别,如表10-1所示:12/编号类别含义1Codematurityleveloptions代码成熟级别2Loadablemodulesupport可装载模块支持3Processortypeandfeatures处理器类型与特征4Generalsetup一般设置5MemoryTechnologyDeviceMTD设备支持6Parallelportsupport并行口支持7PlugandPlayconfiguration即插即用支持8Blockdevices块设备支持9Multi-devicesupport(RAIDandLVM)多设备支持10Cryptographysupport密码系统支持11Networkingoptions网络选项12TelephonySupport电话支持13ATA/IDE/MFM/RLLsupport多种接口存储设备支持14SCSIsupportSCSI设备的支持15FusionMPTdevicesupportFusionMPT设备支持16IEEE1394(FireWire)supportIEEE1394防火墙设备支持17I2OdevicesupportI2O设备支持18Networkdevicesupport网络设备支持13/19AmateurRadiosupport业余无线电支持20IrDA(infrared)support红外线支持21ISDNsubsystemISDN子系统22OldCD-ROMdrivers(notSCSI、notIDE)非SCSI/IDE接口的CD-ROM设备23inputcoresupport输入核心支持24Characterdevices字符设备25Multimediadevices多媒体设备26CryptoHardwaresupportCrypto硬件支持27Filesystems文件系统28Consoledrivers控制台驱动29Sound声卡驱动30USBsupprotUSB支持31Additionaldevicedriversupport附加设备驱动支持32Bluetoothsupport蓝牙支持33profilingsupportProfiling支持34Kernelhacking内核分析35Libraryroutines库例程14/编译系统内核当配置完成并保存退出后就要重新编译系统内核。系统一般会在配置结束时提示要进行makedep操作。运行带有clean和dep选项的make文件以清除过时的目标文件并建立合适的独立性(如果要正确编译代码,必须要满足该要求)。命令为:makedepmakeclean15/编译系统内核makezImage该命令将在/usr/src/linux-2.4.20-8/arch/i386/boot目录下生成一个全新的内核。该内核文件名称为zImagemakebzImage16/编译系统内核如果看到类似于以下的提示信息,就表示已经完成了内核创建工作。Rootdeviceis(3,1)Bootsectorxxxbytes.Setupisxxxxbytes.SystemisxxxkBSyncMake[1]:Leavingdirectory‘/usr/src/linux-2.4.20-8/arch/i386/boot’17/编译系统内核导致编译错误的原因可能有:内核配置有问题,应重新配置后再编译。内核源代码有问题,应尽量选用稳定的内核(版本号为偶数)版本。文件连接的问题。系统硬件的兼容性问题也可能导致内核编译失败。18/编译系统内核安装模块。命令为:makemodulesmakemodules_installmakeinstall19/启用新系统内核一般如果你没有采用GRUB或LILO等引导程序进行多培、配置启动,则一定要备份正在使用的系统内核。备份正在使用的系统内核制作步骤如下:cd/bootmvvmlinuz-2.4.20-8vmlinuz.old#现有的内核更名cp/usr/src/linux-2.4.20-8/arch/i386/boot/zImage/boot#复制新内核到/boot目录20/启用新系统内核多配置启动的配置文件修改以grub.conf文件为例default=0timeout=10splashimage=(hd0,1)/boot/grub/splash.xpm.gztitleRedHatLinux(2.4.20-8)root(hd0,1)kernel/boot/vmlinuz-2.4.20-8roroot=LABEL=/initrd/boot/initrd-2.4.20-8.imgtitleWinXProotnoverify(hd0,0)chainloader+1第一种方案,不增加启动选项:把grub.conf文件中的以下行:kernel/boot/vmlinuz-2.4.20-8roroot=LABEL=/改为:kernel/boot/zImageroroot=LABEL=/21/启用新系统内核第二种方案,增加一个启动选项;grub.conf文件修改为:default=0timeout=10splashimage=(hd0,1)/boot/grub/splash.xpm.gztitleRedHatLinux(2.4.20-8)root(hd0,1)kernel/boot/vmlinuz-2.4.20-8roroot=LABEL=/initrd/boot/initrd-2.4.20-8.imgtitleRedHatLinux-new(2.4.20-8)root(hd0,1)kernel/boot/bzImageroroot=LABEL=/initrd/boot/initrd-2.4.20-8.imgtitleWinXProotnoverify(hd0,0)chainloader+122/配置选项cd/usr/src/linux-2.4.20-8[root@gliethttp]#makemrproper[root@gliethttp]#makeclean[root@gliethttp]#makemenuconfig选择处理器Processortypeandfeatures---Processorfamily---386RamDisk驱动Blockdevices---*RAMdisksupport(4096)DefaultRAMdisksize(NEW)*InitialRAMdisk(initrd)support文件系统Filesystems---[*]Ext3journallingfilesystemsuppor[*]Ext3SecurityLabels[*]JBD(ext3)debuggingsupport驱动SCSIsupport---SCSIlow-leveldrivers---MBusLogicSCSIsupport[root@gliethttp]#makedep[root@gliethttp]#makebzImage.[root@gliethttp]#makemodules[root@gliethttp]#makemodules_install[root@gliethttp]#makeinstall23/作业1.什么情况下需要裁剪系统内核?2.驱动程序在系统内核中与在可加载模块中有何区别?3.裁剪系统内核应遵循的步骤有哪些?简要说明原因。
本文标题:linux教程20-20
链接地址:https://www.777doc.com/doc-2880990 .html