Cài đặt Kernel mới vào thư mục /boot và cập nhật Bootloader
Bước đầu tiên là chuyển các file kernel đã biên dịch ở Phần 4 vào thư mục /boot để hệ thống có thể truy cập và khởi động.
Thực hiện lệnh make modules_install để cài đặt các module vào vị trí chuẩn, sau đó dùng make install để tự động copy file vmlinuz và System.map vào /boot đồng thời cập nhật cấu hình GRUB.
Đảm bảo bạn đang chạy lệnh này với quyền root hoặc qua sudo từ thư mục nguồn kernel.
cd /usr/src/linux-source-$(uname -r)
sudo make modules_install
sudo make install
Kết quả mong đợi: Lệnh sẽ in ra đường dẫn của file kernel mới được tạo (ví dụ: /boot/vmlinuz-6.x.x-kyber) và thông báo đã cập nhật cấu hình GRUB (thường là update-grub hoặc grub2-mkconfig).
Cập nhật cấu hình GRUB (Trường hợp không tự động)
Nếu lệnh make install không tự động chạy script cập nhật GRUB (phụ thuộc vào bản phân phối), bạn cần chạy thủ công để GRUB nhận diện kernel mới.
Trên Ubuntu/Debian, sử dụng update-grub. Trên CentOS/RHEL/Fedora, sử dụng grub2-mkconfig.
sudo update-grub
Kết quả mong đợi: Dòng output cuối cùng hiển thị "Generating boot menu..." và liệt kê các kernel, trong đó có kernel mới với tên phiên bản bạn đã đặt.
Khởi động lại hệ thống để vào Kernel mới
Sau khi GRUB đã nhận diện kernel mới, bạn cần khởi động lại máy để chuyển sang môi trường kernel đó.
Sử dụng lệnh reboot để khởi động lại. Khi màn hình GRUB hiện ra, hãy nhấn phím Esc hoặc e để chỉnh sửa nếu cần, nhưng thông thường kernel mới sẽ được đặt mặc định (top entry).
sudo reboot
Kết quả mong đợi: Máy tính khởi động lại. Tại màn hình boot, chọn dòng kernel mới nhất (thường là dòng đầu tiên) và nhấn Enter. Hệ thống sẽ boot vào kernel mới.
Xác nhận phiên bản Kernel đang chạy
Sau khi đăng nhập vào shell, kiểm tra ngay phiên bản kernel để đảm bảo bạn đang chạy đúng kernel đã biên dịch.
uname -r
Kết quả mong đợi: Phiên bản trả về phải khớp với tên kernel bạn đã build (ví dụ: 6.5.0-kyber-custom), khác với phiên bản trước khi update.
Kiểm tra trạng thái module Kyber bằng lsmod và dmesg
Để xác minh module mã hóa Kyber đã được tải vào bộ nhớ kernel, ta sử dụng lệnh lsmod để liệt kê các module đang hoạt động.
Module Kyber trong Linux thường nằm trong nhóm crypto hoặc có tên riêng biệt tùy vào cách bạn tích hợp (ví dụ: kyber, akcipher, hoặc libkyber).
lsmod | grep -i kyber
Kết quả mong đợi: Xuất hiện dòng chứa tên module Kyber kèm theo kích thước và số lượng module phụ thuộc (ví dụ: kyber 123456 0). Nếu không có kết quả, module chưa được tải.
Đặt module vào trạng thái sẵn sàng (nếu chưa tự động)
Trong một số cấu hình, module có thể được biên dịch thành file .ko nhưng chưa được tự động tải (load) khi boot. Bạn cần sử dụng modprobe để kích hoạt thủ công.
sudo modprobe kyber
Kết quả mong đợi: Không có lỗi báo về. Chạy lại lệnh lsmod | grep kyber để thấy module đã xuất hiện.
Kiểm tra log khởi động với dmesg
Lệnh dmesg hiển thị nhật ký của kernel từ khi khởi động. Đây là nơi quan trọng để xem kernel có nhận diện thuật toán Kyber và đăng ký vào hệ thống crypto hay không.
Tìm kiếm các từ khóa liên quan đến Kyber hoặc "akcipher" (Authenticated Key Encapsulation Mechanism) trong log.
dmesg | grep -i kyber
Kết quả mong đợi: Xuất hiện các dòng log báo hiệu thành công, ví dụ: [ 12.345678] akcipher: registering kyber hoặc [ 12.345678] crypto: kyber: self-test passed.
Xác minh việc Kyber đã được Kernel nhận diện và tải thành công
Bước cuối cùng là kiểm tra trực tiếp trong hệ thống quản lý crypto của Linux (/proc/crypto) để chắc chắn thuật toán Kyber đã được đăng ký và sẵn sàng sử dụng.
File /proc/crypto liệt kê tất cả các thuật toán mã hóa mà kernel hiện tại đang hỗ trợ.
cat /proc/crypto | grep -A 10 kyber
Kết quả mong đợi: Xuất hiện khối thông tin chi tiết về Kyber, bao gồm tên (name), loại (type, thường là akcipher hoặc kdf), và các thông số như blocksize, offset.
Chạy test nhanh bằng OpenSSL (nếu đã cấu hình backend)
Nếu bạn đã cấu hình OpenSSL hoặc ứng dụng để sử dụng backend crypto của kernel (via AF_ALG socket), bạn có thể test tính khả dụng. Tuy nhiên, bước cơ bản nhất là kiểm tra socket AF_ALG.
Dùng lệnh openssl hoặc script đơn giản để tạo socket kết nối với kernel crypto. Dưới đây là cách kiểm tra bằng openssl nếu nó được build với hỗ trợ kernel backend (phụ thuộc vào config OpenSSL).
openssl list -algorithms | grep -i kyber
Kết quả mong đợi: Nếu OpenSSL được cấu hình đúng để gọi vào kernel, bạn sẽ thấy kyber768 hoặc kyber512 trong danh sách. Nếu không thấy, hãy kiểm tra lại cấu hình config của OpenSSL trong Phần 4 hoặc 6, nhưng việc có mặt trong /proc/crypto là bằng chứng chắc chắn nhất cho Kernel.
Tổng kết trạng thái module
Để có cái nhìn tổng quan về module Kyber đang hoạt động, kết hợp kiểm tra thông tin từ /sys nếu có.
cat /sys/module/kyber/version
Kết quả mong đợi: Trả về phiên bản của module Kyber (thường là 1.0 hoặc phiên bản kernel đang chạy), xác nhận module đã được nhận diện đầy đủ bởi hệ thống.
Điều hướng series:
Mục lục: Series: Triển khai Database Post-Quantum với Kyber trên Linux Kernel
« Phần 4: Cấu hình và biên dịch Linux Kernel với hỗ trợ Kyber
Phần 6: Kiểm thử và xác minh hiệu năng của Kyber trên hệ thống »