簡介
Linux內核的體積結構是單內核的,但充分借鑒了微內核設計體系的優點,為內核引入模塊化機制,使得雖然是單內核、但工作在模塊化的方式下、并且這個模塊可以動態裝載或卸載;Linux負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性。如是我們在了解Linux內核的基礎上根據自己的需要、量身定制一個更高效,更穩定的內核,就需要我們手動去編譯和配置內核里的各項相關的參數和信息。
一 編譯內核之前的準備
前提:
1.獲取當前內核版本信息,我這里的內核版本是2.6.32-573.el6.x86_64
2.獲取內核源代碼,建議直接去官方網站(www.kernel.org)下載. 我這里準備的是linux-3.10.96.tar.xz的版本,盡量不要直接編譯最新版本的內核,可能會造成不兼容等問題。
3.準備好開發環境,包組(CentOS 6): Server Platform Development 和 Development Tools
yum groupinstall -y Server Platform Development Development Tools
4.配置內核之前可以查看當前系統的設備信息,了解系統詳細配置
查看CPU信息:
cat /proc/cpuinfo
x86info #此工具需手動安裝,yum -y install x86info
lscpu
查看PCI信息:
lspci #可用選項-v查看詳細信息
查看USB信息:
lsusb #可用選項-v查看詳細信息
查看塊設備信息:
lsblk
5.建議使用現有的模板編譯安裝,我這里的現有的模板在 /boot/config-2.6.32-573.el6.x86_64 (備注:這個模板文件適用在2.6.32 版本的,在3.0 內核以 上版本有可能出現不兼容的情況)
二 編譯內核
1.把下載的內核源碼包解壓,一般把源碼解壓到/usr/src目錄下,解壓完成后會在該目錄下生成一個與源碼包版本號一致的目錄,為了方便起見,我們可將它做一個鏈接,鏈接為linux目錄。
tar xf linux-3.10.96.tar.xz -C /usr/src/
cd /usr/src/
ln -sv linux-3.10.96 linux
2.把內核模板文件復制放進/usr/src/linux
cp /boot/config-2.6.32-573.el6.x86_64 .config
3.配置內核,這步配置內核的方法有多種,每一個make就是一種方法,我們只在選一種就可以了.
支持“更新”模式進行配置:
(a) make config:基于命令行以遍歷的方式去配置內核中可配置的每個選項;
(b) make menuconfig:基于curses的文本窗口界面,這個命令需要打開的窗口大于80字符的寬度,打開后就可以在里面選擇要編譯的項了,用此命令需安裝gcc和ncurses-devel
(c) make gconfig:基于GTK開發環境的窗口界面;
(d) make xconfig:基于Qt開發環境的窗口界面;
支持“全新配置”模式進行配置:
(a) make defconfig:基于內核為目標平臺提供的“默認”配置進行配置;
(b) make allnoconfig: 所有選項均回答為"no";
內核功能選項:
[*] #編譯進內核本體
[M] #編譯成內核模塊
[ ] #不選擇使用
使用make menuconfig開啟菜單選項,手動選擇內核功能
make menuconfig #打開了剛才的.config 的模板配置文件
配置完成后,配置信息會存儲于名為.config的隱藏文件
4.開始編譯內核安裝
注意:編譯時如果是遠程連接,一旦斷開連接,編譯就會出問題。所以我們使用一個叫screen這個命令來操作,沒安裝自己Yum安裝上就是了,可以在一個窗口上啟 動n個虛擬的桌面,即使退出了也會保留之前的內容,切換進screen就可以看到窗口標題欄上的screen標志了:
screen #開啟窗口
Ctrl+a d #隱藏窗口
screen -ls #查看運行的窗口
screen -r SCREEN_ID #返回窗口
開始編譯
make
安裝模塊
make modules_install
這步完了之后你可以查看一下/lib/modules/目錄下就會生成一個以同版本號命名的一個文件模塊了
安裝內核
安裝完成后會在/boot目錄下生成幾個新內核的文件
查看grub.conf配置文件,會發現新內核的信息已經寫入了
5.重啟啟動系統,以新內核啟動系統
查看內核版本
補充:
如何在已經執行過編譯操作的內核源碼樹做重新編譯:
事先清理操作:
1. make clean:清理大多數編譯生成的文件,但會保留config文件等;
2. make mrproper: 清理所有編譯生成的文件、config及某些備份文件;
3. make distclean:完全清理
如何加速編譯
make [-j #] #為cup核心數
如何只編譯內核中的一部分功能:
(a) 只編譯某子目錄中的相關代碼:
# cd /usr/src/linux
# make dir/
(b) 只編譯一個特定的模塊:
# cd /usr/src/linux
# make dir/file.ko
三 總結編譯安裝步驟
1.獲取內核源碼,解壓至/usr/src ,做個軟鏈接
tar xf linux-3.10.96.tar.xz -C /usr/src/
cd /usr/src/
ln -sv linux-3.10.96 linux
cp /boot/config-2.6.32-573.el6.x86_64 .config
2.配置內核特性
make menuconfig
3.編譯內核
make
4.安裝內核模塊
make modules_install
5.安裝內核
make install
6.查看grub.conf配置文件,確認新編譯的內核版本信息,重啟啟動測試
cat /boot/grub/grub.conf
reboot
原創文章,作者:liangkai,如若轉載,請注明出處:http://www.www58058.com/11697