给ubuntu换内核

摘要:
您还可以通过git下载其他版本的内核源代码,然后执行以下命令查看其他内核源代码版本gitbranch-a的列表,然后通过以下命令切换到其他内核源码版本的分支gitcheckout版本名称(gitbranch中列表中的名称),以便您可以切换到其他版本的Linux内核源代码。使用以下命令将当前系统使用的内核配置文件复制到我们下载的最新内核源目录。

本文为原创,转载请注明:http://www.cnblogs.com/tolimit/

下载内核源码

  有两种方式,一种方式是直接从官网:https://www.kernel.org/直接下载,另一种方式是通过git进行下载。

  首先,在官网内核版本分为三种:

  • mainline:主线版本,最新的
  • stable:稳定版本
  • longterm:长期支持版本

  对于内核版本后面有个rc的,表示这个版本开始不会往里面添加新的功能和内容,只会在其基础上解决bug(有些驱动除外)。

  如果你搞不懂这几个版本区别,就下载一个stable版本准没错。

  现在我们着重说说如何通过git进行下载内核源码:

  没有安装git的先安装git,命令如下

sudo apt-get install git

  之后新建一个目录用于存放获取的linux内核源码,进入到该目录下,执行如下命令来获取最新的linux内核版本

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

   这样就可以直接把内核源码下载到所在目录下,很方便。

注:

  如果需要下载的不是当前最新版本的内核,也可以通过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中的编号)。

免责声明:文章转载自《给ubuntu换内核》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇主动信息收集(一)前端嵌入视频直播和聊天支持.m3u8格式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转载】Python,使用Wheel打包

转载自: http://blog.sina.com.cn/s/blog_1318255b00102wbtz.html   Python的第一个主流打包格式是.egg文件,现在大家庭中又有了一个叫做Wheel(*.whl)的新成员。 wheel“被设计成包含PEP 376兼容安装(一种非常接近于磁盘上的格式)的所有文件”。 在本文中,我们将学习如何创建一个w...

golang学习之生成代码文档

go doc 工具会从 Go 程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文档。 一般用法: go doc package 获取包的文档注释,例如:go doc fmt 会显示使用 godoc 生成的 fmt 包的文档注释。 go doc package/subpackage 获取子包的文档注释,例如:go doc cont...

ubuntu13.04下载android4.0.1源码过程

最初我参考的是老罗的博客http://blog.csdn.net/luoshengyang/article/details/6559955 进行下载安装的,但弄着弄着就发现不太对劲了。这里记录下详细过程: 1,我的前提是已经搭建好了Android开发环境,也即jdk已经安装好了,输入java -version来检查是否成功。搭建android开发环境可以...

python的paramiko模块

    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输。   paramiko常...

git clean用法

git clean用法   想批量删除branch中新加的文件(untracked files),,git reset --hard不行~   首先确认要删除的文件 git clean -fd -n   如果以上命令给出的文件列表是你想删除的, 那么接下来执行   git clean -f -d或者git clean -fd就可以了。   其中-f表示文...

《python解释器源码剖析》第0章--python的架构与编译python

本系列是以陈儒先生的《python源码剖析》为学习素材,所记录的学习内容。不同的是陈儒先生的《python源码剖析》所剖析的是python2.5,本系列对应的是python3.7,所以某些地方会和原著有出入,另外我在介绍的过程中会穿插大量的python代码,不仅仅是介绍如何实现的,还会使用python实际地对我们的结论进行演示。下面就开始吧。不过在开始分析...