linux源碼升級編譯內核

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

1. 內核更新前的工做準備ubuntu

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

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

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

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

 

2. 解壓內核源碼包spa

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

    sudo mkdir /usr/src/linux-kernel-4.113d

  b. 解壓內核源碼blog

    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

相關文章
相關標籤/搜索