智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

Ubuntu升级安装最新内核的方法与注意事项(以18.04为例)

前言

本文主要如何安全地升级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/

确认升级目标版本
确认升级目标版本
可以看出,目前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’ 来查看它们。

查询系统更新包
查询系统更新包

可以看出,有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

系统更新

正在显示系统更新过程

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

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/

下载最新内核文件
下载最新内核文件

选择我们服务器的架构,我们的服务器一般使用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

安装最新内核:
安装最新内核

更新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

验证刚刚安装的内核
验证刚刚安装的内核

删除旧内核

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

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

安装byobu用于删除旧内核
安装byobu用于删除旧内核

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

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

查询当前系统的内核包
查询当前系统的内核包

使用byobu删除旧内核,

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

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

使用byobu删除旧内核
使用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老手,也不建议手工升级和删除,强烈建议使用工具进行操作,避免发生严重后果。

赞(1)
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!