Linux kernel live patching là cách vá lỗi cho kernel đang chạy bị lỗi mà không cần khởi động lại hệ điều hành Linux.
Thông thường Linux kernel đang chạy bị lỗi sẽ cần phải cài kernel mới đã được biên dịch kèm theo bản vá lỗi và khởi động lại hệ điều hành Linux để chạy với kernel mới.
cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.3 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.3"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.3 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.3"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.3"
uname -a
Linux DevSecOps-Edu-VN 5.14.0-362.8.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 8 17:36:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
uname -r
5.14.0-362.8.1.el9_3.x86_64
dnf update
Last metadata expiration check: 0:00:34 ago on Wed 10 Jan 2024 12:37:00 AM +07.
Dependencies resolved.
=======================================================================================================================================
Package Architecture Version Repository Size
=======================================================================================================================================
Installing:
kernel x86_64 5.14.0-362.13.1.el9_3 baseos 5.0 M
Upgrading:
firewalld noarch 1.2.5-2.el9_3 baseos 446 k
firewalld-filesystem noarch 1.2.5-2.el9_3 baseos 8.2 k
kernel-tools x86_64 5.14.0-362.13.1.el9_3 baseos 5.2 M
kernel-tools-libs x86_64 5.14.0-362.13.1.el9_3 baseos 5.0 M
libsss_certmap x86_64 2.9.1-4.el9_3.1 baseos 93 k
libsss_idmap x86_64 2.9.1-4.el9_3.1 baseos 44 k
libsss_nss_idmap x86_64 2.9.1-4.el9_3.1 baseos 48 k
libsss_sudo x86_64 2.9.1-4.el9_3.1 baseos 38 k
libxml2 x86_64 2.9.13-5.el9_3 baseos 746 k
microcode_ctl noarch 4:20230808-2.20231009.1.el9_3 baseos 7.7 M
policycoreutils x86_64 3.5-3.el9_3 baseos 206 k
python3-firewall noarch 1.2.5-2.el9_3 baseos 348 k
rocky-gpg-keys noarch 9.3-1.2.el9 baseos 13 k
rocky-release noarch 9.3-1.2.el9 baseos 23 k
rocky-repos noarch 9.3-1.2.el9 baseos 13 k
sssd-client x86_64 2.9.1-4.el9_3.1 baseos 162 k
sssd-common x86_64 2.9.1-4.el9_3.1 baseos 1.6 M
sssd-kcm x86_64 2.9.1-4.el9_3.1 baseos 111 k
tzdata noarch 2023d-1.el9 baseos 433 k
Installing dependencies:
kernel-core x86_64 5.14.0-362.13.1.el9_3 baseos 20 M
kernel-modules x86_64 5.14.0-362.13.1.el9_3 baseos 37 M
kernel-modules-core x86_64 5.14.0-362.13.1.el9_3 baseos 32 M
Transaction Summary
=======================================================================================================================================
Install 4 Packages
Upgrade 19 Packages
Total download size: 116 M
Is this ok [y/N]:
dnf liệt kê các Linux kernel mới để cài
dnf list kernel
Installed Packages
kernel.x86_64 5.14.0-362.8.1.el9_3 @minimal
Available Packages
kernel.x86_64 5.14.0-362.13.1.el9_3 baseos
Khởi động lại Linux server là 1 việc có thể ảnh hưởng đến hoạt động kinh doanh vì Linux server đó đang chạy ứng dụng có nhiều người truy cập.
Khởi động lại Linux server cũng làm các dịch vụ của máy khác bị ảnh hưởng vì nó móc vào Linux server cần khởi động.
Linux kernel có tùy chọn bật chức năng Kernel Live Patching khi biên dịch để có thể vá lỗi cho kernel đang chạy.
Kernel Live Patching
CONFIG_LIVEPATCH:
Say Y here if you want to support kernel live patching.
This option has no runtime impact until a kernel "patch"
module uses the interface provided by this option to register
a patch, causing calls to patched functions to be redirected
to new function code contained in the patch module.
Symbol: LIVEPATCH [=y]
Type : bool
Defined at kernel/livepatch/Kconfig:7
Prompt: Kernel Live Patching
Depends on: (DYNAMIC_FTRACE_WITH_REGS [=y] || DYNAMIC_FTRACE_WITH_ARGS [=y]) && MODULES [=y] && SYSFS [=y] && KALLSYMS_ALL [=y] && HAVE_LIVEPATCH [=y] && !TRIM_UNUSED_KSYMS [=n]
Location:
-> Processor type and features
-> Kernel Live Patching (LIVEPATCH [=y])