萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 為什麼重新編譯內核及編譯准備

為什麼重新編譯內核及編譯准備

  為什麼重新編譯內核

  Linux作為一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。

  新的內核修訂了舊內核的bug,並增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效,更穩定的內核,就需要重新編譯內核。

  通常,更新的內核會支持更多的硬件,具備更好的進程管理能力,運行速度更快、 更穩定,並且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是Linux使用者的必要操作內容。

  為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主要有下面四個考慮:

  自己定制編譯的內核運行更快(具有更少的代碼)

  系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)

  不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞

  將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些。

  下載源代碼和編譯軟件的准備

  下載內核源代碼:http://www.kernel.org/

  注意,點擊2.6.25內核的F版,即完整版。

  如果你懶得去網站點聯接,運行下列命令:

  $cd ~

  $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.10.tar.bz2

  安裝有關編譯程序。安裝make ,gcc, make-kpkg,運行menuconfig等等和編譯內核相關的工具。

  安裝不了,請檢查/etc/apt/sources.list 文件。

  有關命令:

  $sudo apt-get install build-essential kernel-package libncurses5-dev

  make-kpkg是一種新的編譯內核的方法,後面會單獨講。

  kernel-package是為了安裝make-kpkg。

  libncurses5-dev是menuconfig需要的庫。

  解壓源代碼

  注意,網上很多教程上說應該解壓到 /usr/src,純屬以訛傳訛,linux掌門人linus說解壓到任何目錄上都可以。當然,linus的說法是正確的。我放在自己的主目錄下的src目錄。

  如果你下載源代碼是放到自己的主目錄下或者運行上面的wget下載的,那麼運行下列命令:

  $ cd ~

  $ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/

  現在,源代碼就在 ~/src/linux-2.6.25.10

  注意目錄容量要到達1.5G

  進入源代碼的目錄,准備下一步的工作。後面都在這個目錄裡面進行。

  $ cd ~/src/linux-2.6.25.10

  配制內核config

  首先,清理以前編譯時留下的臨時文件。如果是剛剛解開的包,不需要執行這步。如果是第二次或者是第n次編譯,那麼一定要執行。

  相關命令如下:

  $ sudo make mrproper

  網上很多教程上說把現在使用的內核的config拷貝過來參考,據實驗,是不需要的,ubuntu還有debian會自動做這步。不過這條命令倒是可以學習一下。當然你可以將以前的配置拷貝過來。

  命令:

  cp /boot/config-`uname -r` ./.config

  ./.config的意思是拷貝到當前目錄並以.config重命名。

  注意:在配制內核時,修改的文件為linux-2.6.25.10文件夾中的.config文件。這是個隱藏文件,更改查看方式可以看到。是make mrproper時自動拷貝過來的,下載的源包中沒有。

  相關命令

  #make config:基於文本的最為傳統的配置界面,不推薦使用

  #make menuconfig:基於文本選單的配置界面,字符終端下推薦使用

  #make xconfig:基於圖形窗口模式的配置界面,Xwindow下推薦使用

  #make oldconfig:如果只想在原來內核配置的基礎上修改一些小地方,會省去不少麻煩

  #make defconfig :按默認選項對內核進行配置(386的默認配置是Linus做的)

  #make allnoconfig : 除必須的選項外, 其它選項一律不選. (常用於嵌入式系統)

  配置2.6.0內核時如果你的主板是Intel芯片的話,你用默認配制也許就可以得到一個滿意的內核哦。做法是make menuconfig後離開時選擇保存。

  這裡的難點是pci,如果你硬盤是IDE的那一定要選擇好你主板上南橋芯片。SCSI的話就是要選擇上你的SCSI卡型號。

  還有就是網卡,聲卡芯片的型號了,他們的型號你都可以用lspci 查找到比如我的是。

  # lspci

  00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)

  00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)

  00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)

  00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

  00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB

  00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)

  00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter

  00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)

  00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

  00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)

  編譯配置

  1)文件系統

  請務必要選中ext3文件系統,

  File systems--->

  [*] Ext3 journalling file system support

  [*] Ext3 Security Labels

  [*] JBD (ext3) debugging support

  以上三項一定要選上,而且要內建(即標*). 這個非常重要,在配置完後一定要檢查一下.config文件有沒有"CONFIG_EXT3_FS=y"這一項.

  如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在運行內核時就會遇上以下錯誤: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed

  2)網卡驅動

  務必把自己網卡對應的驅動編譯進內核,比較普遍的網卡是realtek 8139,以下就是這種網卡的配置,以供參考

  Device Drivers--->

  Networking support--->

  Ethernet (10 or 100Mbit) --->

  <*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)

  <*> RealTek RTL-8139 PCI Fast Ethernet Adapter support

  3)聲卡驅動

  也要選擇自己聲卡對應的驅動編譯進內核,比較普遍的聲卡是i810_audio,以下就是這種聲卡的配置,以供參考

  Device Drivers --->

  Sound --->

  <*> Sound card support

  Advanced Linux Sound Architecture --->

  <*> Advanced Linux Sound Architecture

  <*> Sequencer support

  < > Sequencer dummy client

  <*> OSS Mixer API

  <*> OSS PCM (digital audio) API[*] OSS Sequencer API

  <*> RTC Timer support

  PCI devices --->

  <*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

  Open Sound System --->

  < > Open Sound System (DEPRECATED)

  以上三項配置關系到新內核能否正常運行,請備加注意.其他的配置如果不是很了解,大可以按默認的選擇.

copyright © 萬盛學電腦網 all rights reserved