新版Linux-系統(tǒng)裁減指南5redkaoliangdoc_第1頁
新版Linux-系統(tǒng)裁減指南5redkaoliangdoc_第2頁
新版Linux-系統(tǒng)裁減指南5redkaoliangdoc_第3頁
新版Linux-系統(tǒng)裁減指南5redkaoliangdoc_第4頁
新版Linux-系統(tǒng)裁減指南5redkaoliangdoc_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

PAGE3?Linux系統(tǒng)裁減指南(LiPS)?目錄TOC\o"1-4"\h\z目錄 11引言 41.1編寫目的 41.2背景 41.3定義 41.4參考資料 42總體描述 52.1硬件環(huán)境 52.2軟件環(huán)境 52.3需求規(guī)定和約束 53總體設計 63.1根本設計概念 63.2軟件結構 64內(nèi)核 64.1創(chuàng)立內(nèi)核的方法 64.2內(nèi)核配置 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根文件系統(tǒng) 175.1根文件系統(tǒng) 175.2文件系統(tǒng)的內(nèi)容 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淘汰的根轉(zhuǎn)換機制〔change_root〕 245.4系統(tǒng)初始化〔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根轉(zhuǎn)換機制:新的?舊的? 305.7提示 315.7.1文件系統(tǒng)目錄層次結構 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創(chuàng)立文件系統(tǒng) 36復制文件 36安裝grub 366.5提示 376.5.1版本問題? 377遠程串口控制臺 377.1概述 377.2配置方法 377.3提示 377.4Linux遠程串口控制臺指南 378系統(tǒng)安裝光盤 408.1概述 408.2boot.iso光盤的文件結構分析 401引言1.1編寫目的說明Linux系統(tǒng)裁減的過程及解決的主要技術問題。本文檔的編寫是為了說明LiPS的詳細設計過程,也可以作為構造一個小型化Linux系統(tǒng)的指南。本文檔內(nèi)容的組織如下所述:這一局部是引言,第2局部是對工程軟、硬件環(huán)境和需求的總體描述,第3局部說明了裁減LINUX的相關根本概念。后面幾個局部是具體實現(xiàn)方法的詳細說明,4~6分別詳細描述了創(chuàng)立內(nèi)核、創(chuàng)立根文件系統(tǒng)和引導系統(tǒng)的方法。最后的內(nèi)容可以看作附錄,其中7說明了一般Linux系統(tǒng)安裝光盤的創(chuàng)立方法,8列出了相關的配置文件和源代碼。1.2背景華中科技大學計算機存儲系統(tǒng)國家專業(yè)實驗室,NAS工程〔2023.3——2023.8〕。1.3定義Obootloader:引導器Okernel:內(nèi)核Orootfilesystem:根文件系統(tǒng)OUSB:通用串行總線1.4參考資料[1]DIY:自己動手做一個迷你Linux系統(tǒng).IBMdeveloperWorks中國網(wǎng)站./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發(fā)表于白云黃鶴BBS(/Linux討論區(qū)的帖子“裁減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中國網(wǎng)站.http://www-90/0./developerWorks/cn/linux/l-pam/index.shtml.2023.7.[12]2總體描述2.1硬件環(huán)境開發(fā)主機:Intel845芯片組主板,P4賽揚1.8GHzCPU,256M內(nèi)存,60GIDE硬盤,RTL8139網(wǎng)卡。目標機:與主機同構。2.2軟件環(huán)境開發(fā)主機:RedhatLinux7.3(kernel2.4.18-3),或者RedhatLinux9(kernel2.4.20-8)??梢愿鶕?jù)需要使用其他版本的內(nèi)核,比方Redhat7.3+kernel2.4.20。目標機:LiPS,以及應用程序。2.3需求規(guī)定和約束我們目標系統(tǒng)LiPS,即LinuxPoweredStorage是一個嵌入式Linux操作系統(tǒng),主要著眼于提供各種文件效勞,不包括XGUI;并且足夠小,可以裝入32MUSB盤或者DOC/DOM等常用設備引導。3總體設計3.1根本設計概念提起“裁減Linux〞,最容易想到的方法是以一個已經(jīng)安裝好的系統(tǒng)為根底,刪除掉不需要的文件,以減小整個系統(tǒng)的尺寸。而事實上這個方法幾乎是行不通的,因為通過光盤安裝的一個Redhat9Linux系統(tǒng),即便是只選擇了比擬少的軟件包,其所占空間也可以輕松到達300~500MB,想在這個根底上裁減到30MB左右是比擬困難的。更困難的是確定哪些東西是可以刪除的?如果刪除了系統(tǒng)必須的文件,可能導致系統(tǒng)不能引導。另一個途徑是從零開始根據(jù)需要構建整個系統(tǒng)?!癓inuxFromScratch〞采用的就是這種方式,一個個安裝需要的軟件包。類似的,更簡單的方法是,安裝一個完整的Linux系統(tǒng),然后將必要的軟件〔可執(zhí)行程序〕、配置文件、庫文件、內(nèi)核等復制出來構建一個小系統(tǒng)。我們采取后一種方式。3.2軟件結構LiPS包括3局部:Linux內(nèi)核,根文件系統(tǒng)和引導器。內(nèi)核〔Kernel〕提供了一個操作系統(tǒng)的根本功能,如內(nèi)存管理、進程調(diào)度、文件系統(tǒng)、網(wǎng)絡等,以及設備驅(qū)動程序。根文件系統(tǒng)〔Rootfilesystem〕是存放運行、維護系統(tǒng)所必須的各種工具軟件、庫文件、腳本、配置文件和其他特殊文件〔比方設備節(jié)點〕的地方,也可以安裝各種軟件包。通常根文件系統(tǒng)位于某個磁盤分區(qū),而在LiPS中應用了initrd〔初始RAM盤〕機制,將根文件系統(tǒng)放在RAMDisk中。引導器〔BootLoader〕的任務是從引導設備裝載內(nèi)核,引導系統(tǒng)運行。Linux系統(tǒng)常見的引導器包括早期的LILO和近期的GRUB。LiPS用的是GRUB。4內(nèi)核4.1創(chuàng)立內(nèi)核的方法Linux提供了方便靈巧的方法來定制內(nèi)核,主要步驟包括:下載安裝內(nèi)核源代碼樹,配置內(nèi)核,編譯內(nèi)核。具體方法請參考相關文檔。關鍵指令如下:cd/usr/src/linux-2.4makemenuconfigmakedep;makeclean;makebzImage編譯成功的內(nèi)核文件為arch/i386/boot/bzImage.4.2內(nèi)核配置4.2.1概述makemenuconfig之后可以看到類似如下的內(nèi)容〔編號是為了描述方便而加上的〕。根據(jù)內(nèi)核版本的不同,列出的工程會有差異。而變化主要發(fā)生在發(fā)行版為標準內(nèi)核打的各種補丁上面,其實標準內(nèi)核是比擬穩(wěn)定的。如下所示,我們配置的內(nèi)核版本為2.4.20-8,這個“-8〞就是Redhat所打的補丁版本號。補丁一般是對標準內(nèi)核錯誤的修正和新增的功能。與2.4.20內(nèi)核配置選項比擬會發(fā)現(xiàn),[10,25,30]都屬于Redhat的補丁。一般地,這些補丁選項都不是必須的,因此我們的LiPS內(nèi)核中都沒有包括這些選項。其實,完全可以通過直接配置一個標準的內(nèi)核版本〔比方2.4.20〕來產(chǎn)生我們所需要的內(nèi)核。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內(nèi)核為例,來詳細說明內(nèi)核的配置,也就是選哪些東西、不選哪些東西。沒有說明的選項,比方“Codematurityleveloptions〞,表示不選。4.2.2Loadablemodulesupport[*]Enableloadablemodulesupport[]Setversioninformationonallmodulesymbols[*]Kernelmoduleloader可加載模塊支持。雖然目前所選工程全部編譯進內(nèi)核,但是內(nèi)核是支持模塊的??梢钥紤]將一些硬件設備的驅(qū)動程序編譯為模塊,從而減小內(nèi)核尺寸,同時增加適應不同硬件平臺的靈巧性。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總體設置。這一局部選項比擬重要,包括網(wǎng)絡、總線、進程、二進制文件格式、電源管理等。其中APM相關的選項比擬搞不清楚,有時候halt–p命令不能關閉系統(tǒng)電源跟這里有關系。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塊設備。軟驅(qū)也可以不選。這里的關鍵選項是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>網(wǎng)絡選項。這里選項也比擬多,如果沒有什么特殊要求,又不是十分理解這些選項的意義,根本上可以用缺省設置。注意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命令找出目標系統(tǒng)主板芯片組,然后選中對應的芯片組支持,這樣相當于安裝了IDE芯片組的驅(qū)動程序。如果沒有指定應該也可以,只是性能可能會受到一些影響。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設備,這里當然要選。目前我們的目標系統(tǒng)其實沒有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>網(wǎng)絡設備支持。主要選擇網(wǎng)卡類型,Ethernet(10or100Mbit)子選項中列出了內(nèi)核可以支持的10/100M以太網(wǎng)卡,這里僅列出了我們選中的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)文件系統(tǒng)。這局部內(nèi)容比擬多,也很重要。首先是Quota,如果目標系統(tǒng)支持這個功能,這里就要選中。然后是選擇要支持的文件系統(tǒng),常用的有Reiserfs,Ext3,F(xiàn)AT,ISO9660,JFS等等,可以根據(jù)情況選擇。/proc和ext2一定要選中。還有NetworkFileSystems子選項,可以選擇是否支持NFS和SMB。NativeLanguageSupport子選項跟所支持的語言有關,這里沒有全部列出來,我們選中了英語和簡體、繁體中文字符集。4.2.14Consoledrivers[*]VGAtextconsole[]Videomodeselectionsupport控制臺驅(qū)動。調(diào)試的時候可以給目標系統(tǒng)接顯示器看一下,實際系統(tǒng)應該可以不選。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在系統(tǒng)中使用uname可以獲得系統(tǒng)版本信息。比方Redhat9:[root@lipsroot]#uname-r2.4.20-8[root@lipsroot]#返回結果表示了Redhat修訂后的內(nèi)核版本號。前面我們提到過,這個“-8〞就是Redhat附加在標準內(nèi)核版本號后面的一個信息。在一個運行LiPS的系統(tǒng)中,我們也需要確定當前使用的內(nèi)核版本,通過版本信息來知道這個內(nèi)核的配置,也可以通過在標準內(nèi)核版本后面附加特定的編碼來實現(xiàn)。/usr/src/linux-2.4/Makefile中的變量EXTRAVERSION可以幫助我們到達這個目標。下面是Makefile文件的最前面幾行內(nèi)容:VERSION=2PATCHLEVEL=4SUBLEVEL=20EXTRAVERSION=-8KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)現(xiàn)在KERNELRELEASE的值就是2.4.20-8。這個信息會被編譯到內(nèi)核中,uname工具會從內(nèi)核文件中提取出版本號。如果將Makefile做一些修改,比方,EXTRAVERSION=-8-R2Lips那么我們可以得到內(nèi)核版本號2.4.20-8-R2Lips,表示為了創(chuàng)立LiPS而編譯的一個特定配置的內(nèi)核,這個內(nèi)核是以2.4.20-8為根底,R2Lips〔Release2Lips〕即第二個版本。對Makefile的修改要在編譯內(nèi)核之前完成。4.3.2.config內(nèi)核配置〔makemenuconfig〕完成之后,會詢問:Doyouwishtosaveyournewkernelconfiguration?<Yes><No>答復Yes,配置信息會保存在/usr/src/linux-2.4/.config文件中。注意以“.〞開頭的文件是個隱藏文件,要用ls–a才看的到。.config是個文本文件,內(nèi)容類似下面:##Loadablemodulesupport#CONFIG_MODULES=y#CONFIG_MODVERSIONSisnotsetCONFIG_KMOD=y所以可以把這個文件保存起來,并且給文件名帶上版本號,方便管理、使用。cp.config~/config-2.4.20-8-R2Lips5根文件系統(tǒng)創(chuàng)立根文件系統(tǒng)比編譯內(nèi)核要復雜的多,也更難理解。這里的關鍵是掌握initrd〔初始化RAM盤〕的使用方法。5.1根文件系統(tǒng)這里我們將要創(chuàng)立的根文件系統(tǒng)與通常Linux主機的根文件系統(tǒng)類似,只是它應該僅僅包括系統(tǒng)運行所必須的應用程序、庫和相關文件的最小集合。根文件系統(tǒng)的尺寸大小是一個重要的指標。5.2文件系統(tǒng)的內(nèi)容5.2.1應用程序〔applications〕/bin,/sbin,/usr/bin,/usr/sbin應用程序大致可以分為3局部,第一是操作系統(tǒng)正常運行所需的根本工具軟件,比方bash,cp,rm等;第二是提供某項效勞的效勞器軟件,比方httpd,telnetd,proftpd等;第三是我們所開發(fā)的應用程序。其實后面講的配置文件等也可以粗略按照這個原那么來分類。到底需要復制哪些軟件,彈性是比擬大的,很多軟件都是可要可不要,可以實際情況靈巧選擇。這個列表可能很長,并且變化也比擬大,因此不在這里列出。為了進一步減小所創(chuàng)立的根文件系統(tǒng)的尺寸,可以考慮使用以下工具包軟件來替代某些標準的工具:OBusyBox〔〕/OTinyLogin〔〕/OEmbutils〔http://www.fefe.de/embutils/〕其詳細使用方法請參考相關資料,此處不再贅述。LIPS的實現(xiàn)目前沒有使用這些軟件包。5.2.2設備文件〔devicefiles〕/dev設備文件也可以稱作設備節(jié)點〔devicenode〕。設備文件非常重要,缺少某些有些設備文件可能導致系統(tǒng)不能正常運行甚至不能引導。有些設備文件是必須的,而更多的是根據(jù)具體目標系統(tǒng)的硬件配置來進行取舍。比方硬盤的設備文件,在完整的系統(tǒng)中一般有hda,hdb,……,hdt,即最多支持20個IDE硬盤,每個硬盤有hdX1,hdX2,……,hdX32,〔其中X表示a-t〕,即支持32個分區(qū),另外還有表示SCSI硬盤的節(jié)點。根據(jù)實際情況,如果只需要支持少量的硬盤、少量的分區(qū),這些節(jié)點可以被大大簡化。如果目標系統(tǒng)中沒有的設備,其對應的設備文件也可以省掉。設備文件描述/dev/console系統(tǒng)控制臺設備,非常重要。/dev/fd0第一個軟驅(qū)/dev/hda/dev/hda[1-8]IDE硬盤及分區(qū)/dev/initctl實際上是一個FIFO設備,跟init有關〔切換運行級別時用于新init與原init通信〕/dev/initrdInitialRAMdisk/dev/input〔目錄〕Inputcore〔包括游戲桿、鼠標等〕/dev/kmem內(nèi)核虛擬內(nèi)存/dev/loop[0-7]Loopback設備/dev/mem訪問物理內(nèi)存/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,是為了兼容老版本內(nèi)核而保存的。/dev/ram鏈接到/dev/ram1。/dev/random隨機數(shù)發(fā)生器/dev/sda/dev/sda[1-8]SCSI磁盤及分區(qū)設備/dev/shm共享內(nèi)存設備/dev/systty指向系統(tǒng)tty設備的符號鏈接,一般是tty0。/dev/tty當前TTY設備/dev/tty[0-7]虛控制臺〔Virtualconsole〕/dev/ttyp[0-7]偽終端從設備/dev/ttyS0/dev/ttyS1串口〔COM1和COM2〕/dev/urandom速度更快、平安性較差的隨機數(shù)發(fā)生器/dev/zero零設備,只能讀0出來設備節(jié)點的主設備號〔Major〕、次設備號〔Minor〕的文檔是內(nèi)核源代碼中的/Documentation/device.txt,如果有疑問可以查看這個文件[8]。5.2.3腳本和配置文件〔scriptsandconfigurationfiles〕/etc/etc/rc.d目錄下的啟動腳本是系統(tǒng)的重要局部。必須對啟動腳本做相應的修改以簡化系統(tǒng)的啟動過程。系統(tǒng)和各種應用程序用到的幾乎所有的配置文件都位于/etc目錄,是裁減Linux最麻煩的局部,最容易出問題。配置文件的選擇需要綜合很多方面的信息,需要對系統(tǒng)有比擬全面、深入的了解,并結合經(jīng)驗才能做出正確的判斷。配置文件描述/etc/default〔目錄〕某個命令〔比方useradd〕的缺省設置〔manuseradd(8)〕/etc/ld.so.cache由ldconfig命令根據(jù)/etc/ld.so.conf文件產(chǎn)生/etc/ld.so.conf庫文件路徑配置文件,ldconfig命令根據(jù)該配置文件生成/etc/ld.so.cache/etc/localtime本地時間、時區(qū)設置/etc/login.defs全局缺省設置/etc/fstab文件系統(tǒng)列表〔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該文件包含了用于單用戶模式的串口和終端參數(shù),因為這些參數(shù)是由getty設置的,而在單用戶模式時沒有運行getty,所以用該文件保存參數(shù)。單用戶模式對系統(tǒng)平安是個威脅,我們應該禁止使用單用戶模式,因此這個文件實際上并沒有必要復制過來。/etc/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論