Cập nhật Kernel xong mất Driver: Nỗi ám ảnh không của riêng ai
Mình dùng Fedora làm máy làm việc chính đã hơn 2 năm. Mọi thứ đều tuyệt vời cho đến khi mình chạy sudo dnf update. Sau khi khởi động lại, chiếc card Nvidia bỗng dưng “đình công”, màn hình kẹt ở độ phân giải 800×600, hoặc VirtualBox báo lỗi thiếu module nghiêm trọng.
Vấn đề nằm ở tốc độ cập nhật của Fedora. Distro này lên Kernel mới rất nhanh, thường chỉ vài ngày sau khi bản ổn định ra mắt. Khi Kernel thay đổi, các driver bên ngoài (out-of-tree) như Nvidia, Wifi Broadcom hay VirtualBox vốn được build cho bản cũ sẽ không còn tương thích. Nếu không được biên dịch lại, chúng sẽ ngừng hoạt động ngay lập tức.
Để xử lý phiền toái này, chúng ta có hai lựa chọn: DKMS và akmods. Trong bài này, mình sẽ hướng dẫn bạn cách dùng akmods — giải pháp được coi là “kỹ sư biên chế” của hệ sinh thái Fedora.
Tại sao Driver lại “văng” ra sau khi update?
Kernel Linux quản lý giao tiếp giữa phần cứng và phần mềm. Các driver không nằm trong mã nguồn gốc của Kernel được biên dịch thành các file .ko (Kernel Object).
Các file này gắn chặt với một phiên bản Kernel cụ thể qua Kernel ABI (Application Binary Interface). Chẳng hạn, khi bạn nâng cấp từ Kernel 6.7 lên 6.8, cấu trúc ABI thay đổi. Kernel 6.8 sẽ từ chối nạp các file .ko cũ vì lo ngại gây crash hệ thống. Đây chính là lúc driver của bạn chính thức bị hỏng.
AKMODS vs DKMS: Đâu là sự khác biệt?
Cả hai đều tự động biên dịch lại module, nhưng triết lý vận hành lại rất khác nhau.
1. DKMS (Dynamic Kernel Module Support)
Phổ biến trên Ubuntu/Debian, DKMS biên dịch trực tiếp mã nguồn driver rồi đẩy file .ko vào thư mục hệ thống. Tuy nhiên, vì không thông qua trình quản lý gói DNF, đôi khi nó để lại các file rác hoặc gây xung đột khi bạn muốn gỡ cài đặt hoàn toàn.
2. AKMODS (Akmod Management System)
Đây là đặc sản của Fedora và RPM Fusion. Thay vì chỉ copy file, akmods thực hiện quy trình bài bản hơn: Nó lấy mã nguồn, đóng gói thành một file RPM hoàn chỉnh, rồi mới cài đặt vào máy qua DNF. Cách làm này giúp driver được quản lý như một phần mềm chính thống, cực kỳ sạch sẽ và dễ dàng rollback.
Cách cài đặt và cấu hình akmods
Để akmods làm việc, máy bạn cần có bộ công cụ biên dịch và các file header của Kernel. Quá trình này khá nhanh và ít khi gặp lỗi.
Bước 1: Cài đặt công cụ nền tảng
Mở terminal và dán lệnh sau để cài đặt akmods cùng các gói phụ thuộc:
sudo dnf install akmods kernel-devel kernel-headers gcc make elfutils-libelf-devel
Mẹo nhỏ: Gói kernel-devel phải khớp chính xác với bản Kernel bạn đang chạy. Nếu bạn vừa update mà chưa reboot, hãy khởi động lại máy trước khi chạy lệnh này.
Bước 2: Kích hoạt dịch vụ
Hãy đảm bảo dịch vụ akmods luôn sẵn sàng bằng lệnh:
sudo systemctl enable --now akmods
Thực chiến: Cài Driver Nvidia bằng akmod
Thay vì tải file .run từ web Nvidia (vốn rất dễ làm hỏng hệ thống khi update), bạn nên dùng akmod từ repo RPM Fusion. Sau khi bật repo Non-free, hãy chạy:
sudo dnf install akmod-nvidia
Lúc này, akmods sẽ âm thầm biên dịch gói kmod-nvidia ở background. Trên một CPU tầm trung như Ryzen 5, quá trình này mất khoảng 2-4 phút. Bạn sẽ thấy CPU load tăng cao trong chốc lát, đó là dấu hiệu tốt cho thấy driver đang được chuẩn bị.
Xử lý sự cố: Khi akmods không tự chạy
Nếu chẳng may máy mất điện giữa chừng hoặc ổ cứng bị đầy, akmods có thể không kịp build module. Đừng quá lo lắng, bạn có thể ép hệ thống làm việc thủ công.
Ép biên dịch lại tất cả module
Lệnh này sẽ quét toàn bộ các gói akmod và build lại những bản còn thiếu cho Kernel hiện tại:
sudo akmods --force
Kiểm tra log lỗi
Nếu lệnh trên thất bại, hãy tìm nguyên nhân trong thư mục log:
ls /var/cache/akmods/
Mỗi lần build sẽ có một file .log riêng. Thông thường, lỗi hay gặp nhất là do thiếu thư viện hoặc phiên bản driver quá cũ chưa hỗ trợ Kernel mới ra mắt.
3 quy tắc “vàng” để hệ thống luôn ổn định
Kinh nghiệm của mình để tránh việc phải sửa lỗi driver vào sáng thứ Hai đầu tuần:
- Dọn dẹp ổ cứng: Quá trình build cần khoảng 1GB trống trong
/var. Nếu ổ cứng báo đỏ, akmods chắc chắn sẽ fail. - Kiên nhẫn sau khi update: Đừng vội bấm Restart ngay khi DNF báo xong. Hãy đợi khoảng 1 phút để akmods bắt đầu tiến trình đóng gói RPM ở background.
- Tận dụng menu GRUB: Fedora luôn giữ lại 3 bản Kernel cũ. Nếu bản mới nhất bị lỗi, hãy bình tĩnh chọn bản cũ hơn để vào làm việc, sau đó đợi vài ngày để cộng đồng cập nhật code driver mới.
Lời kết
Akmods không chỉ là một công cụ, nó là cách tiếp cận chuyên nghiệp để quản lý Linux. Nếu bạn đang dùng Nvidia hoặc VirtualBox trên Fedora, hãy chuyển sang akmod ngay. Nó giúp bạn tận hưởng những công nghệ mới nhất của Kernel mà không phải lo lắng về việc hỏng driver giữa chừng.

