內核編譯
大家都知道一個完整的計算機系統不僅需要硬件系統還需要軟件系統才能運行。而在軟件系統里,操作系統是最最重要的系統軟件。簡單來說,操作系統(Operating System,簡稱OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件,任何其他軟件都必須在操作系統的支持下才能運行。而內核,是一個操作系統的核心,是操作系統最基本的部分。它是為眾多應用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,并且內核決定一個程序在什么時候對某部分硬件操作多長時間。
內核是基于硬件的第一層軟件擴充,提供操作系統的最基本的功能,是操作系統工作的基礎,它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性。現代操作系統設計中,為減少系統本身的開銷,往往將一些與硬件緊密相關的(如中斷處理程序、設備驅動程序等)、基本的、公共的、運行頻率較高的模塊(如時鐘管理、進程調度等)以及關鍵性數據結構獨立開來,使之常駐內存,并對他們進行保護。通常把這一部分稱之為操作系統的內核。
類UNIX系統上的內核是LINUX,嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且使用GNU 工程各種工具和數據庫的操作系統。
一些組織基于內核,自定義各種工具并打包發布,這種叫做LINUX發行版,通常我們使用的也都是LINUX發行版,比如Debian系列、Redhat系列、Suse系列。這些發行版一般在放出的時候就已經把內核以最穩定的方式編譯好了,并且根據他們的測試和需求,把內核的許多屬性自定義的啟用和禁用了,這些發行版一般比較穩定。但是這些發行版一般發行周期都比較長,而內核的升級發行卻非常快,而且每次升級都會有許多新的功能,如果想要使用這些新特性就要自己去編譯內核了。當然編譯內核不算太難也不是太簡單,而且編譯需要一定的時間(這和計算機的性能有關)。
編譯內核步驟:
1.安裝開發編譯環境
2.下載LINUX內核源碼壓縮包
3.解壓源碼LINUX壓縮包并切換工作路徑到源碼包目錄
4.配置內核屬性
5.編譯內核
6.編譯和安裝內核模塊
7.安裝內核
8.啟動
詳細安裝過程:
1.安裝開發編譯環境
Centos系列可以通過YUM安裝開發軟件包組來搭建開發編譯環境
yum groupinstall "Development Tools"
DEBIAN系列可以通過APT安裝開發軟件包組來搭建開發編譯環境
apt install build-essential
2.下載內核源碼壓縮包
LINUX內核源碼壓縮包的可以通過內核官方網站(https://www.kernel.org) 下載,也可以通過其他的軟件源來下載。
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.2.tar.xz
(從內核官方網站上,下載版本為4.12.2的內核源碼壓縮包)
3.解壓源碼包
tar -xf linux-4.12.2.tar.xz
(linux-4.12.2.tar.xz為下載下來的內核源碼壓縮包文件名)
4.切換當前工作路徑到解壓過的源碼包目錄
cd linux-4.12.2
(linux-4.12.2為解壓過的源碼包目錄名)
5.配置內核屬性
make menuconfig //基于ncurse庫編制的圖形工具配置界面
make config //基于文本命令行的配置工具,不推薦使用
make xconfig //基于X11圖形配置工具界面
make gconfig //基于gtk+的圖形配置工具界面
注意:使用這些工具是需要解決一些依賴問題的。
例如:使用make menuconfig時需要下載ncurse軟件包,而且也不能使用遠程ssh工具(因為ssh不支持ncurse圖形界面),不然會報錯。
也可以使用當前系統上的內核配置文件進行二次修改定制,自定義啟用或者禁用內核屬性。
cp /boot/.config-4.12.2-amd64 ./config
(復制當前系統上的內核配置文件(在boot分區下一般以config開頭后面跟當前系統內核版本號)并把重命名修改為.config)
6.編譯內核
現在開始編譯內核,中途可能會很多次失敗,不要氣餒,它的報錯信息一般會提示我們應該怎樣解決,一般情況下大多是缺少依賴包,這時候只要安裝缺少的相關依賴包即可(一般是*.devel軟件包),解決這些問題以后就可以接著編譯了,如果還有錯誤重復上面的步驟。
make -j 4
(開始編譯內核,-j后面用來指定線程數,指著就是漫長的等待過程了,一般需要1-3個小時的時間,性能特別好或者特別差的機器除外)
7.編譯和安裝內核模塊
make modules_install
(這個過程是系統在/lib目錄下創建一個以編譯內核版本為目錄名的文件夾,并把編譯后的內核模塊復制過去)
8.安裝內核
make install
(這個過程是系統把編譯過的相關內核文件復制到/boot目錄下,并在grub中追加引導項)
安裝編譯后的內核,不會替換舊的內核,也就是說它會多內核共存于系統中。
如果前面的步驟沒問題的話,之后重啟就能看到在grub引導項中多了一條引導(一般含有編譯的內核版本號),選擇這個引導項啟動就可以使用自己編譯的內核啟動系統。
注意:使用自己編譯的內核,有可能會導致某些軟件無法正常使用,或者出現一些莫名其妙的bug(一般不會出現錯誤),所以什么時候使用就看你自己選擇了,使用需要謹慎。