天天看點

線上更新核心版本

背景

我們知道在很多的情況下,會多核心的版本進行要求。這時候就需要我們對核心的版本進行更新。最簡單的方式就是重新安裝一個核心版本的虛拟機。但是這種方式太過于繁瑣,本章主要介紹兩種線上更新的方式。

檢視核心版本

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

繼續閱讀