linux源碼升級編譯內核


內核源碼更新內核(以linux內核4.11.7為例子)

1. 內核更新前的工作准備

  a. 系統:ubuntu16.04的Desktop版本,內核為linux-4.8.0;

  b. 虛擬機VMware Workstation Pro 12,並安裝上述的ubuntu版本系統;

  c. 配置好相應的ubuntu16.04的基本操作,包括安裝vim,nfs等必要包;

  d. 在http://www.kernel.org上下載最新的內核源碼包,本文使用的為當時最新的內核源碼包linux-4.11.7.tar.xz。

 

2. 解壓內核源碼包

  a. 在ubuntu16.04中的/usr/src中建立目錄linux-kernel-4.11:

    sudo mkdir /usr/src/linux-kernel-4.11

  b. 解壓內核源碼

    sudo xz –d linux-4.11.7.tar.xz,得到 linux-4.11.7.tar的tar包;

    sudo tar –xvf linux-4.11.7.tar,得到linux-4.11.7解壓源碼包。

 

3. 獲取內核源碼包的相關說明和配置編譯內核的最小要求的文檔

  a. 進入linux-4.11.7目錄中,打開README文檔說明,查看到相關的文檔說明信息

   在Documentation/admin-guide/README.rst中,然后打開它

  b. 在README.rst文檔中,我們看到了對內核編譯的兩種方式,其中一種就是使用打

   補丁的方式,另外一種就是現在我們在做的,使用源碼內核包來進行內核升級(

     查看到144行,有教導我們如何編譯內核的方式)

   

  c. 按照上述的文檔的方法,我們在自己的家目錄中建立相應的文件夾來進行編譯內核

   本文使用的是host用戶名,建立目錄為    

    sudo mkdir –p /home/host/build/kernel  

     (這個目錄是隨自己建立的,但是不能建立在ubuntu和windowns共享的文件目錄下,因為有些鏈接文件是共享目錄無法建立的)

 

4. 獲取編譯內核的要求說明文檔

  a. 進入Documentation目錄找到Changes這個文件,就是我們編譯內核的環境要求;

  b. 打開Documentation/Changes這個文件,獲取重要信息;

    

  c. 上述的信息中,第一列代表需要安裝的庫包,第二列表示第一列庫包的最小版本信息,第三列表示查詢當前系統這個包的命令,

   沒有的添加之,版本不夠的就升級;

  d. 可以在查詢之前升級當前系統的信息:

    sudo apt-get update   升級當前新安裝的包信息;

    sudo apt-get upgrade  升級系統附帶的最新包

 

5. 安裝編譯之前需要安裝另外一些庫文件和lib:

  a.  sudo apt-get install automake autoconf libtool  進行make和庫連接的關鍵

  b.  sudo apt-get install libssl-dev                            防止出現openssl/ioensslv.h找不到

  c.  sudo apt-get install libncureses5-dev                防止出現curses.h沒有找到

  d.  sudo apt-get install build-essential                    防止出現系統建立build時候出錯

 

6. 進行編譯:

  a. 按照Documentation/admin-guide/README.rst的所說,第一步先去掉linux-kernel-4.11源碼包中的所有.o文件(在文檔的112行);

    sudo make mrproper

  b. 轉到141行的內容,按照相應的步驟進行編譯;

    i. 配置內核,生成.config文件:

      sudo make O=/home/host/build/kernel menuconfig

      在里面我們不需要修改任何東西,然后點擊Save,然后確定保存的名字為.config不變,

           這樣就會在我們的/home/host/build/kernel/中出現了.config這個配置文件;

        

    ii. 編譯內核(這里一次性編譯bzImage和modules):

      sudo make O=/home/host/build/kernel –j4

      其中,-j4表示以4線程的方式進行編譯內核,這樣會比較快,因此筆者的電腦vmwere配置成2核的,

      所以使用4線程的方式編譯,節省編譯的時間;

    iii: 安裝內核和模塊到現有的內核中:

       sudo make O=/home/host/build/kernel modules_install install      

          其中 modules_install為安裝模塊,install為安裝內核

    iv. 到此,如果沒有出現任何問題的話,內核的編譯就已經完成了。

 

7. 替換當前系統

  a. 找到4.11.07在/lib的位置,並進行mkinitramfs操作:

    sudo find /lib -iname "4.11.7",得到路徑為:/lib/modules/4.11.7,那么執行

    mkinitramfs /lib/modules/4.11.7 /boot/initrd.img-4.5.0  

    (注意這時候還是在源碼目錄中的)

  b. 修改啟動的grub

    安裝grub:       sudo apt-get install grub2

    更改啟動:        update-grub2

    重啟系統:           reboot

    查詢內核版本: uname -r

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM