首頁 > 軟體

Linux核心編譯安裝過程

2020-06-16 17:26:56

前言
        Linux核心(英語:linux kernel),是一種計算機作業系統核心,已C語言和組合語言寫成,匹配POSIX標準,以GNU通用公共許可證發布。從技術上說Linux只是一個核心。“核心”指的是一個提供硬體抽象層、磁碟及檔案控制、多工等功能的系統軟體。
        核心是作業系統的核心,也是作業系統最基本的部分。Linux核心工作在模組化的方式下並且這些模組可以動態的解除安裝和裝載;所以在很多公司面臨不同的實際應用時都會編譯核心客製化相關的核心模組設定相關的核心引數以達到需求並剔除不需要核心模組。

目錄
    前言 
  一、編譯前準備
    1、準備開發環境 
    2、獲取目標主機硬體裝置相關資訊: 
    3、獲取目標主機系統功能的相關資訊 
    4、獲取核心原始碼 
  二、編譯前準備
    1、安裝開發包組 
    2、下載原始碼檔案及解壓 
    3、準備組態檔 
  三、編譯開始
    1、首先給執行make menuconfig 命令(該命令在原始碼目錄下執行) 
    2、選擇我們需要啟動的核心模組。 
    3、開始進行編譯 
    4、make modules_install:安裝模組 
    5、make install :安裝核心相關檔案 
  ·6、編輯grub組態檔 
  四、補充: 
    1、大概步驟: 
    2、編譯設定選項 
    3、編譯 
    4、編譯核心 
    5、清理刪除 

一、編譯前準備
    1、準備開發環境
 開發包組(CentOS6)
  Server platform development
  Development toos
    2、獲取目標主機硬體裝置相關資訊:
    CPU:
     cat /proc/cpuinfo
     x86info  –a
     lscpu
    PCI裝置:
     lspci  -v  (-vv 詳細)
     lsusb  -v  -vv
     lsblk 塊裝置
       了解全部硬體裝置資訊
        hal-device
    3、獲取目標主機系統功能的相關資訊
    例如:需要啟用相應的檔案系統
     這個實驗裡我們需要將NTFS檔案系統格式啟用。
     在實際的應用中可能需求更為複雜。
    4、獲取核心原始碼
                www.kernel.org
二、編譯前準備
 1、安裝開發包組
1        #yum groupinstall Development toos

 2、下載原始碼檔案及解壓
tar  –xvf  linux4.8.10.tar.xz  (很多人說要解壓在/usr/src其實都一樣這裡實驗環境就沒有講究那麼多至新建了一個kernel目錄。)

 3、準備組態檔
  #cp  /boot/config-2.6.32-573.el6.x86_64  /root/kernel/linux-4.8.10 
    #mv  config-2.6.32-573.el6.x86_64  .config 
    #grep  NTFS  .config 
    # CONFIG_NTFS_FS is not set

  解釋一下上面的兩步:
        從boot目錄拷貝一個config檔案過來主要是為了方便,這個檔案裡儲存都是之前你在安裝系統是核心所安裝的模組,這裡拷貝過來為了主要為了方便演示,具體各位以後在應用中需要什麼的模組那各位就自己去篩選了(雖然這種工作幾乎不會做當然除非有特殊需求的,既然剛剛來看這篇文章,那我相信你的老闆也不放心讓你去這樣做。開個玩笑 哈。。)
        至於 grep NTFS .confg  (這裡只是想讓大家看下NTFS這個核心模組沒有啟動的下面在編譯的時候我們就將NFTS啟用)
三、編譯開始
1、首先給執行make menuconfig 命令(該命令在原始碼目錄下執行)
        第一步先給以後核心加個名稱 。

2、選擇我們需要啟動的核心模組。
  在開啟這個設定介面的第一個介面下依次選擇 File systems -- > DOS/FAT/NT file systems -- > NTFS file systems support (利用空格鍵選中。[ ] N  [M] 表示將模組打在ramdisk中 [*] y  表示將模組打在核心中。本實驗將NTFS模組打在ramdisk中。 )

退出儲存 之後
 grep NTFS .config  (看圖就明白了)

3、開始進行編譯
  因為遠端編譯可能終端如果斷開那那就前功盡棄了 ,所以諸位在編譯前最好使用screen 這樣即使終端斷開也不用擔心編譯中斷了。
  # make  -j  4(cpu 核心數 單一核心就不用寫了) (該命令在原始碼目錄下執行)  編譯過程可能需要一段時間機器效能好的話 幾分鐘效能不好的話半小時以上。編譯過程總可能會報錯最多的報錯就是openssl 各位大可以提前安裝(yum 安裝就好)


4、make modules_install:安裝模組
執行命令 make modules_install 就好了
5、make install :安裝核心相關檔案
執行命令 make install  安裝核心相關檔案,主要目的將所有的編譯之後的內
容拷貝安裝到相應的目錄。
6、編輯grub組態檔

補充:
 1、大概步驟: 

    1、安裝開發包組
    2、下載原始碼檔案
    3、.config:準備文字組態檔
    4、make menuconfig:設定核心選項
    5、make [-j #]
    6、make modules_install:安裝模組
    7、make install :安裝核心相關檔案
        安裝bzImage為/boot/vmlinuz-VERSION-RELEASE (去boot目錄下檢視)
        生成initramfs檔案
      8、編輯grub的組態檔

2、編譯設定選項
    設定核心選項
    支援“更新”模式進行設定: make help
    (a) make config:基於命令列以遍歷的方式去設定核心中可設定的每個選項
    (b) make menuconfig:基於curses的文字視窗介面
    (c) make gconfig:基於GTK (GNOME)環境視窗介面
    (d) make xconfig:基於QT(KDE)環境的視窗介面
  支援“全新設定”模式進行設定
    (a) make defconfig:基於核心為目標平台提供的“預設”設定進行設定
    (b) make allyesconfig: 所有選項均回答為“yes“
    (c) make allnoconfig: 所有選項均回答為"no“

3、編譯
      全編譯:make [-j #]
    編譯核心的一部分功能:
  a) 只編譯某子目錄中的相關程式碼:
    # cd /usr/src/linux
    # make dir/
  (b) 只編譯一個特定的模組:
    # cd /usr/src/linux
    # make dir/file.ko
  例如:只為e1000編譯驅動:
    #make drivers/net/ethernet/intel/e1000/e1000.ko

4、編譯核心
        如何交叉編譯核心:
    編譯的目標平台與當前平台不相同;
      # make ARCH=arch_name
    要獲取特定目標平台的使用幫助
      # make ARCH=arch_name help
      # make ARCH=arm help

5、清理刪除 
  在已經執行過編譯操作的核心原始碼樹做重新編譯:
  需要事先清理操作:
    # make clean:清理大多數編譯生成的檔案,但會保留config檔案等
    # make mrproper: 清理所有編譯生成的檔案、 config及某些備份檔案
    # make distclean: mrproper、 patches以及編輯器備份檔案
  解除安裝核心
    刪除/lib/modules/目錄下不需要的核心庫檔案
    刪除/usr/src/linux/目錄下不需要的核心原始碼
    刪除/boot目錄下啟動的核心和核心映像檔案
    更改grub的組態檔,刪除不需要的核心啟動列表

最後寫的不怎麼樣 ,望諸位見諒 希望朋友們能夠有所收穫。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-12/137794.htm


IT145.com E-mail:sddin#qq.com