熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

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

2013-11-13 16:06:30  來源: Oracle 

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

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.