1.寫在前面
Linux操作系統(tǒng)包括四個部分:
(1)內(nèi)核:內(nèi)核是一個操作系統(tǒng)的核心羡棵。它負責為其他所有的程序以及服務(wù)提供運行環(huán)境,分配各種軟硬件資源晌姚,管理系統(tǒng)的進程沧奴、內(nèi)存痘括、設(shè)備驅(qū)動程序、文件和網(wǎng)絡(luò)系統(tǒng)滔吠,決定著系統(tǒng)的性能和穩(wěn)定性纲菌。在操作系統(tǒng)中,內(nèi)核的作用類似于人的大腦屠凶。
(2)Shell:Shell是系統(tǒng)的用戶界面驰后,提供了用戶與內(nèi)核進行交互操作的一種接口。
(3)文件系統(tǒng):是文件存放在磁盤等存儲設(shè)備上的組織方法矗愧。Linux系統(tǒng)能支持多種目前流行的文件系統(tǒng)灶芝,如EXT2、EXT3唉韭、FAT夜涕、FAT32、VFAT和ISO9660属愤。
(4)應(yīng)用程序:例如:文本編輯器(vi女器、vim、gedit等)住诸、編程語言驾胆、X Window(圖形界面)、辦公套件贱呐、Internet工具和數(shù)據(jù)庫等丧诺。
其中,
Linux的一個重要特點就是其源代碼的公開性奄薇,任何人都能夠在https://www.kernel.org/上得到任何版本的Linux內(nèi)核源碼驳阎。
靈躍桌面云在使用Windows操作系統(tǒng)中時,通常遇到這樣的困擾:系統(tǒng)運行了一段時間之后馁蒂,出現(xiàn)運行速度越來越慢呵晚、系統(tǒng)盤的數(shù)據(jù)越來越多、剩余容量變得越來越少的問題沫屡。但是饵隙,由于Windows系統(tǒng)不開源,我們無法知道出現(xiàn)這種情況的本質(zhì)原因沮脖。而在Linux操作系統(tǒng)中癞季,利用Linux內(nèi)核的開源特性劫瞳,可從內(nèi)核源碼層定位上述問題,從而對Linux系統(tǒng)進行定制绷柒、優(yōu)化,以滿足功能和性能上的需求涮因。
接下來將以linux-3.10.1版本的內(nèi)核為例废睦,靈躍桌面云帶領(lǐng)大家來詳細了解下如何獲取Linux內(nèi)核源碼,如何編譯养泡、安裝一個屬于自己的Linux內(nèi)核嗜湃。
2.編譯安裝環(huán)境
注:在下述描述中,涉及在服務(wù)器Ubuntu 12.04操作系統(tǒng)環(huán)境上的所有操作澜掩,均以root身份登錄并執(zhí)行购披。
3.獲取Linux-3.10.1內(nèi)核
通過wget文件下載工具獲取網(wǎng)址https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2中的Linux-3.10.1源碼,并保存到系統(tǒng)中的/home/work/kernel/目錄下(也可保存到其它目錄下肩榕,但注意下面的所有操作請在此目錄下進行)刚陡,并解壓。
首先安裝wget和編譯內(nèi)核所需依賴包:
apt-get install wget gcc libncurese5-dev
獲取Linux3-1.10源碼的命令行操作如下:
(1)切換到/home/目錄下
cd /home/
(2)創(chuàng)建work目錄并切換到work目錄下
mkdir work && cd work/
(3)創(chuàng)建kernel目錄并切換到kernel目錄下
mkdir kernel && cd kernel/
(4)通過wget獲取linux-3.10.1內(nèi)核源碼包linux-3.10.1.tar.bz2
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2
(5)解壓源碼包linux-3.10.1.tar.bz2
tar –jxvf linux-3.10.1.tar.bz2 –C /home/work/kernel/
(6)解壓后在當前目錄下得到linux-3.10.1文件夾株汉,如下圖所示:
注:如果Ubuntu 12.04操作系統(tǒng)因為某些原因(例如筐乳,未連接外網(wǎng))無法通過wget獲取linux-3.10.1.tar.bz2,可首先在Windows系統(tǒng)中通過https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2下載源碼包乔妈,然后將其拷貝到Ubuntu 12.04系統(tǒng)中的/home/work/kernel/目錄下蝙云。
4.編譯安裝Linux-3.10.1內(nèi)核
首先切換到linux-3.10.1文件夾下:
cd linux-3.10.1
配置內(nèi)核:
(1)保持源碼干凈
make mrproper
注:此操作會將歷史編譯過程中配置的內(nèi)核功能配置文件清除掉,所以只有第一次執(zhí)行內(nèi)核編譯前才進行此操作路召,其它情況若需要清除前一次編譯過程的殘留數(shù)據(jù)勃刨,只需用下面的命令:
make clean
此命令僅刪除編譯過程產(chǎn)生的中間文件和目標文件,而不會刪除歷史配置股淡。
(2)設(shè)置內(nèi)核功能選項
make menuconfig
執(zhí)行上面的命令身隐,可在字符界面中顯示功能配置的圖形界面,如下圖:
根據(jù)上圖中功能提示配置需要的功能揣非,靈悅桌面云在本次實驗中采用的是默認的配置抡医,通過鍵盤上的左右鍵選擇<Save>保存配置,得到新內(nèi)核的配置文件早敬,如下圖:
使用鍵盤上的左右鍵選擇<OK>按鈕忌傻,通過鍵盤上的回車鍵確認保存配置。
(3)編譯內(nèi)核和模塊
清除暫存的緩存:
make clean
編譯內(nèi)核:
make bzImage
或:
make bzImage –j4
注:其中-j4表示同時編譯的任務(wù)數(shù)搞监。如果操作系統(tǒng)中有4個CPU核心水孩,可通過-j4加快編譯的速度。此編譯過程較長琐驴,請耐心等候俘种。
編譯內(nèi)核模塊:
make modules
(4)安裝內(nèi)核模塊和內(nèi)核
make modules_install
make install
至此秤标,linux-3.10.1內(nèi)核已編譯完成,接下來靈躍桌面云將為大家描述如何修改Ubuntu 12.04操作系統(tǒng)的默認啟動項宙刘,使得系統(tǒng)重啟后進入新編譯的linux-3.10.1內(nèi)核苍姜。
5.配置開機啟動項
(1)更新啟動項列表,如下圖:
update-grub2
從上圖中可查看系統(tǒng)中所有的內(nèi)核列表悬包,并可得知新編譯的linux-3.10.1位于列表中第一個位置衙猪。
(2)修改默認啟動菜單的配置文件/etc/default/grub
vim /etc/default/grub
如圖,GTUB_DEFAULT的值決定了系統(tǒng)啟動時從內(nèi)核列表的第幾個內(nèi)核啟動布近。若GTUB_DEFAULT=0垫释,則表示從第一個內(nèi)核啟動。由于新編譯的linux-3.10.1內(nèi)核位于第一個位置撑瞧,因此棵譬,將GTUB_DEFAULT的值修改為0。
保存后预伺,重啟系統(tǒng)订咸,可查看最新的啟動菜單,如下圖:
reboot
系統(tǒng)默認從最新編譯的“Ubuntu, with Linux 3.10.1”內(nèi)核啟動扭屁。
注:如果想從老版本的內(nèi)核啟動算谈,可通過上下鍵選擇“Previous Linux versions”進入老版本的內(nèi)核列表進行選擇某一個老版本的內(nèi)核。
(3)查看最新編譯的內(nèi)核
進入系統(tǒng)之后料滥,通過下面的命令可查看當前系統(tǒng)中的內(nèi)核版本然眼,如下圖:
uname -a
如果能夠看到“Linux Ubuntu 3.10.1”,表示linux-3.10.1的內(nèi)核已經(jīng)編譯葵腹、安裝成功高每。
本文轉(zhuǎn)載于 靈躍云 : 原文鏈接