在线升级内核版本

背景

我们知道在很多的情况下,会多内核的版本进行要求。这时候就需要我们对内核的版本进行升级。最简单的方式就是重新安装一个内核版本的虚拟机。但是这种方式太过于繁琐,本章主要介绍两种在线升级的方式。

查看内核版本

uname -mrs

输出如下:

Linux 4.4.0-62-generic x86_64

可知当前的内核版本为4.4.0,并且 CPU为X86架构64位。其中我们升级内核时,架构和位数不要搞错了。

方法一:通过apt命令安装升级内核

  1. 通过apt-cache search linux-generic查看当前可用的内核版本。
    命令输出的结果如下:
linux-generic - Complete Generic Linux kernel and headers
 linux-generic-lts-utopic - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-generic-lts-vivid - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-generic-lts-wily - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-generic-lts-xenial - Complete Generic Linux kernel and headers (dummy transitional package)
 linux-image-4.4.0-21-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-extra-4.4.0-21-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 linux-generic-hwe-16.04 - Complete Generic Linux kernel and headers
 linux-generic-hwe-16.04-edge - Complete Generic Linux kernel and headers
 linux-image-4.10.0-14-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-19-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-27-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-28-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-30-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.10.0-32-generic - Linux kernel image for version 4.10.0 on 64 bit x86 SMP
 linux-image-4.11.0-13-generic - Linux kernel image for version 4.11.0 on 64 bit x86 SMP
 linux-image-4.11.0-14-generic - Linux kernel image for version 4.11.0 on 64 bit x86 SMP
 linux-image-4.4.0-22-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-24-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-28-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-31-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-34-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-36-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-38-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-42-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-43-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-45-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-47-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-51-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-53-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-57-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-59-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-62-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-63-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-64-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-66-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-67-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-70-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-71-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-72-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-75-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-77-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-78-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-79-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-81-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-83-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 linux-image-4.4.0-87-generic - Linux kernel image for version 4.4.0 on 64 bit x86  SMP
 linux-image-extra-4.10.0-14-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-19-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-20-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-21-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-22-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-24-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-26-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-27-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-28-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-30-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.10.0-32-generic - Linux kernel extra modules for version 4.10.0 on 64 bit x86 SMP
 linux-image-extra-4.11.0-13-generic - Linux kernel extra modules for version 4.11.0 on 64 bit x86 SMP
 linux-image-extra-4.11.0-14-generic - Linux kernel extra modules for version 4.11.0 on 64 bit x86 SMP

大致如上图所示,我们可知当前的最新的内核版本号是4.11.0-14。其实,我们有时并不需要升级到最新的内核版本。升级到大于目标版本即可。

2.安装指定的内核版本

执行下面的命令:

sudo apt-get install linux-image-4.11.0-14-generic,其中linux-image-4.11.0-14-generic指定的是内核版本。

命令输出大致如下:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libnvpair1linux libssl-dev libssl-doc libuutil1linux libuv1-dev
 libzfs2linux libzpool2linux python-pkg-resources zfs-doc zlib1g-dev
 使用'apt autoremove'来卸载它(它们)。
 建议安装:
 fdutils linux-tools linux-headers-4.11.0-14-generic
 下列【新】软件包将被安装:
 linux-image-4.11.0-14-generic
 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 5 个软件包未被升级。
 需要下载 20.4 MB 的归档。
 解压缩后会消耗 70.7 MB 的额外空间。
 获取:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-image-4.11.0-14-generic amd64 4.11.0-14.20~16.04.1 [20.4 MB]
 已下载 20.4 MB,耗时 22秒 (894 kB/s)
 正在选中未选择的软件包 linux-image-4.11.0-14-generic。
 (正在读取数据库 ... 系统当前共安装有 67751 个文件和目录。)
 正准备解包 .../linux-image-4.11.0-14-generic_4.11.0-14.20~16.04.1_amd64.deb  ...
 Done.
 正在解包 linux-image-4.11.0-14-generic (4.11.0-14.20~16.04.1) ...
 正在设置 linux-image-4.11.0-14-generic (4.11.0-14.20~16.04.1) ...
 Running depmod.
 update-initramfs: deferring update (hook will be called later)
 Examining /etc/kernel/postinst.d.
 run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 update-initramfs: Generating /boot/initrd.img-4.11.0-14-generic
 W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
 run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 run-parts: executing /etc/kernel/postinst.d/update-notifier 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.11.0-14-generic /boot/vmlinuz-4.11.0-14-generic
 Generating grub configuration file ...
 Found linux image: /boot/vmlinuz-4.11.0-14-generic
 Found initrd image: /boot/initrd.img-4.11.0-14-generic
 Found linux image: /boot/vmlinuz-4.4.0-62-generic
 Found initrd image: /boot/initrd.img-4.4.0-62-generic
 done
  1. 重启系统

reboot
4. 查看当前系统的内核版本

uname -mrs,有时第一次重启,内核的版本并没有发生改变,你可以尝试再重启一次。

该方法主要是用于能够联网的环境,并且成功率并不是很高。如果当你的环境不能联网,或者第一种方式不成功,你可以考虑使用第二种方式。

方法二:通过下载最新内核deb包安装内核

  1. https://kernel.ubuntu.com/~kernel-ppa/mainline/中找到你目标的内核版本,之后进去查看相应的deb文件。
  2. 下载对应的deb文件。其中需要注意的是架构以及版本。架构就是ARM,X86,MIPS或PowerPC系列。其中的版本有generic和lowlatency两个版本,我建议选择generic版本。其中all是必选的。比如我选择5.20的版本内核,需要下载以下文件:
linux-headers-5.2.0-050200_5.2.0-050200.201907231526_all.deb
linux-headers-5.2.0-050200-generic_5.2.0-050200.201907231526_amd64.deb
linux-image-unsigned-5.2.0-050200-generic_5.2.0-050200.201907231526_amd64.deb
linux-modules-5.2.0-050200-generic_5.2.0-050200.201907231526_amd64.deb
  1. 安装下载的.deb包
    sudo dpkg -i *.db
  2. 重启系统
    reboot
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章