Kernel編譯安裝

寫在前面:

    博客書寫牢記5W1H法則:What,Why,When,Where,Who,How。


本篇主要內容:

● kernel編譯安裝



kernel編譯安裝


回顧:

   源碼包編譯安裝步驟:

      (1)編譯環境:開發軟件包組、頭文件、庫文件

      (2)./configure

      (3)make

      (4)make install


kernel編譯安裝:

   (1)開發環境

      包組:

         Development Tools

         Server Platform Development

      其他:

         make menuconfig依賴包:ncurses-devel

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

      CPU:

         a) cat /proc/info

         b) lscpu

         c) x86info -a

      PCI設備:

         a) lspci

            -v

            -vv

         b) lsusb

            -v

            -vv

         c) lsblk

      瞭解全部硬件設備信息:

         hal-device

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


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

   (5)編譯過程

      a) tar -xJf linux-3.10.67.tar.xz  -C  /usr/src

      b) cd /usr/src

      c) ln -sv linux-3.10.67 linux

         編譯過程需要有linux目錄,我們這裏建立軟鏈接

      d) cd linux

      e) make menuconfig

         配置內核選項,會彈出圖形化界面,對模塊進行個性化配置。

         此步驟會在目錄中生成.config文件,每一個安裝完成的系統都會有這樣的.config文件,默認爲/boot/config-`uname -r`,可以拷貝過來使用

         選項含義:

            [ ]不編譯此模塊

            [*]將此模塊編譯進內核

            [M]將此模塊編譯爲動態模塊,放入/lib/modules目錄

         備註:此步驟可以有多種方式,查看後續過程詳細說明。

      f) make [-j #]

         -j # 可以指定以多線程方式執行,這裏的數字不應該超過cpu核心數

      g) make modules_install

         安裝內核模塊

      h) make install

         安裝內核

      i) grub2-set-default MENU_ENTRY

         對grub2引導的系統,設置默認啓動內核。

         對grub引導的系統,修改/boot/grub/grub.conf的default項即可。

      j) reboot

      注意:由於編譯過程需要很長時間(雙核大概要1小時),通過ssh遠程連接 很可能由於某些原因導致ssh掉線,進而導致整個編譯過程錯誤。所以建議使用screen命令。

         screen

            screen會建立一個獨立的bash窗口,供用戶運行命令,即便用戶遠程登錄斷開,也不會影響到screen內運行的命令。所有的輸出都會打印到screen內,用戶可以隨時查看輸出信息。

            打開screen:screen

            拆除screen:Ctrl+a,d

            列出screen:screen -ls

            連接至screen:screen -r SCREEN_ID

            關閉此screen:exit

   編譯過程詳細說明:

      (1)配置內核選項

         支持“更新”模式進行配置,在已有的.config文件的基礎上進行“修改”配置:

            (a) make config

               基於命令行,以遍歷的方式去配置內核中可配置的每個選項;

            (b) make menuconfig

               基於cureses文本配置窗口,圖形選項方式

            (c) make gconfig

               基於GTK開發環境的窗口界面,包組“桌面平臺開發”

            (d) make xconfig

               基於QT開發環境的窗口界面。

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

            (a) make defconfig

               基於內核爲目標平臺提供的“默認”配置爲模板,進行配置

            (b)make allnoconfig

               將所有選項均設置爲“no”

      (2)編譯

         (a)多線程編譯

            make [-j #]

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

            (a)按目錄劃分的部分代碼

               cd /usr/src/linux

               make path/to/dir/

            (b)只編譯特定的模塊

               cd /usr/src/linux

               make path/to/dir/file.ko

                  這裏的file.ko並不一定僅匹配file.ko,如file.ko不存在,也會匹配爲file.c

         (c)交叉編譯

            目標平臺與當前編譯平臺不同

            make ARCH=arch_name

            獲取幫助:

               make ARCH=arch_name help

      (3)編譯清理操作

         在事先編譯過的目錄再次編譯前,需要先進行清理操作 

         make clean

            清理大多數文件,但會保留配置文件.config以及編譯外部模塊所需的文件

         make mrproper

            清理編譯生成的所有文件,包括匹配文件及某些備份文件

         make distclean

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

實例:

[root@www ~]# cd /tmp
[root@www tmp]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.1.20.tar.xz
[root@www tmp]# screen
[root@www tmp]# tar -xJf linux-4.1.20.tar.xz -C /usr/src/
[root@www src]# ln -sv linux-4.1.20 linux
‘linux’ -> ‘linux-4.1.20’
[root@www src]# cd linux
[root@www linux]# make menuconfig
  #界面如下圖
[root@www linux]# make -j 2
[root@www linux]# make modules_install
[root@www linux]# make install
  #查看grub2配置文件,發現多了一個menuentry條目
[root@www linux]# cat /boot/grub2/grub.cfg
...省略輸出...
menuentry 'CentOS Linux (4.1.20) 7 (Core)'
...省略輸出...
[root@www linux]# grub2-set-default 'CentOS Linux (4.1.20) 7 (Core)'
[root@www linux]# reboot


wKioL1b5SKSSql5lAAB2nrzdQTc131.png

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