无需编译,1分钟安装Ubuntu官方构建的最新版Linux内核

原创
2014/02/23 15:56
阅读数 2.6W


 

glibc是应用和kernel的桥梁,glibc封装kernel提供的API形成系统调用system call,Ubuntu上glibc对应libc6这个包。

升级kernel不升级核心库glibc一般不会影响软件的正常使用,像VirtualBox安装时编译有虚拟化相关的dkms内核模块,更新内核后需要重新编译这些模块:

sudo /etc/init.d/vboxdrv setup 模块生成在 /lib/modules/`uname -r`/updates/dkms/vbox*
注:14.04上升级内核时会自动生成VirtualBox的内核模块,不需要手动执行。

新内核里集成了最新的Intel图形驱动 /lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/i915.ko

这得益于Intel官方Linux开源图形驱动项目:https://01.org/linuxgraphics/

Intel在2012年推出的Ivy Bridge架构的比如i5-3230M等等3代的CPU运行在Ubuntu12.04的3.2.0内核上可能会偶尔出现系统冻结freeze死机的情况。

旧内核不能很好地支持新架构,升级内核一般能解决类似问题。

http://kernel.ubuntu.com/~kernel-ppa/mainline/
Ubuntu官方提供的二进制通用Linux内核deb打包,linux-image.deb大小约55MB.
里面有这些东西:
/boot/vmlinuz-`uname -r` (5.6MB)
/boot/initrd.img-`uname -r` (27MB,安装时生成)
/lib/modules/`uname -r`/ (185MB,里面包含驱动等)
/lib/firmware/`uname -r`/ (1.4MB,固件)

Ubuntu官方提供有最新的内核二进制安装包,升级很方便,比如64位系统升级generic内核(以4.0为例):

sudo dpkg -i \
linux-headers-4.0.0-040000_4.0.0-040000.201504121935_all.deb \
linux-headers-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb \
linux-image-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb

注意:新版内核还从linux-image中分出了一个包linux-modules,有的话也要安装这个包.

安装新内核时会自动update-grub启动项,不会卸载旧内核。
在 /boot 下可以看到多个内核的启动引导程序 vmlinuz 和 initrd.img 。

如果新内核运行不正常,可以在开机GRUB引导里选择旧内核启动。
也可以这样改回原来使用的内核:
ln -sf /boot/vmlinuz-VERSION /vmlinuz
ln -sf /boot/initrd.img-VERSION /initrd.img
其中VERSION是原来内核的版本。

比如我在Kubuntu 12.04上把内核升级到了3.14:

展开阅读全文
打赏
21
88 收藏
分享
加载中
mark
2016/08/14 10:25
回复
举报
我现在是自己下载源码编译,ubuntu14.04 下面可以。
2015/11/10 11:44
回复
举报
eechen博主

引用来自“许雷神”的评论

很好的教程 那个centos之流可以破吗?
Ubuntu提供的内核Debian能用,但肯定是不兼容CentOS的呀.
2015/08/03 21:07
回复
举报
很好的教程 那个centos之流可以破吗?
2015/08/03 20:54
回复
举报
debian 也适用
2015/06/15 01:36
回复
举报
哇塞 好强大的样子
2015/04/14 11:23
回复
举报

引用来自“W_Lu”的评论

按照博主方法,已升级到3.18.11内核,ubuntu14.04.2,83,不过我用easybcd弄引导的,没看到内核有得给我选,不过内核使用目前很正常!0

引用来自“eechen”的评论

EasyBCD其实用的还是GRUB4DOS这个东西,它默认会引导/vmlinuz,而安装新内核后,/vmlinuz是软链接到/boot/vmlinuz-VERSION的,/initrd.img也是如此。你要使用旧内核,直接软连接旧的内核到/vmlinuz和/initrd.img即可。
谢谢!目前我ubuntu的/vmlinux和/initrd.img都是指向旧内核3.16.0-34的,/vmlinux.old和/initrd.img.old指向新内核3.18,(即先手动更新3.18,后自动更新3.16,原内核是3.16.0-30),可是系统还是会自动进入3.18内核,莫非是grub2会自动选择编号最新的进入?
2015/04/12 23:26
回复
举报
eechen博主

引用来自“W_Lu”的评论

按照博主方法,已升级到3.18.11内核,ubuntu14.04.2,83,不过我用easybcd弄引导的,没看到内核有得给我选,不过内核使用目前很正常!0
EasyBCD其实用的还是GRUB4DOS这个东西,它默认会引导/vmlinuz,而安装新内核后,/vmlinuz是软链接到/boot/vmlinuz-VERSION的,/initrd.img也是如此。你要使用旧内核,直接软连接旧的内核到/vmlinuz和/initrd.img即可。
2015/04/12 16:39
回复
举报
按照博主方法,已升级到3.18.11内核,ubuntu14.04.2,83,不过我用easybcd弄引导的,没看到内核有得给我选,不过内核使用目前很正常!0
2015/04/12 15:27
回复
举报
eechen博主

引用来自“难得正经”的评论

呃。我发现闭源显卡驱动都会报错(虽然我独显是不用的),dist-upgrade升级的话却不会

引用来自“eechen”的评论

我机子的独显是Nvidia GT630M,升级内核时,比如从3.14.18升级到3.14.29,会自动更新Nvidia的DKMS模块/lib/modules/`uname -r`/updates/dkms/nvidia_331.ko,不需要手动生成。我通过apt-get安装Nvidia官方331驱动,用nvidia-prime提供双显卡切换支持,如果你安装的是Nvidia官网的二进制包,就不清楚了: http://my.oschina.net/eechen/blog/228450

引用来自“难得正经”的评论

我ubuntu 14.10默认3.16装了3.14.32并以之启动,发现独显驱动报错,就重新安装了一遍驱动(apt-get)。dkms status显示bbswitch把两个内核都识别了,nvidia却只识别了3.16,无论哪个内核环境下重装,结果都一样。难道驱动不支持这旧版本么。。
建议使用nvidia-prime取代bumblebeed(bbswitch)管理双显卡. nvidia-prime可以集成到nvidia-settings. 安装方法: http://my.oschina.net/eechen/blog/227134 如果在3.14下nvidia-settings里能使用nvidia-prime切换双显卡,则表明显卡是正常工作的.
2015/02/10 15:43
回复
举报
更多评论
打赏
26 评论
88 收藏
21
分享
返回顶部
顶部