Cách nâng cấp Linux Kernel trên CentOS 7

Linux Kernel là gì?

Linux kernel (nhân Linux) là một hạt nhân monolithic cho các hệ điều hành tương tự Unix. Hệ điều hành Linux dựa trên hạt nhân này và được triển khai trên cả hai hệ thống máy tính truyền thống là máy tính cá nhân và máy chủ.

Theo mặc định, CentOS 7 sử dụng phiên bản linux Kernel cũ là 3.10.x. Nhưng kernel cũ không hỗ trợ một số phần cứng và công nghệ mới. Điều này giúp tận dụng tối đa thế mạnh tài nguyên phần cứng của chúng. Ngoài ra, cập nhật kernel còn giúp khai thác tối đa những tính năng mới của nó và vá các lỗ hổng bảo mật đã được phát hiện trong phiên bản tiền nhiệm.

nâng cấp Linux Kernel trên CentOS 7

Linux kernel được tạo ra bởi Linus Torvalds vào năm 1991 và các bản phân phối của Linux (Linux distro) như Ubuntu, CentOS, Debian…. đều sử dụng Linux Kernel.

Cách nâng cấp Linux Kernel trên CentOS 7

Khi bạn tạo một VPS chạy hệ điều hành CentOS 7 thì Linux Kernel mặc định của nó là 3.10, trong khi đó Linux Kernel bản mới nhất là 5.3.11. Các bạn có thể dùng lệnh sau để check phiên bản Linux Kernel.

				
					uname -sr
				
			

kết quả

Bây giờ ta sẽ nâng cấp Linux Kernel bằng các bước sau.

				
					[10:49][root@nguyenhongson ~]# uname -sr
Linux 3.10.0-1160.71.1.el7.x86_64

				
			

1Cài đặt ELRepo repository. 

Thêm ELRepo gpg key.

				
					rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
				
			

Cài đặt ELRepo 

				
					rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
				
			

Kết quả

				
					Retrieving https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:elrepo-release-7.0-3.el7.elrepo  ################################# [100%]
				
			

Kiểm tra xem ELRepo đã cài hay chưa bằng lệnh sau:

				
					yum repolist
				
			

Nếu thấy

				
					elrepo                  ELRepo.org Community Enterprise Linux Repository - el7
				
			

tức là đã cài đặt thành công.

				
					Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.newmediaexpress.com
 * elrepo: mirrors.thzhost.com
 * epel: sg.fedora.ipserverone.com
 * extras: mirror.newmediaexpress.com
 * rpmforge: kartolo.sby.datautama.net.id
 * updates: centos.netonboard.com
elrepo                                                                   | 2.9 kB  00:00:00     
elrepo/primary_db                                                        | 529 kB  00:00:00     
287 packages excluded due to repository priority protections
repo id                 repo name                                                      status
base/7/x86_64           CentOS-7 - Base                                                7786+2311
elrepo                  ELRepo.org Community Enterprise Linux Repository - el7            128+19
*epel/x86_64            Extra Packages for Enterprise Linux 7 - x86_64                 12483+974
extras/7/x86_64         CentOS-7 - Extras                                                    305
mariadb                 MariaDB                                                            33+10
rpmforge                RHEL 7 - RPMforge.net - dag                                      141+104
updates/7/x86_64        CentOS-7 - Updates                                               591+147
repolist: 21467
				
			

2 Cài đặt Linux Kenel stable bản mới nhất từ kernel.org

Sử dụng lệnh sau để cài đặt Linux Kernel

				
					yum --enablerepo=elrepo-kernel install kernel-ml
				
			

Quá trình cài đặt bắt đầu

				
					Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.newmediaexpress.com
 * elrepo: elrepo.mirror.angkasa.id
 * elrepo-kernel: elrepo.mirror.angkasa.id
 * epel: sg.fedora.ipserverone.com
 * extras: mirror.newmediaexpress.com
 * rpmforge: kartolo.sby.datautama.net.id
 * updates: centos.netonboard.com
elrepo-kernel                                                            | 2.9 kB  00:00:00     
elrepo-kernel/primary_db                                                 | 1.8 MB  00:00:00     
295 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:5.3.11-1.el7.elrepo will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================
 Package            Arch            Version                        Repository              Size
================================================================================================
Installing:
 kernel-ml          x86_64          5.3.11-1.el7.elrepo            elrepo-kernel           48 M

Transaction Summary
================================================================================================
Install  1 Package

Total download size: 48 M
Installed size: 216 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-5.3.11-1.el7.elrepo.x86_64.rpm                                 |  48 MB  00:00:08     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : kernel-ml-5.3.11-1.el7.elrepo.x86_64                                         1/1 
  Verifying  : kernel-ml-5.3.11-1.el7.elrepo.x86_64                                         1/1 

Installed:
  kernel-ml.x86_64 0:5.3.11-1.el7.elrepo                                                        

Complete!
				
			

Kiểm tra xem Linux Kernel 5.3.11 đã được cài hay chưa bằng lệnh:

				
					rpm -qa | grep kernel
				
			

Bạn sẽ thấy kernel-ml-5.3.11-1.el7.elrepo.x86_64 xuất hiện trong danh sách

				
					kernel-headers-3.10.0-1062.4.3.el7.x86_64
kernel-3.10.0-1062.1.2.el7.x86_64
kernel-3.10.0-1062.4.1.el7.x86_64
kernel-devel-3.10.0-1062.4.3.el7.x86_64
kernel-ml-5.3.11-1.el7.elrepo.x86_64
kernel-tools-libs-3.10.0-1062.4.3.el7.x86_64
kernel-3.10.0-1062.4.3.el7.x86_64
kernel-3.10.0-1062.el7.x86_64
kernel-devel-3.10.0-1062.4.1.el7.x86_64
kernel-tools-3.10.0-1062.4.3.el7.x86_64
				
			

3 Kích hoạt Linux Kernel mới

Tuy đã được cài đặt nhưng phiên bản Linux Kernel 5.3.11 vẫn chưa được kích hoạt, khi bạn khởi động lại VPS thì CentOS vẫn sử dụng Linux Kernel 3.10.

Bạn có thể kiểm tra các phiên bản Linux Kernel trong bộ nạp khởi động (Grub2) bằng lệnh sau:

				
					sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
				
			

Kết quả

				
					0 : CentOS Linux (5.3.11-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1062.4.3.el7.x86_64) 7 (Core)
2 : CentOS Linux 7 Rescue b7b2f94704fd4768bfdb1f3cdd123206 (3.10.0-1062.4.1.el7.x86_64)
3 : CentOS Linux (3.10.0-1062.4.1.el7.x86_64) 7 (Core)
4 : CentOS Linux (3.10.0-1062.1.2.el7.x86_64) 7 (Core)
5 : CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)
6 : CentOS Linux (0-rescue-f8fd78b65c424d5ead635c5b7f572837) 7 (Core)
				
			

Để kích hoạt và sử dụng Linux Kernel 5.3.11 làm Linux Kernel mặc định ta sử dụng lệnh sau:

				
					sudo grub2-set-default 0
				
			

0 – Chính là số thứ tự của Linux Kernel 5.3.11 ta đã có ở trên, nếu muốn sử dụng Linux Kernel phiên bản khác có thể sử dụng lại lệnh trên với số thứ tự của kernel đó.

Bây giờ ta khởi động lại VPS bằng lệnh

				
					reboot
				
			

Sau đó đăng nhập lại VPS và kiểm tra lại thì lúc này CentOS đã sử dụng Linux Kernel mới nhất là 5.3.11

				
					[11:13][root@nguyenhongson ~]# uname -sr
Linux 5.18.15-1.el7.elrepo.x86_64
[11:13][root@nguyenhongson ~]#

				
			

Như vậy là CentOS 7 của bạn đã sử dụng Linux Kernel mới nhất.

Cách xoá Lixnux Kernel cũ.

Sau khi nâng cấp lên Linux Kernel cũ có thể xoá Linux Kernel phiên bản cũ hơn để tiết kiệm ổ cứng bằng lệnh:

				
					package-cleanup --oldkernels
				
			

Lệnh này sẽ liệt kê các phiên bản Linux Kernel cũ và hỏi bạn xem có muốn xoá chúng không.

				
					[10:59][root@nguyenhongson ~]# package-cleanup --oldkernels
Loaded plugins: fastestmirror, priorities, versionlock
--> Running transaction check
---> Package kernel.x86_64 0:3.10.0-1160.25.1.el7 will be erased
---> Package kernel.x86_64 0:3.10.0-1160.31.1.el7 will be erased
---> Package kernel-devel.x86_64 0:3.10.0-1160.31.1.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================
 Package                              Arch                           Version                                      Repository                        Size
=========================================================================================================================================================
Removing:
 kernel                               x86_64                         3.10.0-1160.25.1.el7                         @updates                          64 M
 kernel                               x86_64                         3.10.0-1160.31.1.el7                         @updates                          64 M
 kernel-devel                         x86_64                         3.10.0-1160.31.1.el7                         @updates                          38 M

Transaction Summary
=========================================================================================================================================================
Remove  3 Packages

Installed size: 167 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : kernel-devel-3.10.0-1160.31.1.el7.x86_64                                                                                              1/3
  Erasing    : kernel.x86_64                                                                                                                         2/3
  Erasing    : kernel.x86_64                                                                                                                         3/3
  Verifying  : kernel-3.10.0-1160.25.1.el7.x86_64                                                                                                    1/3
  Verifying  : kernel-3.10.0-1160.31.1.el7.x86_64                                                                                                    2/3
  Verifying  : kernel-devel-3.10.0-1160.31.1.el7.x86_64                                                                                              3/3

Removed:
  kernel.x86_64 0:3.10.0-1160.25.1.el7            kernel.x86_64 0:3.10.0-1160.31.1.el7            kernel-devel.x86_64 0:3.10.0-1160.31.1.el7

Complete!

				
			

Như vậy là chúng ta đã hoàn thành quá trình nâng cấp linux kernel trên CentOS 7 rồi nhé, chúc các bạn thành công!

0 0 votes
Đánh giá bài viết
Đăng kí
Thông báo khi
guest

3 Comments
cũ nhất
mới nhất
Inline Feedbacks
View all comments
thai tran
thai tran
Khách
18/12/2019 11:27 am

ubuntu di ban

Đăng
Đăng
Khách
22/12/2019 8:09 pm

nice