系統安裝----內核編譯

編譯內核

爲什麼需要編譯內核?

     linux發行商爲了使其發行版在高低硬件平臺“通用”,以較低平臺進行了編譯。爲了發揮硬件平臺的新特性,我們需要把新特性加入到內核中。



怎樣進行編譯呢?


前提:

(1) 準備好開發環境;

(2) 獲取目標主機上硬件設備的相關信息;

(3) 獲取到目標主機系統功能的相關信息,例如要啓用的文件系統; 

(4) 獲取內核源代碼包:www.kernel.org

準備開發環境:

CentOS 6.7:

包組:Development Tools  、 Server Platform Development 

CentOS 7:

包組:Development Tools  、Server Platform Development 

包:ncurses-devel  基於文本的內核配置窗口包

    爲了實現交叉編譯需要獲取目標主機上硬件設備的相關信息:

CPU:

~]# cat  /proc/info

~]# lscpu

~]# x86info -a

PCI設備:

~]# lspci

-v  詳細

-vv  更詳細

~]# lsusb

-v 詳細

-vv 更詳細

~]# lsblk 塊設備

瞭解全部硬件設備信息:以後udev定位某設備的時候可參考

~]# hal-device

  內核編譯過程:

步驟:

~]# tar  xf  linux-3.10.67.tar.xz  -C  /usr/src

~]# cd  /usr/src

~]# ln  -s  linux-3.10.67  linux

~]# cd  linux

~]# make menuconfig       配置內核選項

                          注:menuconfig 是基於文本的內核配置窗口包ncurses-devel 

~]# make  [-j #] 編譯內核,可使用-j指定編譯線程數量

~]# make modules_install 安裝內核模塊

~]# make install 安裝內核 

             可以試試新內核了,在grub裏指向新內核,重啓系統,選擇使用新內核。





內核編譯的拓展說明:


(1)  配置內核選項:支持“更新”模式進行配置:在已有的.config文件的基礎之上進行“修改”配置;

(a) make config:基於命令行以遍歷的方式去配置內核中可配置的每個選項;

(b) make  menuconfig:基於cureses的文本配置窗口;

(c) make  gconfig:基於GTK開發環境的窗口界面。注包組“桌面平臺開發”

(d) make  xonfig:基於QT開發環境的窗口界面;注:需要安裝KDE開放組件



支持“全新配置”模式進行配置:

(a) make  defconfig:基於內核爲目標平臺提供的“默認”配置爲模板進行配置;

(b) make   allnoconfig:所有選項均爲“no”;

(2) 部分編譯

 (b) 編譯內核中的一部分代碼:

     (i) 只編譯某子目錄中的相關代碼:

# cd  /usr/src/linux

# make  path/to/dir/

      (ii)只編譯一個特定的模塊

# cd  /usr/src/linux

# make  path/to/dir/file.ko


(c) 如何交叉編譯:目標平臺與當前編譯操作所在的平臺不同;

  # make  ARCH=arch_name

  要獲取特定目標平臺的使用幫助# make  ARCH=arch_name help

當前平臺的幫助 # make   help


(3) 如何在執行過編譯操作的內核源碼樹上做重新編譯:


事先清理操作:

# make clean:清理編譯生成的絕大多數文件,但會保留config,及編譯外部模塊所需要的文件;

# make mrproper:清理編譯生成的所有文件,包括配置生成的config文件及某些備份文件;

# make distclean:相當於mrproper,額外清理各種patches以及編輯器備份文件;




爲什麼用到screen?


screen是爲了解決當遠程編譯內核時候,因爲時間過長遠程連接斷開導致編譯失敗。它可以打開一個新的界面保存那一刻的狀態。

screen命令用法:

打開screen: ~]# screen

拆除screen: Ctrl+a, d

列出screen: ~]# screen  -ls

連接至screen: ~]# screen  -r   SCREEN_ID

關閉screen:  ~]# exit


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章