新版Linux-系统裁减指南5redkaoliangdoc_第1页
新版Linux-系统裁减指南5redkaoliangdoc_第2页
新版Linux-系统裁减指南5redkaoliangdoc_第3页
新版Linux-系统裁减指南5redkaoliangdoc_第4页
新版Linux-系统裁减指南5redkaoliangdoc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE3?Linux系统裁减指南(LiPS)?目录TOC\o"1-4"\h\z目录 11引言 41.1编写目的 41.2背景 41.3定义 41.4参考资料 42总体描述 52.1硬件环境 52.2软件环境 52.3需求规定和约束 53总体设计 63.1根本设计概念 63.2软件结构 64内核 64.1创立内核的方法 64.2内核配置 74.2.1概述 74.2.2Loadablemodulesupport 84.2.3Processortypeandfeatures 84.2.4Generalsetup 84.2.5PlugandPlayconfiguration 94.2.6Blockdevices 94.2.7Multi-devicesupport(RAIDandLVM) 104.2.8Networkingoptions 104.2.9ATA/IDE/MFM/RLLsupport 114.2.10SCSIsupport 124.2.11Networkdevicesupport 124.2.12Characterdevices 134.2.13Filesystems 144.2.14Consoledrivers 154.2.15USBsupport 154.3提示 164.3.1EXTRAVERSION 164.3.2.config 175根文件系统 175.1根文件系统 175.2文件系统的内容 175.2.1应用程序〔applications〕 175.2.2设备文件〔devicefiles〕 185.2.3脚本和配置文件〔scriptsandconfigurationfiles〕 195.2.4库文件〔libraries〕 205.2.5必要的目录 205.3初始化RAM盘〔initrd〕 215.3.1操作步骤 215.3.2引导选项 215.3.3安装 225.3.4改变根目录设备 235.3.5使用场合 245.3.6淘汰的根转换机制〔change_root〕 245.4系统初始化〔init〕 245.4.1init的任务 245.4.2SysVinit 255.4.3两种风格:Slackwarevs.Debian 255.5PAM 265.5.1什么是PAM 265.5.2PAM的结构 265.5.3配置文件 265.5.4other 275.6再论initrd 275.6.1根到底在哪里 285.6.2linuxrc 285.6.3根转换机制:新的?旧的? 305.7提示 315.7.1文件系统目录层次结构 315.7.2mklips.sh〔制作LiPS的脚本〕 325.7.3lips.conf〔LiPS配置文件〕 325.7.4cp–dpR 325.7.5如何判断一个程序依赖哪些文件 325.7.6带库文件复制——lcp() 335.7.7库文件的命名 346引导 356.1引导过程概述 356.2几种引导方式 356.3grub引导器 356.4USB引导 356.4.1制作步骤 36创立文件系统 36复制文件 36安装grub 366.5提示 376.5.1版本问题? 377远程串口控制台 377.1概述 377.2配置方法 377.3提示 377.4Linux远程串口控制台指南 378系统安装光盘 408.1概述 408.2boot.iso光盘的文件结构分析 401引言1.1编写目的说明Linux系统裁减的过程及解决的主要技术问题。本文档的编写是为了说明LiPS的详细设计过程,也可以作为构造一个小型化Linux系统的指南。本文档内容的组织如下所述:这一局部是引言,第2局部是对工程软、硬件环境和需求的总体描述,第3局部说明了裁减LINUX的相关根本概念。后面几个局部是具体实现方法的详细说明,4~6分别详细描述了创立内核、创立根文件系统和引导系统的方法。最后的内容可以看作附录,其中7说明了一般Linux系统安装光盘的创立方法,8列出了相关的配置文件和源代码。1.2背景华中科技大学计算机存储系统国家专业实验室,NAS工程〔2023.3——2023.8〕。1.3定义Obootloader:引导器Okernel:内核Orootfilesystem:根文件系统OUSB:通用串行总线1.4参考资料[1]DIY:自己动手做一个迷你Linux系统.IBMdeveloperWorks中国网站./developerWorks/cn/linux/embed/diy/index.shtml[2]LinuxFromScratch.http://clfsbook.mylab.idv.tw/index.html[3]Linux启动过程综述./forum/showdoc.jsp?l=1&i=15750[4]TheLinuxBootdiskHOWTO(中译版)..tw/CLDP/gb/Bootdisk-HOWTO.html[5]UsingtheinitialRAMdisk(initrd)./usr/src/linux-2.4/Documentation/initrd.txt.〔译文:/Project/3ybaby/discuss-area/cd-boot/cdboot_refer/initrd.htm〕[6]Quickmouse于2023.1发表于白云黄鹤BBS(/Linux讨论区的帖子“裁减Linux〞。[7]FilesystemHierarchyStandard./fhs/pub/fhs-2.2.pdf[8]LINUXALLOCATEDDEVICES./usr/src/linux-2.4/Documentation/device.txt.或者最新的列表在/pub/linux/docs/device-list/[9]KarimYaghmour.BuildingEmbeddedLinuxSystems.O'Reilly,April2003.[10]AlessandroRubini.TakeCommand:Init.http://www.linux.it/kerneldocs/init/,November1998.[11]深入LinuxPAM体系结构.IBMdeveloperWorks中国网站.http://www-90/0./developerWorks/cn/linux/l-pam/index.shtml.2023.7.[12]2总体描述2.1硬件环境开发主机:Intel845芯片组主板,P4赛扬1.8GHzCPU,256M内存,60GIDE硬盘,RTL8139网卡。目标机:与主机同构。2.2软件环境开发主机:RedhatLinux7.3(kernel2.4.18-3),或者RedhatLinux9(kernel2.4.20-8)。可以根据需要使用其他版本的内核,比方Redhat7.3+kernel2.4.20。目标机:LiPS,以及应用程序。2.3需求规定和约束我们目标系统LiPS,即LinuxPoweredStorage是一个嵌入式Linux操作系统,主要着眼于提供各种文件效劳,不包括XGUI;并且足够小,可以装入32MUSB盘或者DOC/DOM等常用设备引导。3总体设计3.1根本设计概念提起“裁减Linux〞,最容易想到的方法是以一个已经安装好的系统为根底,删除掉不需要的文件,以减小整个系统的尺寸。而事实上这个方法几乎是行不通的,因为通过光盘安装的一个Redhat9Linux系统,即便是只选择了比拟少的软件包,其所占空间也可以轻松到达300~500MB,想在这个根底上裁减到30MB左右是比拟困难的。更困难的是确定哪些东西是可以删除的?如果删除了系统必须的文件,可能导致系统不能引导。另一个途径是从零开始根据需要构建整个系统。“LinuxFromScratch〞采用的就是这种方式,一个个安装需要的软件包。类似的,更简单的方法是,安装一个完整的Linux系统,然后将必要的软件〔可执行程序〕、配置文件、库文件、内核等复制出来构建一个小系统。我们采取后一种方式。3.2软件结构LiPS包括3局部:Linux内核,根文件系统和引导器。内核〔Kernel〕提供了一个操作系统的根本功能,如内存管理、进程调度、文件系统、网络等,以及设备驱动程序。根文件系统〔Rootfilesystem〕是存放运行、维护系统所必须的各种工具软件、库文件、脚本、配置文件和其他特殊文件〔比方设备节点〕的地方,也可以安装各种软件包。通常根文件系统位于某个磁盘分区,而在LiPS中应用了initrd〔初始RAM盘〕机制,将根文件系统放在RAMDisk中。引导器〔BootLoader〕的任务是从引导设备装载内核,引导系统运行。Linux系统常见的引导器包括早期的LILO和近期的GRUB。LiPS用的是GRUB。4内核4.1创立内核的方法Linux提供了方便灵巧的方法来定制内核,主要步骤包括:下载安装内核源代码树,配置内核,编译内核。具体方法请参考相关文档。关键指令如下:cd/usr/src/linux-2.4makemenuconfigmakedep;makeclean;makebzImage编译成功的内核文件为arch/i386/boot/bzImage.4.2内核配置4.2.1概述makemenuconfig之后可以看到类似如下的内容〔编号是为了描述方便而加上的〕。根据内核版本的不同,列出的工程会有差异。而变化主要发生在发行版为标准内核打的各种补丁上面,其实标准内核是比拟稳定的。如下所示,我们配置的内核版本为2.4.20-8,这个“-8〞就是Redhat所打的补丁版本号。补丁一般是对标准内核错误的修正和新增的功能。与2.4.20内核配置选项比拟会发现,[10,25,30]都属于Redhat的补丁。一般地,这些补丁选项都不是必须的,因此我们的LiPS内核中都没有包括这些选项。其实,完全可以通过直接配置一个标准的内核版本〔比方2.4.20〕来产生我们所需要的内核。LinuxKernelv2.4.20-8-R2LipsConfiguration[1]Codematurityleveloptions>[2]Loadablemodulesupport>[3]Processortypeandfeatures>[4]Generalsetup>[5]MemoryTechnologyDevices(MTD)>[6]Parallelportsupport>[7]PlugandPlayconfiguration>[8]Blockdevices>[9]Multi-devicesupport(RAIDandLVM)>[10]Cryptographysupport(CryptoAPI)>[11]Networkingoptions>[12]TelephonySupport>[13]ATA/IDE/MFM/RLLsupport>[14]SCSIsupport>[15]FusionMPTdevicesupport>[16]I2Odevicesupport>[17]Networkdevicesupport>[18]AmateurRadiosupport>[19]IrDA(infrared)support>[20]ISDNsubsystem>[21]OldCD-ROMdrivers(notSCSI,notIDE)>[22]Inputcoresupport>[23]Characterdevices>[24]Multimediadevices>[25]CryptoHardwaresupport>[26]Filesystems>[27]Consoledrivers>[28]Sound>[29]USBsupport>[30]Additionaldevicedriversupport>[31]Bluetoothsupport>[32]Kernelhacking>[33]Libraryroutines>LoadanAlternateConfigurationFileSaveConfigurationtoanAlternateFile<Select><Exit><Help>下面我们以2.4.20内核为例,来详细说明内核的配置,也就是选哪些东西、不选哪些东西。没有说明的选项,比方“Codematurityleveloptions〞,表示不选。4.2.2Loadablemodulesupport[*]Enableloadablemodulesupport[]Setversioninformationonallmodulesymbols[*]Kernelmoduleloader可加载模块支持。虽然目前所选工程全部编译进内核,但是内核是支持模块的。可以考虑将一些硬件设备的驱动程序编译为模块,从而减小内核尺寸,同时增加适应不同硬件平台的灵巧性。4.2.3Processortypeandfeatures(Pentium-III/Celeron(Coppermine))Processorfamily[*]MachineCheckException<>ToshibaLaptopsupport<>Delllaptopsupport<>/dev/cpu/microcode-IntelIA32CPUmicrocodesupport<>/dev/cpu/*/msr-Model-specificregistersupport<>/dev/cpu/*/cpuid-CPUinformationsupport(off)HighMemorySupport[]Mathemulation[]MTRR(MemoryTypeRangeRegister)support[]Symmetricmulti-processingsupport[]LocalAPICsupportonuniprocessors[]UnsyncedTSCsupport处理器特性。选择一下Processorfamily,其余根本上都没有选。HighMemorySupport也可以翻开,不清楚有什么用。4.2.4Generalsetup[*]Networkingsupport[*]PCIsupport(Any)PCIaccessmode[*]ISAbussupport[*]PCIdevicenamedatabase[]EISAsupport[]MCAsupport[]Supportforhot-pluggabledevices[*]SystemVIPC[*]BSDProcessAccounting[*]Sysctlsupport(ELF)Kernelcore(/proc/kcore)format<>Kernelsupportfora.outbinaries<*>KernelsupportforELFbinaries<>KernelsupportforMISCbinaries[*]PowerManagementsupport<>KernelsupportforMISCbinaries[*]PowerManagementsupport<*>AdvancedPowerManagementBIOSsupport[*]IgnoreUSERSUSPEND[*]EnablePMatboottime[*]MakeCPUIdlecallswhenidle[*]EnableconsoleblankingusingAPM[*]RTCstorestimeinGMT[*]AllowinterruptsduringAPMBIOScalls[*]UserealmodeAPMBIOScalltopoweroff总体设置。这一局部选项比拟重要,包括网络、总线、进程、二进制文件格式、电源管理等。其中APM相关的选项比拟搞不清楚,有时候halt–p命令不能关闭系统电源跟这里有关系。4.2.5PlugandPlayconfiguration<*>PlugandPlaysupport<>ISAPlugandPlaysupport即插即用设置。4.2.6Blockdevices<*>Normalfloppydisksupport<>XTharddisksupport<>CompaqSMART2support<>CompaqSmartArray5xxxsupport<>MylexDAC960/DAC1100PCIRAIDControllersupport<*>Loopbackdevicesupport<>Networkblockdevicesupport<*>RAMdisksupport(4096)DefaultRAMdisksize[*]InitialRAMdisk(initrd)support[*]Perpartitionstatisticsin/proc/partitions块设备。软驱也可以不选。这里的关键选项是Loopbackdevice,RAMdisk和initrd,一定要选中。DefaultRAMdisksize多少都没有关系。4.2.7Multi-devicesupport(RAIDandLVM)[*]Multipledevicesdriversupport(RAIDandLVM)<*>RAIDsupport<*>Linear(append)mode<*>RAID-0(striping)mode<*>RAID-1(mirroring)mode<*>RAID-4/RAID-5mode<*>MultipathI/Osupport<*>Logicalvolumemanager(LVM)supportMD支持。软RAID和LVM的支持在这里选择,如果不使用,也可以不选。4.2.8Networkingoptions<*>Packetsocket[*]Packetsocket:mmappedIO<>Netlinkdeviceemulation[*]Networkpacketfiltering(replacesipchains)[]Networkpacketfilteringdebugging[*]SocketFiltering<*>Unixdomainsockets[*]TCP/IPnetworking[*]IP:multicasting[*]IP:advancedrouter[]IP:policyrouting[]IP:equalcostmultipath[]IP:useTOSvalueasroutingkey[]IP:verboseroutemonitoring[]IP:largeroutingtables[*]IP:kernellevelautoconfiguration[*]IP:DHCPsupport[*]IP:BOOTPsupport[*]IP:RARPsupport<*>IP:tunneling<>IP:GREtunnelsoverIP[]IP:multicastrouting[]IP:TCPExplicitCongestionNotificationsupport[]IP:TCPsyncookiesupport(disabledperdefault)IP:NetfilterConfiguration><>802.1QVLANSupport<>TheIPXprotocol<>AppletalkprotocolsupportAppletalkdevices><>DECnetSupport<>802.1dEthernetBridgingQoSand/orfairqueueing>Networktesting>网络选项。这里选项也比拟多,如果没有什么特殊要求,又不是十分理解这些选项的意义,根本上可以用缺省设置。注意DHCP选项,如果要用到的话要记得选中这个。IP:NetfilterConfiguration〔跟iptables有关〕等几个子选项都没有选。4.2.9ATA/IDE/MFM/RLLsupport<*>ATA/IDE/MFM/RLLsupportIDE,ATAandATAPIBlockdevices><*>EnhancedIDE/MFM/RLLdisk/cdrom/tape/floppysupportPleaseseeDocumentation/ide.txtforhelp/infoonIDEdrives[]Useolddisk-onlydriveronprimaryinterface<*>IncludeIDE/ATA-2DISKsupport[*]Usemulti-modebydefault[*]Auto-GeometryResizingsupport<*>IncludeIDE/ATAPICDROMsupport<>IncludeIDE/ATAPITAPEsupport<>IncludeIDE/ATAPIFLOPPYsupport<*>SCSIemulationsupport[]IDETaskfileAccessIDEchipsetsupport/bugfixes[]CMD640chipsetbugfix/support[]RZ1000chipsetbugfix/support[*]GenericPCIIDEchipsetsupport[*]SharingPCIIDEinterruptssupport[*]GenericPCIbus-masterDMAsupport[]Bootoff-boardchipsetsfirstsupport[]Forceenablelegacy2.0.XHOSTStouseDMA[*]UsePCIDMAbydefaultwhenavailable[]EnableDMAonlyfordisks[]AEC62XXchipsetsupport[]ALIM15x3chipsetsupport[]AMDVipersupport[]CMD64XandCMD680chipsetsupport[]CY82C693chipsetsupport[]CyrixCS5530MediaGXchipsetsupport[]HPT34Xchipsetsupport[]HPT366/368/370chipsetsupport[*]IntelPIIXnchipsetssupport[*]PIIXnTuningsupport[]PROMISEPDC202{46|62|65|67|68|69|70}support[]ServerWorksOSB4/CSB5chipsetssupport[]SiS5513chipsetsupport[]SLC90E66chipsetsupport[]VIA82CXXXchipsetsupport[]OtherIDEchipsetsupport[]IGNOREword93ValidationBITSIDE设备支持。要用IDE硬盘,当然要选中。CDROM选项看情况也可以不要。SCSIemulation似乎对使用USB盘有影响。剩下的很多都是跟IDEchipset有关的。最好是用dmesg命令找出目标系统主板芯片组,然后选中对应的芯片组支持,这样相当于安装了IDE芯片组的驱动程序。如果没有指定应该也可以,只是性能可能会受到一些影响。4.2.10SCSIsupport<*>SCSIsupportSCSIsupporttype(disk,tape,CD-ROM)<*>SCSIdisksupport(40)MaximumnumberofSCSIdisksthatcanbeloadedasmodules<>SCSItapesupport<>SCSIOnStreamSC-x0tapesupport<>SCSICD-ROMsupport<*>SCSIgenericsupportSomeSCSIdevices(e.g.CDjukebox)supportmultipleLUNs[]Enableextrachecksinnewqueueingcode[]ProbeallLUNsoneachSCSIdevice[]VerboseSCSIerrorreporting(kernelsize+=12K)[]SCSIloggingfacilitySCSIlow-leveldrivers>SCSI支持。如果要用到SCSI硬盘等SCSI设备,这里当然要选。目前我们的目标系统其实没有SCSI硬盘,但是为了使用USB盘,也要选中SCSI支持。SCSIlow-leveldrivers子选项中是一些SCSI卡,都不用选。4.2.11Networkdevicesupport[*]NetworkdevicesupportARCnetdevices><>Dummynetdriversupport<>Bondingdriversupport<>EQL(seriallineloadbalancing)support<>UniversalTUN/TAPdevicedriversupportEthernet(10or100Mbit)>[*]Ethernet(10or100Mbit)[*]EISA,VLB,PCIandonboardcontrollers<*>EtherExpressPro/100support(eepro100,originalBeckerdriver<*>RealTekRTL-8139PCIFastEthernetAdaptersupportEthernet(1000Mbit)>[]FDDIdriversupport<>PPP(point-to-pointprotocol)support<>SLIP(serialline)supportWirelessLAN(non-hamradio)>TokenRingdevices>[]FibreChanneldriversupportWaninterfaces>网络设备支持。主要选择网卡类型,Ethernet(10or100Mbit)子选项中列出了内核可以支持的10/100M以太网卡,这里仅列出了我们选中的2种。其他子选项都没有选。4.2.12Characterdevices[*]Virtualterminal[*]Supportforconsoleonvirtualterminal<*>Standard/generic(8250/16550andcompatibleUARTs)serialsupport[*]Supportforconsoleonserialport[]Extendeddumbserialdriveroptions[]Non-standardserialportsupport[]Unix98PTYsupportI2Csupport>Mice>Joysticks><>QIC-02tapesupportWatchdogCards><>AMD768RandomNumberGeneratorsupport<>Inteli8x0RandomNumberGeneratorsupport<>AMD76xnativepowermanagement(Experimental)<>/dev/nvramsupport<>EnhancedRealTimeClockSupport<>DoubleTalkPCinternalspeechcardsupport<>SiemensR3964linediscipline<>ApplicomintelligentfieldbuscardsupportFtape,thefloppytapedevicedriver><>/dev/agpgart(AGPSupport)[]DirectRenderingManager(XFree86DRIsupport)<>ACPModem(Mwave)support字符设备。这里主要就是选择了最前面4个跟终端和串口有关的选项,以支持虚拟终端〔远程登录要用到〕,支持标准串口,支持串口控制台。4.2.13Filesystems[*]Quotasupport<>Kernelautomountersupport<*>Kernelautomounterversion4support(alsosupportsv3)<*>Reiserfssupport[]Enablereiserfsdebugmode[*]Statsin/proc/fs/reiserfs<*>Ext3journallingfilesystemsupport[]JBD(ext3)debuggingsupport<*>DOSFATfssupport<*>MSDOSfssupport<>UMSDOS:Unix-likefilesystemontopofstandardMSDOSfs<*>VFAT(Windows-95)fssupport<>CompressedROMfilesystemsupport[*]Virtualmemoryfilesystemsupport(formershmfs)<*>ISO9660CDROMfilesystemsupport[*]MicrosoftJolietCDROMextensions[]Transparentdecompressionextension<>JFSfilesystemsupport<>Minixfssupport<>FreeVxFSfilesystemsupport(VERITASVxFS(TM)compatible)<>NTFSfilesystemsupport(readonly)<>OS/2HPFSfilesystemsupport[*]/procfilesystemsupport<>QNX4filesystemsupport(readonly)<>ROMfilesystemsupport<*>Secondextendedfssupport<>SystemV/Xenix/V7/Coherentfilesystemsupport<>UDFfilesystemsupport(readonly)<>UFSfilesystemsupport(readonly)NetworkFileSystems><>Codafilesystemsupport(advancednetworkfs)<*>NFSfilesystemsupport[*]ProvideNFSv3clientsupport[]RootfilesystemonNFS<*>NFSserversupport[*]ProvideNFSv3serversupport<*>SMBfilesystemsupport(tomountWindowssharesetc.)[]UseadefaultNLS<>NCPfilesystemsupport(tomountNetWarevolumes)PartitionTypes>NativeLanguageSupport>DefaultNLSOption:"iso8859-1"<*>Codepage437(UnitedStates,Canada)<*>SimplifiedChinesecharset(CP936,GB2312)<*>TraditionalChinesecharset(Big5)文件系统。这局部内容比拟多,也很重要。首先是Quota,如果目标系统支持这个功能,这里就要选中。然后是选择要支持的文件系统,常用的有Reiserfs,Ext3,FAT,ISO9660,JFS等等,可以根据情况选择。/proc和ext2一定要选中。还有NetworkFileSystems子选项,可以选择是否支持NFS和SMB。NativeLanguageSupport子选项跟所支持的语言有关,这里没有全部列出来,我们选中了英语和简体、繁体中文字符集。4.2.14Consoledrivers[*]VGAtextconsole[]Videomodeselectionsupport控制台驱动。调试的时候可以给目标系统接显示器看一下,实际系统应该可以不选。4.2.15USBsupport<*>SupportforUSB[]USBverbosedebugmessagesMiscellaneousUSBoptions[*]PreliminaryUSBdevicefilesystem[]Longtimeoutforslow-respondingdevices(someMGEEllipseUPSeUSBHostControllerDrivers<*>UHCIAlternateDriver(JE)support<*>OHCI(Compaq,iMacs,OPTi,SiS,ALi,...)supportUSBDeviceClassdrivers<>USBMIDIsupport<*>USBMassStoragesupport[*]USBMassStorageverbosedebug[]FreecomUSB/ATAPIBridgesupport[]ISD-200USB/ATABridgesupport[]MicrotechCompactFlash/SmartMediasupport<>USBModem(CDCACM)support<>USBPrintersupportUSBHumanInterfaceDevices(HID)<*>USBHumanInterfaceDevice(fullHID)supportInputcoresupportisneededforUSBHIDinputlayerorHIDBP[]/dev/hiddevrawHIDdevicesupportUSBImagingdevices<>USBKodakDC-2xxCamerasupport<>USBScannersupport<>MicrotekX6USBscannersupportUSBMultimediadevicesVideo4LinuxsupportisneededforUSBMultimediadevicesupportUSBNetworkadaptorsUSBportdriversUSBSerialConvertersupport>USBMiscellaneousdrivers<>TexasInstrumentsGraphLinkUSB(akaSilverLink)cablesupport<>USBLCDdevicesupportUSB支持。如果没有使用USB设备,这局部可以不选。要使用USB盘,一定要选中USBMassStoragesupport。其余很多项选择项我也不清楚是干什么用的。4.3提示4.3.1EXTRAVERSION在系统中使用uname可以获得系统版本信息。比方Redhat9:[root@lipsroot]#uname-r2.4.20-8[root@lipsroot]#返回结果表示了Redhat修订后的内核版本号。前面我们提到过,这个“-8〞就是Redhat附加在标准内核版本号后面的一个信息。在一个运行LiPS的系统中,我们也需要确定当前使用的内核版本,通过版本信息来知道这个内核的配置,也可以通过在标准内核版本后面附加特定的编码来实现。/usr/src/linux-2.4/Makefile中的变量EXTRAVERSION可以帮助我们到达这个目标。下面是Makefile文件的最前面几行内容:VERSION=2PATCHLEVEL=4SUBLEVEL=20EXTRAVERSION=-8KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)现在KERNELRELEASE的值就是2.4.20-8。这个信息会被编译到内核中,uname工具会从内核文件中提取出版本号。如果将Makefile做一些修改,比方,EXTRAVERSION=-8-R2Lips那么我们可以得到内核版本号2.4.20-8-R2Lips,表示为了创立LiPS而编译的一个特定配置的内核,这个内核是以2.4.20-8为根底,R2Lips〔Release2Lips〕即第二个版本。对Makefile的修改要在编译内核之前完成。4.3.2.config内核配置〔makemenuconfig〕完成之后,会询问:Doyouwishtosaveyournewkernelconfiguration?<Yes><No>答复Yes,配置信息会保存在/usr/src/linux-2.4/.config文件中。注意以“.〞开头的文件是个隐藏文件,要用ls–a才看的到。.config是个文本文件,内容类似下面:##Loadablemodulesupport#CONFIG_MODULES=y#CONFIG_MODVERSIONSisnotsetCONFIG_KMOD=y所以可以把这个文件保存起来,并且给文件名带上版本号,方便管理、使用。cp.config~/config-2.4.20-8-R2Lips5根文件系统创立根文件系统比编译内核要复杂的多,也更难理解。这里的关键是掌握initrd〔初始化RAM盘〕的使用方法。5.1根文件系统这里我们将要创立的根文件系统与通常Linux主机的根文件系统类似,只是它应该仅仅包括系统运行所必须的应用程序、库和相关文件的最小集合。根文件系统的尺寸大小是一个重要的指标。5.2文件系统的内容5.2.1应用程序〔applications〕/bin,/sbin,/usr/bin,/usr/sbin应用程序大致可以分为3局部,第一是操作系统正常运行所需的根本工具软件,比方bash,cp,rm等;第二是提供某项效劳的效劳器软件,比方httpd,telnetd,proftpd等;第三是我们所开发的应用程序。其实后面讲的配置文件等也可以粗略按照这个原那么来分类。到底需要复制哪些软件,弹性是比拟大的,很多软件都是可要可不要,可以实际情况灵巧选择。这个列表可能很长,并且变化也比拟大,因此不在这里列出。为了进一步减小所创立的根文件系统的尺寸,可以考虑使用以下工具包软件来替代某些标准的工具:OBusyBox〔〕/OTinyLogin〔〕/OEmbutils〔http://www.fefe.de/embutils/〕其详细使用方法请参考相关资料,此处不再赘述。LIPS的实现目前没有使用这些软件包。5.2.2设备文件〔devicefiles〕/dev设备文件也可以称作设备节点〔devicenode〕。设备文件非常重要,缺少某些有些设备文件可能导致系统不能正常运行甚至不能引导。有些设备文件是必须的,而更多的是根据具体目标系统的硬件配置来进行取舍。比方硬盘的设备文件,在完整的系统中一般有hda,hdb,……,hdt,即最多支持20个IDE硬盘,每个硬盘有hdX1,hdX2,……,hdX32,〔其中X表示a-t〕,即支持32个分区,另外还有表示SCSI硬盘的节点。根据实际情况,如果只需要支持少量的硬盘、少量的分区,这些节点可以被大大简化。如果目标系统中没有的设备,其对应的设备文件也可以省掉。设备文件描述/dev/console系统控制台设备,非常重要。/dev/fd0第一个软驱/dev/hda/dev/hda[1-8]IDE硬盘及分区/dev/initctl实际上是一个FIFO设备,跟init有关〔切换运行级别时用于新init与原init通信〕/dev/initrdInitialRAMdisk/dev/input〔目录〕Inputcore〔包括游戏杆、鼠标等〕/dev/kmem内核虚拟内存/dev/loop[0-7]Loopback设备/dev/mem访问物理内存/dev/nullNULL设备/dev/psauxPS/2鼠标/dev/ptmxUNIX98PTYmaster/dev/pts〔目录〕UNIX98PTYslaves/dev/ptyp[0-7]伪终端主设备〔远程登录使用〕/dev/ram[0-7]/dev/ramdisk/dev/ramRAMDisk设备。至少/dev/ram0是应用initrd机制所必须的。/dev/ramdisk链接到/dev/ram0,是为了兼容老版本内核而保存的。/dev/ram链接到/dev/ram1。/dev/random随机数发生器/dev/sda/dev/sda[1-8]SCSI磁盘及分区设备/dev/shm共享内存设备/dev/systty指向系统tty设备的符号链接,一般是tty0。/dev/tty当前TTY设备/dev/tty[0-7]虚控制台〔Virtualconsole〕/dev/ttyp[0-7]伪终端从设备/dev/ttyS0/dev/ttyS1串口〔COM1和COM2〕/dev/urandom速度更快、平安性较差的随机数发生器/dev/zero零设备,只能读0出来设备节点的主设备号〔Major〕、次设备号〔Minor〕的文档是内核源代码中的/Documentation/device.txt,如果有疑问可以查看这个文件[8]。5.2.3脚本和配置文件〔scriptsandconfigurationfiles〕/etc/etc/rc.d目录下的启动脚本是系统的重要局部。必须对启动脚本做相应的修改以简化系统的启动过程。系统和各种应用程序用到的几乎所有的配置文件都位于/etc目录,是裁减Linux最麻烦的局部,最容易出问题。配置文件的选择需要综合很多方面的信息,需要对系统有比拟全面、深入的了解,并结合经验才能做出正确的判断。配置文件描述/etc/default〔目录〕某个命令〔比方useradd〕的缺省设置〔manuseradd(8)〕/etc/ld.so.cache由ldconfig命令根据/etc/ld.so.conf文件产生/etc/ld.so.conf库文件路径配置文件,ldconfig命令根据该配置文件生成/etc/ld.so.cache/etc/localtime本地时间、时区设置/etc/login.defs全局缺省设置/etc/fstab文件系统列表〔manfstab(5)〕/etc/group组文件〔mangroup(5)〕/etc/hosts列出主机名和IP地址〔manhosts(5)〕/etc/init.d符号链接到/etc/rc.d/init.d/etc/initlog.confInitlog日志配置文件〔maninitlog(8)〕/etc/inittabInit配置文件〔maninittab(5)〕/etc/ioctl.save该文件包含了用于单用户模式的串口和终端参数,因为这些参数是由getty设置的,而在单用户模式时没有运行getty,所以用该文件保存参数。单用户模式对系统平安是个威胁,我们应该禁止使用单用户模式,因此这个文件实际上并没有必要复制过来。/etc/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论