謝輝
(閩北職業(yè)技術(shù)學(xué)院 信息與工程系 福建 南平 353000)
基于Linux系統(tǒng)的內(nèi)核編譯與升級(jí)研究
謝輝
(閩北職業(yè)技術(shù)學(xué)院 信息與工程系 福建 南平 353000)
Linux系統(tǒng)是一種多用戶、多任務(wù)操作系統(tǒng),在服務(wù)器領(lǐng)域應(yīng)用十分普遍。它以其良好的可移植性、運(yùn)行的穩(wěn)定性、高度的可靠性越來(lái)越受到重視,Linux系統(tǒng)優(yōu)異的表現(xiàn),來(lái)源于內(nèi)核功能的強(qiáng)大。Linux屬于開(kāi)源軟件,所以內(nèi)核代碼是公開(kāi)的,通過(guò)官網(wǎng)可以下載最新的內(nèi)核安裝文件,為用戶升級(jí)Linux系統(tǒng)提供了保證。用戶可以在不重裝系統(tǒng)的條件下,通過(guò)命令,即可將內(nèi)核升級(jí)到新的版本,保證系統(tǒng)始終擁有新的功能和特性。
Linux內(nèi)核;開(kāi)源;編譯;升級(jí)
Linux是最著名的類(lèi)UNIX開(kāi)源操作系統(tǒng),它誕生于1991年,由芬蘭赫爾辛基大學(xué)的學(xué)生Linus Torvalds開(kāi)發(fā)出最早的版本,并發(fā)布在互聯(lián)網(wǎng)上。Linux誕生之初就加入了GNU計(jì)劃,并遵循GPL許可,由全世界的程序員不斷的開(kāi)發(fā)和改進(jìn),如今,Linux已日臻完善,成為世界上主流的服務(wù)器操作系統(tǒng)之一,它以良好的結(jié)構(gòu)和高度的穩(wěn)定性,得到了廣泛的應(yīng)用。
Linux是一個(gè)真正的多用戶多任務(wù)操作系統(tǒng),并具有良好的兼容性、穩(wěn)定性和強(qiáng)大的可移植性,這些功能都源于它的內(nèi)核。目前非常流行的手機(jī)Android系統(tǒng),就是建立在Linux內(nèi)核之上。Linux內(nèi)核是連接系統(tǒng)軟、硬件的一個(gè)支撐平臺(tái)。
Linux內(nèi)核是系統(tǒng)的核心,管理著整個(gè)計(jì)算機(jī)系統(tǒng)的軟、硬件資源,控制整個(gè)計(jì)算機(jī)的運(yùn)行。Linux內(nèi)核由各功能模塊構(gòu)成,包括:進(jìn)程管理(Process Management)、內(nèi)存管理(Memory Management)、模塊管理(Module Management)、網(wǎng)絡(luò)管理(Network Management)、中斷管理(Interrupt Management)、虛擬文件系統(tǒng)接口(VFS Layer)、文件系統(tǒng)(File System)、設(shè)備驅(qū)動(dòng)程序(Device Driver)、進(jìn)程間通信(Inter-process Communication)、系統(tǒng)啟動(dòng)(System Init)等模塊。Linux內(nèi)核直接影響操作系統(tǒng)的性能,在新版本的內(nèi)核發(fā)布后,及時(shí)升級(jí)系統(tǒng)內(nèi)核,有利于提升系統(tǒng)的整體性能。
Linux的版本有狹義和廣義之分,狹義的版本專(zhuān)指Linux的內(nèi)核版本號(hào);廣義的版本是指以內(nèi)核版本為基礎(chǔ),包含各公司開(kāi)發(fā)的應(yīng)用程序和系統(tǒng)設(shè)定與管理工具的完整操作系統(tǒng)。如著名的Red Hat、Debian、Turbolinux、Ubuntu、紅旗、中標(biāo)麒麟等等。
不同的發(fā)行版,內(nèi)核來(lái)源都是相同的,Linux的內(nèi)核版本號(hào)早期采用帶兩位小數(shù)的數(shù)字表示,0.01是第一個(gè)版本,之后出現(xiàn)0.02一直到1.0版本。從1.0版本開(kāi)始,采用A.B.C三段數(shù)字來(lái)表示,“A”代表主版本號(hào),“B”代表次版本號(hào)(偶數(shù)代表正式版,奇數(shù)代表測(cè)試版),“C”代表末版本號(hào)。從2011年3.0版本之后,雖然采用的仍是A.B.C格式,但是所代表的含義有所變化,“B”沒(méi)有奇偶數(shù)的區(qū)別,而是隨著新版本的發(fā)布而增加,“C”代表一些Bug修復(fù)、安全更新、添加新特性和驅(qū)動(dòng)的次數(shù)。
Linux的內(nèi)核可以通過(guò)www.kernel.org官網(wǎng)下載,截止2015年9月26日,最新的內(nèi)核穩(wěn)定版為4.2.1,最新支持嵌入式系統(tǒng)的LTS版(長(zhǎng)期支持版)為4.1.8。新的內(nèi)核加入一些新的功能和特性,包括“實(shí)時(shí)內(nèi)核補(bǔ)丁”特性,該特性可實(shí)時(shí)修補(bǔ)內(nèi)核,而無(wú)需重啟系統(tǒng),提高了系統(tǒng)穩(wěn)定性和工作效率,同時(shí),改進(jìn)系統(tǒng)圖形支持,改良了CPU風(fēng)扇控制,改進(jìn)儲(chǔ)存系統(tǒng),集成了更多的硬件驅(qū)動(dòng)。
Linux新內(nèi)核的每次發(fā)布,都伴隨著一些關(guān)鍵或重大的改進(jìn)和新特性,因此,及時(shí)升級(jí)系統(tǒng)內(nèi)核也變得十分必要。
4.1 Linux內(nèi)核的升級(jí)
本次內(nèi)核升級(jí)過(guò)程在Red Hat Linux Enterprise 5系統(tǒng)下進(jìn)行。
4.1.1啟動(dòng)系統(tǒng) 啟動(dòng)Red Hat Linux Enterprise 5,進(jìn)入桌面環(huán)境,打開(kāi)終端程序,在命令行輸入:
[root@bogon~]#uname -r
2.6.18-8.el5xen
顯示內(nèi)核版本號(hào)為2.6.18版,為較早期的版本,有必要進(jìn)行內(nèi)核升級(jí)。
4.1.2下載內(nèi)核安裝包文件 進(jìn)入Linux內(nèi)核官網(wǎng)(www.kernel.org),查找出最新的內(nèi)核版本為4.2.1,由于本機(jī)版本較舊,為保證升級(jí)成功率,選擇相近的3.8.7版進(jìn)行升級(jí),成功后,可再次升級(jí)到最新的4.2.1版本。輸入wget命令,下載內(nèi)核安裝包文件:
[root@bogon~]#wget --no-check-certificate http://www.kernel.org
/pub/linux/kernel/v3.x/linux-3.8.7.tar.bz2
……
Saving to: ’linux-3.8.7.tar.bz2’
100%[========================================== ======>] 84,602,813
4.1.3解壓安裝包文件 將下載的文件解壓到/usr/ src/kernels目錄下,如無(wú)此目錄需先創(chuàng)建,并用命令tar解壓:
[root@bogon~]#mkdir /usr/src/kernels
[root@bogon~]#tar -xvf linux-3.8.7.tar.bz2 -C /usr/src/kernels
4.1.4安裝或升級(jí)ncurses動(dòng)態(tài)庫(kù) 要執(zhí)行make menuconfig命令,使用菜單配置內(nèi)核,必須先安裝或升級(jí)ncurses動(dòng)態(tài)庫(kù),ncurses是一個(gè)能提供基于文本終端的圖形互動(dòng)功能動(dòng)態(tài)庫(kù)??梢酝ㄟ^(guò)系統(tǒng)自動(dòng)升級(jí)ncurses庫(kù),前提是系統(tǒng)已經(jīng)安裝了yum程序,也可以下載ncurses的rpm安裝包來(lái)手動(dòng)安裝。
用yum自動(dòng)升級(jí)ncurses:
[root@bogon~]#yum install ncurses-devel
下載ncurses安裝包手動(dòng)安裝:
[r o o t@b o g o n~ ]#r p m -i v h n c u r s e sdevel-6.0-1.20150810.fc24.x86_64
.rpm
安裝成功后,還需要執(zhí)行yum命令更新。
[root@bogon~]#yum update
4.1.5清理舊的內(nèi)核升級(jí)文件 在升級(jí)新的內(nèi)核文件之前,要?jiǎng)h除之前編譯所生成的文件、配置文件、備份文件等,用命令make mrporper實(shí)現(xiàn)。
[root@bogon~]#cd /usr/src/kernels/linux-3.8.7
[root@bogon~]#make mrporper
4.1.6通過(guò)菜單方式配置內(nèi)核 [root@bogon~]#cd /usr/src/kernels/linux-3.8.7
[root@bogon~]#make menuconfig
當(dāng)前面安裝完ncurses動(dòng)態(tài)庫(kù)后,輸入上述命令,窗口會(huì)出現(xiàn)文本交互菜單,在一些基本選項(xiàng)里輸入“Y”確認(rèn),“N”放棄,“M”編譯等選項(xiàng),進(jìn)行編譯前的設(shè)置工作。
4.2 內(nèi)核的編譯
編譯前的準(zhǔn)備工作完成之后,接下來(lái)進(jìn)入內(nèi)核編譯步驟。
4.2.1編 譯 內(nèi) 核 進(jìn) 入/usr/src/kernels/ linux-3.8.7目錄,執(zhí)行make bzImage命令進(jìn)行內(nèi)核編譯。
[root@bogon~]#make bzImage
命令執(zhí)行成功后,會(huì)在/usr/src/linux/arch/i386/ boot目錄下生成一個(gè)新內(nèi)核的映像文件bzImage。
4.2.2編譯內(nèi)核模塊 [root@bogon~]#make modules
4.2.3安裝內(nèi)核模塊 [root@bogon~]#make modules_install
該過(guò)程一般需要花費(fèi)半小時(shí)以上的時(shí)間。
4.2.4安裝內(nèi)核到系統(tǒng) 將編譯好的新內(nèi)核,安裝到Linux系統(tǒng)中。
[root@bogon~]#make install
4.2.5啟動(dòng)選項(xiàng)的設(shè)置 Linux內(nèi)核升級(jí)后,并沒(méi)有將舊內(nèi)核刪除,因此在重啟系統(tǒng)時(shí),在GRUB菜單中會(huì)出現(xiàn)新、舊兩個(gè)內(nèi)核選項(xiàng),通常新內(nèi)核啟動(dòng)項(xiàng)位于第一行,舊內(nèi)核啟動(dòng)項(xiàng)位于第二行,系統(tǒng)默認(rèn)啟動(dòng)項(xiàng)為舊內(nèi)核。此時(shí),就需要通過(guò)修改開(kāi)機(jī)菜單配置文件“/etc/grub. conf”,將默認(rèn)啟動(dòng)選項(xiàng)設(shè)置為新內(nèi)核,系統(tǒng)才會(huì)在啟動(dòng)之后,自動(dòng)啟用新內(nèi)核。用vi命令打開(kāi)配置文件。
[root@bogon~]#vi /etc/grub.conf
找到第一行的“default=0”參數(shù)項(xiàng),將參數(shù)設(shè)為1,表示啟動(dòng)選項(xiàng)默認(rèn)到第二行上,即系統(tǒng)啟動(dòng)時(shí)會(huì)自動(dòng)加載新內(nèi)核。
4.2.6驗(yàn)證新內(nèi)核 重啟系統(tǒng)之后,要看運(yùn)行的是不是新內(nèi)核,可以通過(guò)命令驗(yàn)證。
[root@bogon~]#uname -r
3.8.72-1.el6.i686
表示新內(nèi)核已經(jīng)安裝完成,并開(kāi)始工作。
Windows系統(tǒng)的內(nèi)核與系統(tǒng)是合為一體的,要想升級(jí)操作系統(tǒng),很多情況下需要重裝系統(tǒng),對(duì)服務(wù)器的管理和維護(hù)都不利;而Linux的內(nèi)核與系統(tǒng)應(yīng)用是既獨(dú)立,又緊密相關(guān)的,可以在不需要重裝系統(tǒng)的情況下進(jìn)行內(nèi)核的升級(jí),有利于服務(wù)器的管理和維護(hù)。
首先,Linux內(nèi)核版本相對(duì)于發(fā)行版來(lái)說(shuō)是獨(dú)立的,是由Linux的創(chuàng)始人Linus的團(tuán)隊(duì)負(fù)責(zé)研發(fā),并單獨(dú)發(fā)布;而基于Linux內(nèi)核之上的系統(tǒng)應(yīng)用,是由各公司獨(dú)立開(kāi)發(fā),內(nèi)核的開(kāi)發(fā)與外部系統(tǒng)應(yīng)用并不同步。
其次,內(nèi)核版本與發(fā)行版本又是緊密相關(guān)的,Linux系統(tǒng)的新功能與特性,都依賴于內(nèi)核,只有及時(shí)將系統(tǒng)內(nèi)核升級(jí),才能運(yùn)用這些新功能,而且,可以不需要重裝系統(tǒng)進(jìn)行升級(jí),給服務(wù)器管理帶來(lái)了便利。
Linux系統(tǒng)對(duì)計(jì)算機(jī)硬件配置的要求十分低,部署了Linux系統(tǒng)的服務(wù)器可長(zhǎng)時(shí)間穩(wěn)定的運(yùn)行,而且,在Linux內(nèi)核4.0以后的版本,添加了“實(shí)時(shí)內(nèi)核補(bǔ)丁”的特性,可以在服務(wù)器不重啟的狀態(tài)下,將內(nèi)核更新,使系統(tǒng)達(dá)到最佳運(yùn)行狀態(tài),這也是其它服務(wù)器操作系統(tǒng)目前不具備的。因此,及時(shí)將Linux內(nèi)核進(jìn)行編譯升級(jí),更有利于Linux服務(wù)器的穩(wěn)定和管理效率的提高。
[1]曹江華.Linux常用命令手冊(cè)[M].北京:電子工業(yè)出版社,2015.315-317.
[2]黃照鶴.Linux指令范例速查手冊(cè)[M].北京:清華大學(xué)出版社,2014.432-434.
[3]趙炯.Linux內(nèi)核完全剖析[M].北京:機(jī)械工業(yè)出版社,2006.405-407.
[4](美)索貝爾.Linux命令、編輯器與shell編程(第3版)[M].北京:清華大學(xué)出版社,2013.203-206.
[5]謝蓉.Linux基礎(chǔ)及應(yīng)用[M].北京:中國(guó)鐵道出版社,2005.4-5.
TP3
A
1009-5624(2016)06-0021-03