Linux 內核編譯步驟及配置詳解


前言
   Linux內核是操作系統的核心,也是操作系統最基本的部分。


   Linux內核的體積結構是單內核的、但是他充分采用了微內核的設計思想、使得雖然是單內核、但工作在模塊化的方式下、並且這個模塊可以動態裝載或卸 載;Linux負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定着系統的性能和穩定性。如是我們在了解Linux內核的基礎上根據自己的需 要、量身定制一個更高效,更穩定的內核,就需要我們手動去編譯和配置內核里的各項相關的參數和信息了。
注意、如果兩個內核模塊的版本不完全相同是不可以跨版本使用的。

正文
   首先我們要去獲得Linux內核的壓縮文件、獲得的路徑很多了、最直接的就是去內核官網獲得了(http://www.kernel.org),也可以到各鏡像站上去下載、這里就不再說明了。

注意:/usr/src;一般而言、我們制做linux內核的時候源碼一般放在這個路徑下、並且有一個鏈接叫linux什么的、所以展開時應該放在這個路徑下。

   我這里下載有一個3.13.2版本的內核、展開時指定一個展開路徑就可以了,文件比較大、70多M、可能需要點時間的。
   # tar xf linux-3.13.2.tar.xz -C /usr/src/

   wKioL1MapH-Bjd82AABmpA1PjrU567.jpg
   展開之后在/usr/src/這個目錄下就看到了生成一個linux-3.13.2的文件了

   為以后使用方便、我們給他創建一個鏈接:
   # ln -sv linux-3.13.2 linux

   wKiom1MapNKh74XPAAB5IEKw_vI902.jpg
   我們cd到linux目錄里面看一下里面的文件看:
   # cd /usr/src/linux

   wKioL1MapOHQgrpoAACzmJ7T90Q230.jpg
   里面的目錄我這里就不一一介紹了、有興趣的朋友可以去了解一下哦。
   到下一步就是去配置內核了、這步配置內核的方法有多種、每一個make就是一種方法、我們只在選一種就可以了:

   make config:遍歷選擇所要編譯的內核特性
   make allyesconfig:配置所有可編譯的內核特性
   make allnoconfig:並不是所有的都不編譯,而是能選的都回答為NO、只有必須的都選擇為yes。
   make menuconfig:這種就是打開一個文件窗口選擇菜單,這個命令需要打開的窗口大於80字符的寬度,打開后就可以在里面選擇要編譯的項了
   下面兩個是可以用鼠標點選擇的、比較方便哦:
   make kconfig(KDE桌面環境下,並且安裝了qt開發環境)
   make gconfig(Gnome桌面環境,並且安裝gtk開發環境)
   menuconfig:使用這個命令的話、如果是新安裝的系統就要安裝gcc和ncurses-devel這兩個包才可以打開、然后再里面選擇就可以了、通這個方法也是用得比較多的:

wKiom1MapVCCGRSaAAMP-pFlTno636.jpg

   如果想方便點又不想用別的方法那就復制當前系統上的/boot/config-版本-平台,這個文件到/usr/src/linux/.config覆 蓋這個文件,再改一下里面的配置信息;哪些用得着就保留、哪些用不着就刪除了都可以、有什么新的也可以加進來、這就是按自己的需求來配置了;

wKioL1MapU-xI3JzAAGGyCZYZIg932.jpg

 

   注意:如果編譯是在遠程連接上的話、make會出問題的、如果遠程連接斷開的話那運行的進程是不是也都斷開了、這個make的進程一定是當前系統上運行的子進程、有些一旦父進程掛了、子進程也將不復存在、俗話說:皮之不存毛將焉附,是這個道理吧;

   所以我們使用一個叫screen這個命令來操作,沒安裝自己安裝上就是了、可以在一個窗口上啟動n個虛擬的桌面,即使退出了也會保留之前的內容,切換進screen就可以看到窗口標題欄上的screen標志了:

   wKiom1Mapd_w1zGTAAEcrGcM8i0433.jpg

   # screen -ls:可以查看當前啟用了多少個screen
   按Ctrl+a,松開再按d可以隱藏screen桌面
   因為編譯內核需要比較長的時間、所以我們在screen上編譯、然后再把screen桌面隱藏就可以了;
   重新接入screen:
   # screen -r 跟上screenID就可以了
   然后我們就開始編譯吧;(我這里編譯差不多用了兩小時、make的時候我不指定cpu的核心數、默認就是用一個核來編譯、所以很久)

   # make

   wKiom1MappTS0l7PAADEZe4oUD8150.jpg

   編譯好了之后我們就可以進行下一步了:
   # make modules_install
   這步完了之后你可以查看一下/lib/modules/目錄下就會生成一個以版本號命名的一個文件模塊了
   wKiom1Mawq7yelmIAABNeTaicBs308.jpg

    modules之后再往下走、敲命令吧
   # make install
   安裝完之后會在/boot/目錄下生成一個內核文件vmlinuz-3.13.2、還有幾個跟你當前編譯的版本一樣的文件、可以ls去看一下:
   # ls /boot/

   wKioL1MaxPbj4wuFAAD2w1YRV1Q097.jpg
   如果沒出什么問題到這里我們應該算是編譯好了一個新內核了;可以到grub.conf配置文件時看一下:
   # vim /boot/grub/grub.conf

   wKiom1Maxdiy9RmsAAGyhgb-QWs068.jpg

   好了、要不我們重啟一下看看、OK、重啟吧!如果順利的話就可以進到內核選擇界面了,選項我們編譯的新內核就OK了,好了、到這就結束了!

wKioL1Maxz2ge3GNAAC6wW-iFY0072.jpg
   總結一下我們的安裝步驟:

       1、獲取內核源碼,解壓至/usr/src
           # tar xf linux-3.13.5.tar.xz -C /usr/src
           # ln -sv /usr/src/linux-3.13.5  /usr/src/linux
       2、配置內核特性(選擇一種方法就可以了)
           make config:遍歷選擇所要編譯的內核特性
           make allyesconfig:配置所有可編譯的內核特性
           make allnoconfig:並不是所有的都不編譯
           make menuconfig:這種就是打開一個文件窗口選擇菜單
           make kconfig(KDE桌面環境下,並且安裝了qt開發環境)
           make gconfig(Gnome桌面環境,並且安裝gtk開發環境)
       3、編譯內核
           # make [-j #] : #號最多為CPU物理核心總數的兩倍,這樣會快點哦            
       4、安裝內核模塊
           # make modules_install
       5、安裝內核
           # make install
       6、驗正並測試
           # cat /boot/grub/grub.conf
           查看新內核是否已經添加, 而后重啟系統並測試

結束:
   其實編譯一個新的內核好像也不是很難是吧、跟我們之前源碼編譯的httpd的步驟差不多、也就是第一步麻煩點、細心點就OK了,當然如果有什么不對的地方還望各路諸侯多多提點!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM