本文为原创,转载请注明:http://www.cnblogs.com/tolimit/linux
有两种方式,一种方式是直接从官网:https://www.kernel.org/直接下载,另外一种方式是经过git进行下载。git
首先,在官网内核版本分为三种:工具
对于内核版本后面有个rc的,表示这个版本开始不会往里面添加新的功能和内容,只会在其基础上解决bug(有些驱动除外)。ui
若是你搞不懂这几个版本区别,就下载一个stable版本准没错。es5
如今咱们着重说说如何经过git进行下载内核源码:spa
没有安装git的先安装git,命令以下线程
sudo apt-get install git
以后新建一个目录用于存放获取的linux内核源码,进入到该目录下,执行以下命令来获取最新的linux内核版本code
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
这样就能够直接把内核源码下载到所在目录下,很方便。blog
注:get
若是须要下载的不是当前最新版本的内核,也能够经过git进行下载其余版本的内核源码,不过在下载其余版本的内核源码的前提是已经经过以上git命令下载过内核源码。
首先,当经过以上git命令下载好内核源码后,应该会有个linux-stable目录,先进入此目录中,而后执行以下命令查看其余内核源码版本列表
git branch -a
而后经过如下命令切换到其余内核源码版本的分支
git checkout 版本名称(在git branch中的列表中的名称)
这样就能够切换到其余版本的linux内核源码了。切换后就直接是目标版本的源码了,也就是说,当执行上面的命令时,git会把其余版本中内容不一样的文件替换到本地上,就不用再从新下载一次内核源码了。
下载完成后,经过以下命令能够将当前系统使用的内核配置文件复制到咱们下载的最新内核源码目录中,咱们要使用这个配置文件进行编译内核
cp /boot/config-x.xx.xxxx-generic 下载的源码目录/.config
若是须要修改配置,可经过
make menuconfig
进行修改配置,不过对于menuconfig,好像还会须要其余的库,我印象是ncurses库,若是须要则经过apt-get libncurses5-dev安装这个库便可。
注:
若是不想使用当前系统使用的配置文件,内核中也提供了不一样平台默认的配置文件,这些配置文件放在:
内核源码目录/arch/目标平台类型/configs/
若是你编译的是arm版本的内核,那目标平台类型就是arm,若是编译的是x86版本的内核,目标平台类型就是x86。在这个目录里,那些默认的配置文件格式通常为XXXXX_defconfig,找到对应的默认配置后,使用命令将其放到内核源码目录下并更名为.config
cp XXXXX_defconfig 内核源码目录/.config
内核源码目录下的.config是内核编译的基础,其注明了哪些模块须要编译哪些模块不须要编译,又有哪些模块须要编译成模块(以模块进行加载,并不加入到内核镜像中),编译时就是按照里面的列表进行编译的。
先安装必要的工具:
sudo apt-get install build-essential
在内核源码目录中依次执行如下命令:
make -jx(x是编译时使用的线程数量,如-j2或-j3等。使用线程能加快编译速度) make modules_install (把安装modules到/lib/modules/目录中) make bzImage (将内核编译成bzImage类型的内核) make install (安装内核)
整个过程会比较久,我大概编译了2,3个小时(虚拟机只配了一个CPU。。。),在编译过程当中有可能使用旧的配置文件会致使编译失败,这时可使用内核源码中默认的配置文件试试。
make install帮咱们作了引导所须要作的工做,基本上make install后重启就直接进入到最新的内核中了,固然,这部分工做咱们也能够手动去作,接下来咱们说说如何去作引导这部分所须要的工做。
第一步,咱们要将编译完成的bzImage复制到/boot/中,并改个名字,好比个人内核版本是4.2.0-rc1,我执行的命令就是
cp 内核源码目录/arch/x86/boot/bzImage /boot/vmlinuz-4.2.0-rc1
注意编译好的bzImage保存的位置是在内核源码目录/arch/目标平台类型/boot/中,我这里的目标平台类型是x86。
第二步,将内核源码目录下的System.map文件复制到/boot/中,一样须要改个名字:
cp 内核源码目录/System.map /boot/System.map-4.2.0-rc1
第三步,生成新版本的initrd.img文件
cd /lib/modules/4.2.0-rc1/ update-initramfs -c -k 4.2.0-rc1
第四步,让grub引导自动查找新内核
update-grub
最后重启一下,选择本身的新内核进入就能够了,若是但愿系统自动进入最新编译的内核,则须要修改grub的配置文件,其配置文件是/boot/grub/grub.cfg,修改此文件中的set default="X"(X是最新内核对应在grub中的编号)。