為最佳性能而調優 Red Hat(4)

發表于:2007-06-22來源:作者:點擊數: 標簽:
為什么定制內核? 任何 Linux 系統的核心是內核本身。這部分講述編譯定制的內核、為什么要定制內核、構建內核的兩個基本方法、編譯內核的步驟以及應該知曉的各種選項。 一般來說,Linux 的長期用戶很少在他們的系統中使用標準內核。這并不是因為多數分發版提

   
  為什么定制內核?
  
  任何 Linux 系統的核心是內核本身。這部分講述編譯定制的內核、為什么要定制內核、構建內核的兩個基本方法、編譯內核的步驟以及應該知曉的各種選項。
  

  一般來說,Linux 的長期用戶很少在他們的系統中使用標準內核。這并不是因為多數分發版提供的內核存在嚴重錯誤 — 實際上,Red Hat 在他們的產品中提供的內核是穩定的而且“做工精良”,這是婦孺皆知的。問題是,多數主流發行商編譯的內核需在盡可能多的體系結構和系統中穩定運行。所以,幾乎可以肯定地說,適合于廣大用戶的內核并不是為您的系統和需求而優化的。
  
  編譯定制內核的一些常見理由是:
  
  越少越好:一般來說,為某個系統編譯的內核要比標準內核運行得快而且在日常操作中更穩定。
  定制的內核往往使用更少的內存。這將減少 I/O 開銷(內存中的內核代碼從不被轉移到交換區),釋放系統資源,供其它進程使用。
  在標準內核被發布后,定制內核使您能夠利用改進的代碼、新的驅動程序和錯誤修正。
  當您從內核中除去沒用的驅動程序和功能后,新內核自然要比標準內核更安全。
  把重要的功能和驅動程序構建到內核中去而不是把它們作為模塊裝入,這樣做能提高系統的響應速度。
  很多人不愿編譯內核的主要原因很可能是以為編譯過程很復雜(或者說可怕)。希望通過學習這部分內容能使您認識到編譯過程并不復雜。
  
  
  兩種思路……
  
  在編譯內核時有兩種基本的思路:基于模塊的和單塊的。
  
  在單塊的內核中,所有的系統服務、功能和驅動程序都被直接構建到內核中。
  在與之相對的基于模塊的內核中,只有一些關鍵組件才被構建到內核中,其余的組件將在需要的時候作為模塊被裝入。
  正如 Linux 中的許多其它作法那樣,常用的定制方法是兩種方法并用。關鍵的服務和驅動程序被編譯到內核中去,較少用到的組件被構建成模塊。一般的規律是,為某一個系統構建的內核往往更少使用模塊。為多個系統構建的內核往往更多地使用模塊。
  
  內核編譯概述,
  
  只要您仔細地完成某些步驟,構建內核并不象有些人想象的那樣困難。簡而言之,構建的步驟如下:
  
  決定構建內核。
  下載所需的源代碼 tarball 并將它移到 /usr/src。
  “cd”至 /usr/src。
  為安全起見,刪除當前內核源代碼的現有的符號鏈接(symbolic link)( rm -rf /usr/src/linux )。當前內核軟件包被解壓到名為 /usr/src/linux-kernel-version 的目錄,但一些舊的軟件包仍按舊的約定被解壓到 /usr/src/linux — 這將覆蓋現有的 Linux 源代碼樹。
  解壓源代碼軟件包( tar xvzf linux-kernel-version )。
  再次創建先前刪除的符號鏈接( ln -sf /usr/src/linux-kernel-version linux )。
  “cd”至 /usr/src/linux。
  輸入 make mrproper 。這個命令將清理源代碼樹并刪除所有舊的目標文件?,F有的 .config 文件也將被刪除(.config 保存著編譯選項),所以,如果您想保存該文件中的設置,請把該文件復制到安全的位置,等 make 進程完成后再把它復制到 /usr/src/linux。
  下一頁將完成定制過程。
  
  內核編譯概述
  
  在前一頁,我們已開始構建內核的過程:下載和解壓源代碼,清理源代碼樹。在這頁中我們將完成構建內核的過程。
  
  根據您偏愛的界面,輸入 make config、make menuconfig、make xconfig 或 make oldconfig。make config 是基于控制臺的配置過程;make menuconfig 提供基于光標的菜單配置界面;make xconfig 是基于 X-Window 的界面;如果您想用現有的內核配置來構建新的內核而且您只想看到新內核樹中存在的新選項,請使用 make oldconfig。
  當您作出合適的配置選擇后,請輸入 make dep ; make clean 。
  為了實際構建內核,請輸入 make bzImage 或 make install。前一個命令構建內核映象但并不把它安裝到 /boot 目錄;后一個命令構建并安裝內核映象。
  如果內核編譯時有錯誤,請輸入 make modules && make modules_install。這兩個命令將構建并安裝所有基于模塊的組件。
  最后,把新的內核復制到 /boot(如果您使用了 make bzImage 命令)。如果您運行的是 Red Hat 的分發版,那么您還得更新 System.map 和 initrd 映象。別忘了在引導裝入程序的配置中加入新的內容,這樣做的目的是為了在內核引導失敗的情況下使用戶仍然能夠回到系統中,作出合適的修改。
  Red Hat 提供一個綜合的實用指南,該指南詳細描述了如何編譯內核(請參閱參考資料)。對于初次構建 Linux 內核的人來說,這個指南值得一讀。
  
  配置竅門和提示
  
  構建優化的 Linux 內核的最重要的步驟是前面提到的 make configure/menuconfig/xconf/oldconfig 過程。在這個過程中,您選擇把哪些系統、服務和驅動程序包括在內核中,哪些東西被構建成模塊。在這個過程中,最常見的問題是“在配置中包括哪些東西、不包括哪些東西?”和“哪些組件被構建到內核中去、哪些組件被構建成模塊?”
  
  對第一個問題的簡短回答是“只包括您所需的并使系統按您的要求運行的東西”(別忘了,越少越好)。對于第二個問題,回答是“摸著石子過河”,這有點令人費解。甚至有經驗的管理員也未必能夠在第一次配置后就能使系統達到最佳性能。如果編譯過程失敗或者您得到的是無法引導的內核,那么請使用引導裝入程序的備用選項,返回系統后仔細檢查配置;試試另一組選項。
  
  第二個問題(哪些組件被構建到內核中去、哪些組件被構建成模塊?)的回答取決于您將怎樣使用系統。還有經驗。例如,如果 Maestro3 聲音驅動程序被編譯到內核中去,那么該驅動程序無法在某些 Dell 筆記本電腦上運行 — 出于某些原因,應該以模塊的形式裝入這個驅動程序。在其它使用主流硬件的系統中,您可以把任何需要的東西構建到內核中去。在這里,系統配置和經驗常常決定了您的選擇。
  
  內核配置中的重要選項
  
  為了使初學者熟悉內核配置的過程,下幾頁將講述值得注意的一些重要選項,這些選項可能提高或降低系統性能。
  
  在我們開始以前,請注意,在使用 menuconfig 和 xconfig 配置界面的時候,您可以獲得大多數選項的描述,方法是選擇您有問題的選項,用 Tab 鍵選中 help 按鈕,再按 Enter 鍵。
  
  還有,不同版本的內核的配置選項是不相同的。如果您在內核中沒有看到某個選項而您需要這個功能,那么您有兩種選擇:試試另一個內核,或者查找合適的 diff 文件,然后手工修補內核。如果您想了解如何使用補丁,請參閱前面提及的 Kernel-HOWTO 文件(請參閱參考資料)。
  
  內核配置選項:代碼成熟程度和級別選項
  
  第一個需要注意的選項是列表中的第一個菜單項:Code maturity level options。除非您選擇“Prompt for development and/or incomplete code/drivers”,否則您將無法看到許多內核配置選項。
  
  General setup 和 Loadable module support 中的缺省值適合于大多數系統。
  
  在 Processor type and features 中,請注意內核編譯的目標處理器的類型(缺省值是 Pentium 3/Celeron)。SMP 是缺省值;如果您在為單處理器系統構建內核,請您取消選擇這個選項。當前的內核為“Preempible Kernel”提供支持。請選擇這個選項。該功能的描述中說:“在響應實時或交互式事件時,通過使優先級較低的進程失效(即便它在內核模式中執行系統調用),減少內核的等待時間。即使在系統負載不大的時候,該功能也能使應用程序運行地更穩定?!?br />  
  內核配置選項:電源管理選項
  
  在列表的下面,下一個值得注意的菜單組是 Power management options。一般來說,膝上型電腦的用戶至少需要某種形式的電源管理,但在這方面,BIOS 在與操作系統交互時常常會出現問題,這一點是眾所周知的。除非您確信您的系統完全支持 ACPI,請使用簡單的 APM。除了少數一些筆記本電腦,啟用 ACPI 將使所構建的內核在引導時遇到麻煩。對于臺式機用戶和服務器管理員來說,設置電源管理就象設置“個人偏愛”那樣無關緊要。
  
  Bus options 包括對各種總線拓撲結構的支持,例如 PCI、EISA、MCA 和 PCI 熱插拔支持。除了一個值得注意的選項外,其它缺省值已被合適地設好。如果您準備使用 PCMCIA 網絡或無線卡并計劃使用 pcmcia-cs 驅動程序代碼而不是 Linux 內核提供的驅動程序,那么請在 Network device support 菜單中禁用 PCMCIA/Cardbus 支持選項但啟用 PCMCIA.network device support。
  
  內核配置選項:設備支持選項
  
  配置菜單上的大多數設備支持選項不需要特別的說明:如果您需要某個選項的支持,請選擇它;否則就別選它。需要特別說明的是 Network device support。目前的 2.5.x 開發內核在缺省情況下啟用一小部分設備,但一些舊的內核缺省地啟用許多設備(作為模塊)。仔細地查看每個選項,不選所有今后用不到的選項。建議您把一個或兩個 EtherExpressPro/100 選項構建到內核中去,因為許多一般的網卡支持這種芯片組,而且準備一個備用網絡設備選項是不錯的主意。
  
  Filesystems 菜單是另一個需要仔細選擇的菜單。如果您選擇 ReiserFS 或 EXT3 文件系統,那么必須啟用相關的支持并把它構建到內核中去;否則,您的系統將無法引導(在系統初始化時,Linux 必須能訪問分區上的文件系統)。建議您選擇 EXT2 選項。它所包含的代碼相對較少,在出現問題時,內核中的 EXT2 支持可能有用。如果您準備通過 Samba 連接到 Windows 共享文件系統,那么請在 Filesystems-->Network files systems

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97