ubuntu下編譯linux內核

儀器設備:虛擬機Vmware12 + Ubuntu 16.04(內核linux4.8.0)

虛擬機與ubuntu的安裝見我的上兩篇博客,本文步驟是本人親測編譯成功的,所以有一定的參考價值

linux內核編譯完整步驟如下:

1. 查詢自己系統的內核版本號:  cat /proc/version

    爲什麼要查詢自己的內核版本號?因爲最好你要編譯的內核與你現在的系統內核版本屬於同一系列的,比如我的操作系統內核版本爲4.8.0-49,而我要編譯的內核版本號爲4.8.0。 如果不一樣的話會出現各種讓人頭疼的問題(我前期裝的4.4版本的,一直報錯。。),所以一致的話最起碼環境配置都會一樣的,不存在兼容問題

2. 查詢ubuntu倉裏有哪些版本的內核: sudo apt-get search linux-source

    會出現好多內核版本,選擇合適的版本進行下載

3. 下載linux內核: sudo apt-get install linux-source-X.X.X(對應的版本 比如我的linux-source-4.8.0)

     強烈建議通過此方式下載linux源,我試過先從瀏覽器下載好內核壓縮包,再解壓安裝,裝了三次都出現了問題,所以避免麻煩還是從倉庫裏下載吧

4.  下載後會在/usr/src裏出現linux-source-4.8.0 與linux-source-4.8.0.tar.bz2兩個文件。將壓縮文件linux-source-4.8.0.tar.bz2解壓

      sudo tar -xjvf linux-source-4.8.0.tar.bz2

      默認會裝在linux-source-4.8.0文件夾裏

5.   進入linux-source-4.8.0文件夾:cd /usr/src/linux-source-4.8.0

6.   配置.config文件

      ① 如果不是第一次編譯內核,一定要執行 sudo make mrproper,清理以前留下的臨時文件

      ② 如果是編譯內核的新手,對config的具體配置感到無從下手,建議就按照原操作系統進行配置,將原先配置拷貝過來: sudo   cp    /boot/config-4.8.0-49-generic   .config

     (config-4.8.0-49-generic爲操作系統的配置, 這條語句要執行無誤,確保已經進入了linux-source-4.8.0目錄下,這樣.config才能複製到正確的位置)

          接着執行 sudo make oldconfig (確認執行原有配置)

      ③ 如果自己想定製系統,那就執行: sudo make menuconfig(裏面的配置詳解見網址:http://blog.csdn.net/xuyuefei1988/article/details/8635539。這裏注意如果是在

          虛擬機下編譯的,要把SCSI設備編譯進內核,不在虛擬機下編譯,加不加都可以)。在配置完成後會生成新的.config文件

      配置.config文件的過程中會出現一些錯誤,解決辦法如下:

      ① fatal error: openssl/sha.h: No such file or directory之類的,是因爲缺少libssl-dev包

          解決方法:   sudo apt-get install libssl-dev

      ②curses.h: No such file or directory

          解決辦法: sudo apt-get install libncurses5-dev libncursesw5-dev

7.   編譯內核:  sudo make

       時間較長,耐心等待(新的內核編譯過程已經優化, sudo make 相當於執行了 sudo make bzImage 和 sudo make modules兩步了)

8.   編譯和安裝內核模塊: sudo make modules_install

9.   安裝內核: sudo make install

10. 生成啓動: sudo mkinitramfs  -o  /boot/initrd.img-4.8.0

                            sudo update-initramfs -c -k 4.8.0

11. 再次重啓ubuntu要可以進入引導界面,以便於選擇用哪個內核啓動,所以配置grub使每次開機都可以進入引導界面: sudo gedit /etc/default/grub

      在grub文件中用"#"註釋GRUB_HIDDEN_TIMEOUT=0語句:  #GRUB_HIDDEN_TIMEOUT=0

12. 更新grub: sudo update-grub2

之後重啓ubuntu,自動進入引導界面,選擇自己編譯的內核,啓動。用"uname -r" 查看現在啓動的版本,如果是你編譯的版本,OK,大功告成!

後記:對於自己不想要的內核,如何刪除?

① 先查看有哪些內核版本在你的電腦上: sudo dpkg --get-selections | grep linux

② 刪除指定的版本: sudo apt-get  remove  linux-image-(接內核版本)

                                     sudo apt-get  remove  linux-headers-(接內核版本)

③ 再次查看是否卸載:sudo dpkg --get-selections | grep linux

jdiwjediowjeijfiwe

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章