linux 內核編譯

爲了正確的合理地設置內核編譯配置選項,從而只編譯系統須要的功能的代碼,通常主要有下面四個考慮: 
  ---本身定製編譯的內核運行更快(具備更少的代碼) 
  ---系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中) 
  ---不須要的功能編譯進入內核可能會增長被系統攻擊者利用的漏洞 
  ---將某種功能編譯爲模塊方式會比編譯到內核內的方式速度要慢一些 html

 

1.得到最新內核linux

  Linux內核版本發佈的官方網站是< http://www.kernel.org/>,國內各大ftp上通常均可以找到某些版本的內核。新版本的內核的發佈有兩種形式,一種是完整的內核版本,另一種是patch文件,即補丁。完整的內核版本比較大,好比linux-2.4.0-test8.tar.bz2就有18M之多。完整內核版本通常是.tar.gz(.tgz)文件或者是.bz2文件,兩者分別是使用gzip或者bzip2進行壓縮的文件,使用時須要解壓縮。patch文件則比較小,通常只有幾十K到幾百K,極少的會超過1M。可是patch文件是針對於特定的版本的,須要找到本身對應的版本才能使用。 vim

2.配置內核安全

  內核的編譯選項的個數很是多, v2.6.38的內核中就有 12 000 個左右的設置選項(這是包含全部arch的配置選項).
  內核編譯選項不只多, 有些編譯選項之間還存在依賴關係, 因此手動設置編譯選項幾乎是不可能的.
  值得慶幸的是, 只要知道本身須要設置的那些選項, 就可使用 make ***config 來進行設置, 它還會自動處理依賴關係.架構

配置方法:網站

  • make menuconfig :: 源碼根目錄下生成 .config (沒有會自動生成), .config中就是各個內核編譯選項的選擇情況. 依賴libncurses庫
  • make defconfig :: 根據當前系統的架構默認 .config 生成內核源碼目錄下的 .config (每一個架構的配置文件: ex. arch/x86/configs/x86_64_defconfig)
  • make oldconfig :: 將已有的 .config 放到源碼根目錄下後執行, 目的是爲了複用以前的內核編譯選項的配置.
  • make xconfig :: 圖形化配置, 須要qt3, 我的以爲沒有必要, 有 make menuconfig 就足夠了.
  • make localmodconfig :: 生成以正在使用的內核模塊爲對象的 .config

若是這不是你第一次配置這個內核,那麼請先運行:make mrproper(http://www.cnblogs.com/laojie4321/archive/2012/04/11/2442921.html)來清除之前的配置.ui

3.編譯內核spa

  輸入以下命令,編譯生成一個壓縮內核:操作系統

  $ make.net

  開始編譯內核模塊:

  $ make modules

4. 安裝內核及模塊

  安裝內核, bzImage文件是內核映像文件,是啓動內核所必需的,咱們應當把它拷貝到/boot目錄下。通常內核映像文件的命名方式爲它更名爲vmlinuz-2.6.12.

  # make install (安裝內核二進制映像, 生成並安裝boot初始化文件系統映像文件)

  該指令將會在/boot目錄下安裝以下三個文件:

  System.map-2.6.25

  config-2.6.25

  vmlinuz-2.6.25

  安裝模塊,對於內核來講,每個內核版本有本身的模塊目錄,默認在/lib/modules/內核版本號這個目錄下,make modules_install會建立對應的目錄,並把對應的模塊文件拷貝過去。注意,這一步必需要在編譯過內核再作。

  make modules_install (安裝內核模塊到 /lib/modules 下)
 

6.建立initrd.img文件

  在終端輸入以下代碼:

  # cd /boot

  # mkinitrd -o initrd.img-2.6.25 2.6.25

  initrd映像文件包含設備驅動,用來加載操做系統的其他部分。並非全部的電腦都須要initrd文件,不過建立一個是比較安全的作法。

 

7.修改grub配置文件

   grub配置文件的位置在/boot/grub/menu.lst

  使用vim或者vi打開文件:

  # vi /boot/grub/menu.lst

   title Debian GNU/Linux, kernel 2.6.25 Default

  root (hd0,0)

  kernel /boot/vmlinuz root=/dev/hdb1 ro

  initrd /boot/initrd.img-2.6.25

  savedefault

  boot

  記得,須要填寫正確的 root=/dev/hdXX 。保存並關閉該文件。若是你以爲所有手工輸入有些麻煩,能夠嘗試輸入update-grub命令:

  # update-grub

 

 

參考:

http://www.360doc.com/content/13/0308/14/11722082_270168965.shtml

http://blog.chinaunix.net/uid-24782829-id-3211008.html

http://www.cnblogs.com/wang_yb/p/3899439.html

http://blog.chinaunix.net/uid-26404477-id-3126818.html

http://www.oschina.net/question/234345_42957

相關文章
相關標籤/搜索