ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)

请关注本头条号,每天坚持更新原创干货技术文章。

如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

前言

本文主要如何安全地升级Ubuntu内核,以18.04 Server版为例纂写本教程。

我们先来了解一下什么是主线内核构建(Mainline Kernel Build)

Mainline Kernel Build是一个从kernel.org开发的一个vanilla内核,作为deb包打包。 Canonical Kernel Team构建和定制Ubuntu的内核源代码,并将其构建为.deb包,以便于apt包管理器进行安装。 只有在需要最新的内核功能的情况下才能使用Mainline内核,因为与Ubuntu一起运行的生产内核可能不太稳定。

我们可以从 Canonical Kernel Team Mainline Kernel Build官方网站查找需要的内核:

https://kernel.ubuntu.com/~kernel-ppa/mainline/

确认升级目标版本

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(1)

确认升级目标版本

可以看出,目前Ubuntu最新的mainline内核版本为4.20.5和v5.0-rc2。确定升级内核的步聚

  1. 把当前系统所有软件包和内核升级到最新
  2. 检查当前内核版本
  3. 下载并安装新内核版本
  4. 删除旧内核

把当前系统所有软件包和内核升级到最新

zcwyou@ubuntu1804:~$ sudo apt update

已下载 61.7 MB,耗时 1分 13秒 (842 kB/s)

正在读取软件包列表… 完成

正在分析软件包的依赖关系树

正在读取状态信息… 完成

有 29 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。

查询系统更新包

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(2)

查询系统更新包

可以看出,有29个软件包需要升级。

查看哪些软件包需要升级,这个步聚非必要:

zcwyou@ubuntu1804:~$ sudo apt list --upgradable

开始升级系统所有的软件包,类似于Windows系统更新。

zcwyou@ubuntu1804:~$ sudo apt upgrade -y

[sudo] password for zcwyou:

Reading package lists… Done

Building dependency tree

Reading state information… Done

Calculating upgrade… Done

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

1 not fully installed or removed.

After this operation, 0 B of additional disk space will be used.

Setting up docker-ce (5:18.09.1~3-0~ubuntu-bionic) …

update-alternatives: warning: forcing reinstallation of alternative /usr/bin/dockerd-ce because link group dockerd is broken

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(3)

系统更新

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(4)

正在显示系统更新过程

重启服务器,既然已经决定要升级内核了,服务器应该可以重启吧?

zcwyou@ubuntu1804:~$ sudo reboot

重新登录系统,再次检查可升级包,并使用以下命令。

zcwyou@ubuntu1804:~$ sudo apt list --upgradeable

如果执行命令的结果为:Listing... Done,就说明系统组件已经是最新的,没有需要更新的软件。

检查当前内核版本

zcwyou@ubuntu1804:~$ uname -r

4.15.0-43-generic

可以看出当前的内核版本为4.15.0-43-generic

下载并安装最新的内核

正如上文所说的,主线内核的官方地址为https://kernel.ubuntu.com/~kernel-ppa/mainline/

我们的目标是安装最新稳定的版本v4.20.5,它对应的下载页面是:

https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/

下载最新内核文件

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(5)

下载最新内核文件

选择我们服务器的架构,我们的服务器一般使用AMD64架构吧?注意,由于64位架构是AMD先推出的,所以Intel 64位处理器也被称为AMD64架构。所以这里并不仅仅是指因特尔的64位CPU。

generic表示通用版内核。

lowlatency表示低延迟内核。

我们一般选择通用版内核

先安装下载工具wget

zcwyou@ubuntu1804:~$ sudo apt install -y wget

创建专用目录

zcwyou@ubuntu1804:~$ cd ~ && mkdir newkernel && cd newkernel

我们应该使用wget分别下载4个generic版本的内核文件:

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-headers-4.20.5-042005_4.20.5-042005.201901260434_all.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-headers-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-image-unsigned-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-modules-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb

使用dpkg安装最新内核:

zcwyou@ubuntu1804:~$ sudo dpkg -i *.deb

看到如下即表示安装成功:

Replacing config file /run/grub/menu.lst with new version

Updating /boot/grub/menu.lst … done

/etc/kernel/postinst.d/zz-update-grub:

Generating grub configuration file …

Found linux image: /boot/vmlinuz-4.20.5-042005-generic

Found initrd image: /boot/initrd.img-4.20.5-042005-generic

Found linux image: /boot/vmlinuz-4.15.0-43-generic

Found initrd image: /boot/initrd.img-4.15.0-43-generic

Found linux image: /boot/vmlinuz-4.15.0-29-generic

Found initrd image: /boot/initrd.img-4.15.0-29-generic

done

安装最新内核:

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(6)

安装最新内核

更新grub,其实上面一步安装时也会自己更新grub配置。

zcwyou@ubuntu1804:~$ sudo update-grub

重启服务器

zcwyou@ubuntu1804:~$ sudo reboot

进入系统后,重新确认版本。

zcwyou@ubuntu1804:~$ uname -r

4.20.5-042005-generic

已经看到内核已经升级为最新版本4.20.5-042005-generic

验证刚刚安装的内核

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(7)

验证刚刚安装的内核

删除旧内核

我们需要借助byobu这个工具删除旧内核:

oucanrong@zcwyou:~$ sudo apt install byobu -y

安装byobu用于删除旧内核

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(8)

安装byobu用于删除旧内核

查看系统已经安装的内核:

oucanrong@zcwyou:~$ dpkg -l | grep linux-image

查询当前系统的内核包

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(9)

查询当前系统的内核包

使用byobu删除旧内核,

oucanrong@zcwyou:~$ sudo purge-old-kernels

默认情况下,byobu将在系统上至少保留2个内核版本,以确保在第一个失败时具有备用内核。

使用byobu删除旧内核

ubuntu16.04如何选择内核版本(Ubuntu升级安装最新内核的方法与注意事项)(10)

使用byobu删除旧内核

如果你想保留唯一一个(最新的)内核,那么你可以使用下面的命令除去一个内核以外的所有内核。执行以下命令:

oucanrong@zcwyou:~$ purge-old-kernels --keep 1 -q

正常情况,purge-old-kernels命令会自动更新grub,为了保证安全,我们可以考虑再更新一次。

oucanrong@zcwyou:~$ sudo update-grub

Ubuntu内核现在从主线内核版本升级到最新版本4.20.5-042005-generic,旧的内核版本已从系统中删除,以释放磁盘空间。

总结:内核是Linux系统中最基础最重要的文件,即使你是一个Linux老手,也不建议手工升级和删除,强烈建议使用工具进行操作,避免发生严重后果。

本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:

https://www.linuxrumen.com/rmxx/931.html

点击了解更多,快速查看更多的技术文章列表。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页