Bài viết này sẽ hướng dẫn bạn cách . Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.
Như anh em đã biết, một số tools hoặc utilities cần có một số gói cài đặt khác đi kèm. Tuy nhiên những gói cài đặt đi kèm đó lại không có hoặc không được hỗ trợ bởi Kernel OS hiện tại của anh em (ví dụ Kernel release quá thấp). Nên ở bài viết này, mình sẽ hướng dẫn anh em thực hiện upgrade Kernel trên hệ thống sử dụng hệ điều hành CentOS 7.
Ngoài ra, việc upgrade kernel còn có tác dụng tăng tính bảo mật của hệ thống, khi các bản kernel mới hơn sẽ chứa các bản vá lỗi của bản trước đó.
Trước khi thực hiện upgrade kernel, ta truy cập vào trang web sau để kiểm tra phiên bản kernel mới nhất, hoặc xem các bản kernel khả dụng để cài đặt. Link: https://www.kernel.org/
- Kiểm tra phiên bản kernel đang sử dụng:
# uname -r |
Kết quả dự kiến:
- Tải và giải nén file cài đặt kernel mong muốn:
# yum install xz -y # wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.4.tar.xz # tar -Jxvf linux-5.15.4.tar.xz # cd linux-5.15.4 |
Trong đó:
xz: extension cần thiết để giải nén file có đuôi .xz
URL ở lệnh 2: link tải file cài đặt kernel. Ở đây, mình muốn upgrade kernel lên bản 5.15.4, tức là bản stable mới nhất tại thời điểm viết bài.
- Cài đặt một số công cụ cần thiết:
# yum groupinstall “Development Tools” # yum install gcc -y # yum install ncurses ncurses-devel -y # yum install openssl-devel bc flex bison -y # yum install libssl-dev bc libelf-dev elfutils-libelf-devel -y |
Trong đó:
Develment Tools: nhóm các công cụ cần thiết cho việc build source
gcc: công cụ cần thiết để phiên dịch ngôn ngữ C, vì kernel được viết bằng C
ncurses, openssl, libssl…: các gói mà kernel yêu cầu khi build (kinh nghiệm là cứ thực hiện make source, thấy báo thiếu gì thì cài cái đó 😀 )
Lưu ý: Trong một số trường hợp, phiên bản gcc trên hệ thống thấp hơn phiên bản yêu cầu dẫn đến lỗi khi build.
Để khắc phục lỗi trên, ta cần thực hiện update phiên bản gcc theo các bước sau:
# yum install centos-release-scl -y # yum install devtoolset-7 -y# scl enable devtoolset-7 bash |
Sau khi hoàn tất, ta kiểm tra lại phiên bản gcc sẽ thấy kết quả hiển thị phiên bản 7.x:
- Chuẩn bị cho quá trình build source:
# make mrproper |
Lệnh trên sẽ đưa source kernel về trạng thái gốc của mã nguồn khi lần đầu unpacked (vì nếu anh em đã make trước đó thì cấu trúc mã nguồn có thể đã bị thay đổi, make lại lần nữa có khả năng lỗi)
- Tạo config:
Khi anh em build lại kernel, có 1 điểm quan trọng chính là các module mà anh em muốn hỗ trợ trong kernel mới. Anh em có thể tùy chỉnh hoặc lựa chọn những gì mình muốn cài đặt. Từ việc lựa chọn các Device drivers, Network, File system… cho đến Security options hay Processor type. Các module này anh em nên để mặc định những gì đang có trên kernel cũ nếu không thực sự chắc chắn về những thay đổi mình thực hiện.
Ở bài viết này, mình sẽ để default những gì đang có. Save .config và Exit:
# make menuconfig |
Sau khi save thành công, ta sẽ thấy một file .config như sau:
- Build source:
Với những config đã tạo ở trên, ta sẽ build các module, kernel chính và sau đó cài đặt. Việc cài đặt kernel (nếu build đã thành công) sẽ tạo một image mới, nếu gặp vấn đề khi boot vào kernel mới thì ta dùng Recsue mode để chỉnh lại boot loader.
Thực hiện lần lượt các lệnh sau:
# make # make modules # make modules_install # make install |
Bước build sẽ khá lâu, nếu an hem đang dùng remote login như SSH thì nên đặt trong screen để tránh bị văng session thì phải build lại từ đầu.
Trước khi build, trong thư mục /boot sẽ có các file như initramfs-3.10.0… hay vmlinuz-3.10.0…, đây là các kernel khả dụng để boot lúc đó:
Sau khi cài đặt hoàn tất, ta có thể thấy được image kernel mới như sau:
Đồng thời, trong boot loader cũng hiển thị kernel ta vừa cài đặt.
Sau khi cài xong, kernel mới được cài đặt sẽ không được đặt làm default, mình cũng không khuyến cáo anh em sử dụng kernel mới này thành default khi chưa sử dụng qua. Ta có thể reboot lại hệ thống, ở bước chọn kernel, ta dùng phím mũi tên lên xuống để chọn sang kernel mới:
Kiểm tra lại phiên bản kernel:
Sau quá trình sử dụng, nếu anh em thấy kernel mới không có lỗi lầm gì thì có thể set kernel này thành default như sau:
- Liệt kê danh sách các kernel trên hệ thống:
# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg |
Kết quả dự kiến:
Thứ tự các bản ghi được tính từ 0.
- Đặt kernel mới thành default
# grub2-set-default 0 |
- Kiểm tra lại cài đặt:
# grep saved /boot/grub2/grubenv |
Kết quả dự kiến:
- Rebuild lại grub2 boot loader:
# grub2-mkconfig -o /boot/grub2/grub.cfg |
Vậy là việc upgrade kernel Linux trên hệ điều hành CentOS 7 đã hoàn tất.
Chúc bạn thực hiện thành công!
THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST
>> SERVER – COLOCATION – CDN
>> HOSTING
>> WEBSITE
>> TÊN MIỀN