Linux-Centos7編譯內核

編譯內核

    前提:

        (1)準備好開發環境

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

        (3) 獲取目標主機系統功能的相關信息

                       例如:需要啟用相應的文件系統

        (4) 獲取內核源代碼包

                  www.kernel.org

開發環境準備

           包組(Centos 7):Development Tools

                       #yum grouplist  查看包組信息  

           目標主機硬件設備相關信息:

                   CPU:  #cat /proc/cpuinfo

                             #lscpu

                   PCI設備:

                           lspci     (-v|-vv)

                           lsusb    (-v|-vv)

                           lsblk  塊設備

  

這是在虛擬機上做的實驗,可以把cpu設置成4核的,內存設置成2G,這樣可以快速的編譯:

   步驟如下:

             1、下載源碼文件:linux-4.12.tar ;并解壓縮到/root下

                      #tar xvf linux-4.12.tar

             2、安裝開發包組

                     #yum groupinstall  “Development Tools”

              3、準備文本配置文件,為了省事,直接參考當前的內核配置文件作為要編譯的內核模塊:

                    #cd /boot

                    #cp /boot/config-3.10.0-514.e17.x86_64    /root/linux-4.12/.config

              4、配置內核選項,通過菜單的方式,定義內核的選項:

                    cd /root/linux-4.12

                    運行 #make menucofig命令時,發現報錯,缺ncurses-devel包

                    #yum install  ncurses-devel   安裝包

                    繼續運行#make menuconfig,會打開一個Kernel Configuration 配置窗口:如下圖

           Linux-Centos7編譯內核

                  

                        上圖中”[ ]“  里*表示打到核心里,M:是以模塊方式打到核心里;空白就表示不設置。

                         上圖中選中General setup  ,回車展開如下圖:

           Linux-Centos7編譯內核

                在下圖中輸入內核的版本,以及編譯者信息,可以自己隨便設定:

           Linux-Centos7編譯內核

              設置完內核選項后,按TAB建切換<Save> 保存然后推出。

               設置好的內核選項,就被保存到了,/root/linux4.12/.config 文件里,可以查看已經設置的內容

       5、開始編譯,操作如下圖:

                    Linux-Centos7編譯內核

              

                通過lscpu 命令看到有4個CPU,內核編譯支持多線程編譯,執行命令:

                        # make  -j  4  &&  for  i  in  {1..10} ;do  echo  -e “-a”;sleep 1 ;done

                  由于編譯時間過長,這里編寫一個下循環,編譯結束時發聲,提醒便宜結束。     

                 編譯過程發現報錯,如下圖:

               Linux-Centos7編譯內核

                      上圖中提示缺少openssl工具;缺什么就安裝什么:yum -y install openssl-devel

                        然后繼續運行:# make  -j  4  &&  for  i  in  {1..10} ;do  echo  -e “-a”;sleep 1 ;done

                       編譯過程時間比較長,所以不要急。可以再打開一個終端窗口,cd /root/linux-4.12  下;

                         wach -n 5  du -sh .   可以每隔5秒統計一下大小,總計大小差不多9個多G.請耐心等待。

     6、 當聽到發聲提醒時,說明第5 步已經完成了。然后執行如下操作:

               make modules_install  安裝模塊。把/root/linux-4.12目錄下的大量的內核模塊包,復制生成到/lib/modules目下;

             會生成一個文件夾如下圖:

                  Linux-Centos7編譯內核

     7、  #make install

            安裝內核相關文件 :安裝bzImage為/boot/vmlinuz-VERSION-RELEASE 生成initramfs文件, 編輯grub2的配置文件

            Linux-Centos7編譯內核

      8、重啟就可以選擇linux-4.12的內核啟動加載了。

      

在編譯完成后,那么怎么在已經執行過編譯操作的內核源碼樹做重新編譯呢?如下描述:

                               1、#make clean  :清理大多數編譯生成的文件,但會保留condig文件等

                               2、#make mrproper :清理所有編譯生成的文件、config及某些備份文件

                               3、#make distclean : mrproper、patches以及編輯器備份文件

  

如果編譯有錯誤,或者還想用舊的內核啟動,那么怎么刪除新的內核呢?

  只要把上述編譯的每一步驟生成的文件目錄刪除就可以了;如下操作:

              1、rm -rf /lib/modules/4.12.0.1.0-wangkernel/

              2、rm -rf /boot/*4.12*  把帶有4.12的文件都刪了。如下圖:

                Linux-Centos7編譯內核                

            3、刪除/boot/grub2/grub.conf文件下生成的配置文件刪除了:如下圖選中的部分都刪除了;

          Linux-Centos7編譯內核

                

                               

原創文章,作者:shenjialong,如若轉載,請注明出處:http://www.www58058.com/80116

(1)
shenjialongshenjialong
上一篇 2017-07-16 22:45
下一篇 2017-07-16 23:01

相關推薦

  • 在馬哥學習linux第一天的感受

         來馬哥教育好幾天了,昨天算是正式開始,在昨天早上,舉行了開班典禮,各位老師助教為我們介紹了在馬哥教育進行培訓的相關注意事項,下午進行了兩場測試,首先有一個摸底測試,不得不說我真的是太菜了,除了一些比較簡單的題目我還有些把握,相當一部分我都是似曾相識,但是也不是很確定,還有很大一部分我根本聽都沒聽說過,看到別人都寫的滿滿…

    Linux干貨 2017-07-11
  • Linux的用戶,組及文件權限管理

    Linux用戶與組的創建,刪除,屬性修改,文件權限管理

    Linux干貨 2018-02-24
  • Javascript 裝載和執行

    一兩個月前在淘寶內網里看到一個優化Javascript代碼的競賽,發現有不少的人對Javascript的執行和裝載的基礎并不懂,所以,從那天起我就想寫一篇文章,但一直耽擱了。自上篇《瀏覽器渲染原理簡介》,正好也可以承前啟后。 首先,我想說一下Javascript的裝載和執行。通常來說,瀏覽器對于Javascript的運行有兩大特性:1)載入后馬上執行,2)執…

    Linux干貨 2016-07-10
  • 批量創建用戶(8月1日作業)

    1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注釋信息為"Gentoo Distribution" 2、創建下面的用戶、組和組成員關系 名字為admins的組;  用戶natasha,使用admins作為附屬組;  用戶harry,也使用admins作為附屬組 &nbs…

    Linux干貨 2016-08-04
  • 三劍客之一sed命令

    sed sed ‘2p’ /etc/passwd  打印paswwd的第二行 這樣執行結果看能看出第二行顯示兩次 sed -n ‘2p’ /etc/passwd -n 執行后 會取出當前行顯示. n是關閉打印  例如[root@cent7 ~]#ifconfig ens33|sed -n &…

    Linux干貨 2017-08-13
  • 第十八周博客作業

    1、為LNMP架構添加memcached支持,并完成對緩存效果的測試報告; 操作系統: CentOS 7.210.0.0.51 nginx+php+mysql10.0.0.52 memcached 一. 環境準備: 搭建LNMP編譯安裝環境 1. 配置163的yum源和阿里云的epel源 [root@localhost ~]# mv /etc/yum.rep…

    2017-07-12
欧美性久久久久