背景
我們知道在很多的情況下,會多內核的版本進行要求。這時候就需要我們對內核的版本進行升級。最簡單的方式就是重新安裝一個內核版本的虛擬機。但是這種方式太過於繁瑣,本章主要介紹兩種在線升級的方式。
查看內核版本
uname -mrs
輸出如下:
Linux 4.4.0-62-generic x86_64
可知當前的內核版本爲4.4.0,並且 CPU爲X86架構64位。其中我們升級內核時,架構和位數不要搞錯了。
方法一:通過apt命令安裝升級內核
- 通過
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
- 重啓系統
reboot
4. 查看當前系統的內核版本
uname -mrs
,有時第一次重啓,內核的版本並沒有發生改變,你可以嘗試再重啓一次。
該方法主要是用於能夠聯網的環境,並且成功率並不是很高。如果當你的環境不能聯網,或者第一種方式不成功,你可以考慮使用第二種方式。
方法二:通過下載最新內核deb包安裝內核
- 從
https://kernel.ubuntu.com/~kernel-ppa/mainline/
中找到你目標的內核版本,之後進去查看相應的deb文件。 - 下載對應的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
- 安裝下載的.deb包
sudo dpkg -i *.db
- 重啓系統
reboot