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

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