下载内核源码

  有两种方式,一种方式是直接从官网: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中的编号)。

转载于:https://blog.51cto.com/yukaili/1939736

给ubuntu换内核相关推荐

  1. ubuntu换内核 reboot后,开机进入busybox,root=UUID=(一串数字),tyy命令行无图形界面,问题解决方案(使用grub的设置)

    在busybox界面再次输入reboot,将进入一个紫色的界面,按c进入命令行. 命令行是grub相关的界面,输入ls ,输出(hd0,msdos1),记住这里的hd0和后面的1. 然后输入这些命令: ...

  2. 编译linux内核分区,Ubuntu编译内核及grub的一些笔记

    最近心态不稳定,不怎么想发表文章,但看了看之前写了的笔记,想想还是整理出来吧,其实我写文章,也有一部分原因是为了心里的慰藉--当年游戏打不过别人,关注点便转向其它方面.这里整理的是以前编译内核.引导启 ...

  3. (zz)编译Ubuntu Linux内核

    准备 先确认有基本的编译环境,否则执行: $ sudo apt-get install build-essential 注:此命令将会安装 glibc.glibc++等等相关的库及头文件. 环境说明 ...

  4. Ubuntu编译内核及grub的一些笔记

    最近心态不稳定,不怎么想发表文章,但看了看之前写了的笔记,想想还是整理出来吧,其实我写文章,也有一部分原因是为了心里的慰藉--当年游戏打不过别人,关注点便转向其它方面.这里整理的是以前编译内核.引导启 ...

  5. 删除ubuntu旧内核

    ubuntu的内核经常升级,而老内核并不自动卸载.时间长了,就有一大堆内核垃圾,需要我们手动去清理. 先用uname -a 查看当前内核版本: xzc@xzc-HP-ProBook-4446s:~$ ...

  6. 不小心删除了ubuntu的内核,进不去系统和Biss,解决办法。

    主机上不小心删除了ubuntu的内核,进不去系统和Biss. 这只是一种情况,情况不一样可能问题不一样,不一定能解决掉. 1.首先用UBUNTU系统盘U盘进入U盘系统. 2.在gparted里面查找主 ...

  7. 升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国

    转载自:升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国 升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国 译者/Ping Yang  Linux  2 ...

  8. ubuntu更新内核失败补救措施

    ubuntu更新内核失败导致启动黑屏 1.首先进入恢复模式,启动resume进入系统 2.打开终端,输入dpkg -l | grep linux 3.把之前安装的内核版本的相关deb名文件删除,用 s ...

  9. Ubuntu实时内核安装Igh主站安装配置

    一.准备工作 系统:Ubuntu 20.04.2 LTS 内核版本:Linux 5.4.28 目标内核:linux-5.4.28-rt19 需要的Linux内核和补丁资源以及IGH主站都在以下链接中 ...

最新文章

  1. 在.NET 2.0正式版中开发无刷新页面
  2. 657. Robot Return to Origin 机器人能否返回原点
  3. 新编标准日本语 第26课 课文
  4. Django项目调用外部程序soffice报错subprocess.CalledProcessError: Command 'soffice --headless --convert-to pdf
  5. 网络协议:TCP流量控制
  6. 前端组件化Polymer入门教程(7)——Local DOM
  7. 联通积分兑换的Q币怎么兑换到QQ上
  8. 《深入浅出数据分析》笔记一
  9. Windows7升级IE11蓝屏问题
  10. RHCE考试第一天之学习安排计划
  11. PHP 生成带文字图片
  12. vue.js 菜鸟学习
  13. 自己组装电脑配置清单2022 自己组装电脑需要哪些配件
  14. 一文教你如何挑选深度学习GPU
  15. 【第十五篇】商城系统-商品详情页功能实现
  16. 3DMAX做游戏建模,你真的学对了吗?
  17. 安卓逆向Xposed HOOK TB直播APP的x-sign参数
  18. 《Java核心技术面试精讲--杨晓峰》学习笔记目录
  19. 短视频直播平台第三方特效SDK完整接入教程
  20. centos7 linux ffmpeg 视频 顺时针 旋转 90度 shell 懒人系-16

热门文章

  1. unity 存档插件_【Unity消息】5月1日到5月15日 Unity资源商店大促
  2. iphone9发布_【60秒半导体新闻】消息称国外疫情爆发让苹果取消发布会 iPhone 9跳票/华为P40全家福:7种配色、陶瓷尊享版配豪华五摄...
  3. lnmp 1.4 mysql_lnmp1.4配置https教程
  4. Java内部类实例测试及总结
  5. springboot注解整理
  6. cp和scp复制命令
  7. 解决VsCode中C程序无法键盘输入的问题
  8. 无心剑中译马塞尔·普鲁斯特《追忆似水年华》
  9. linux 如何取执行一个脚本5000次,【shell笔记脚本】嵌套、控制循环以及处理循环输出...
  10. 语言程序设计赵山林电子版_【特别策划】崇州“老市长”赵抃系列之一:做官要像江水保持清白...