1. 前言

  所謂Linux kernel就是控制你主機的所有硬體並提供系統所有的功能,在開機的時候,利用開機管理程式啟動kernel來偵測硬體並載入適當的驅動程式,這樣系統才可以順利的運作。


 https://www.itread01.com/articles/1475911242.html

 由上圖可以看到整個 OS分為兩塊,一個是User SpaceKernel Space,當我們在編譯kernel時,可隨意調整內容做瘦身。linux kernel裡,是以C語言及組合語言寫成,其軟體內容以GPL方式釋出,在商業化時,必須要公開原始碼要回饋給linux機構。由於是完全開放的軟體內容,我們常可透過程式了解驅動硬體的行為,若未來要獨自撰寫一個全新的驅動程式,建議可以透過類似的驅動模組加以修改會較簡單。在系統上是以檔案的方式實現,這個檔案包含了驅動模組,而kernel檔案會被放置在/boot/vmlinux-xxx裡,因為是檔案,其實linux os上可以擁有多個kernel檔案,但開機時只能選擇一個。Kernel module,每個模組都代表一個驅動程式,所以若我們的硬體環境若換置了新了裝置,我們可以透過模組的形式,單純對這個module做置換。所以我們可以將需要置換的module獨立出來,不須重新編譯kernel,將module重新編議後再載入到kernel裡。而模組在哪裡,就在/lib/module/$(uname –r)/kernel裡。

2. 編譯原始碼步驟

  • 檢查目前核心的版號

uname –a

  • 為了避免權限問題而造成編譯過程的錯誤,我們都用sudo 來執行指令。
  • 用瀏覽器連上 The Linux Kernel Archives選擇你要下載的版本tarball按右鍵->複製聯結網址。
  • 建立目錄,用來放置下載的原始碼壓縮檔
          Sudo mkdir 路徑
  • 使用wget將原始碼下載回來。
         sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.44.tar.xz
  • 解壓縮資料夾
         tar -xvf linux-4.19.44.tar.xz

    Step2 設定config

     
  • 切換到剛剛解壓縮的目錄。
         cd 目錄
  • 安裝編譯核心時需要用的工具。
         sudo apt-get -y install gcc libncurses5-dev build-essential fakeroot kernel-package bzip2
  • 複製舊的.config到當下目錄,至少確定是可以workkernel設定,而且可以以舊的設定修改自己需要的kernek功能,不用一切重頭來過。
                sudo cp /boot/config-`uname –r` .
    Step3 編譯kernel
  • 在同樣的目錄下修改核心功能與驅動程式設定項目,若無特別的設定,就無須改變
          sudo make menuconfig
          
  • 開始編譯,-j 4 代表使用四核心進行編譯,可以加快速度
         sudo make –j 4 clean
         sudo make –j 4
         sudo make modules –j 4
         sudo make modules_install
         sudo make install
  • 編譯結束後,從開機
         sudo reboot
  • 在使用指令即可看到新的kernel產生
          uname -a
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ^_^ 的頭像
    ^_^

    一切的安排,都是最好的安排

    ^_^ 發表在 痞客邦 留言(0) 人氣()