Lỗi error: start_image() returned 0x8000000000000001 khi boot hệ điều hành trong Ubuntu

Lỗi error: start_image() returned 0x8000000000000001 (tương đương mã HEX với EFI_LOAD_ERROR trong chuẩn UEFI) cùng với thông báo Failed to boot both default and fallback entries cho thấy GRUB bootloader không thể tải image của kernel (file vmlinuz) hoặc initramfs vào bộ nhớ để khởi động.

Lỗi này thường xuất phát từ hai nguyên nhân chính:

File kernel bị lỗi hoặc rỗng: Thường xảy ra do phân vùng /boot bị đầy 100% dung lượng ngay giữa lúc hệ thống đang cập nhật (apt upgrade), dẫn đến kernel image không được ghi hoàn tất.

Xung đột Secure Boot: Chữ ký số của kernel hoặc các module bên thứ ba (như driver Nvidia, VirtualBox) không được UEFI chấp nhận.

Dưới đây là 1 số các phương pháp xử lý:

1. Khởi động bằng Kernel cũ

Nếu vừa mới cập nhật hệ thống và gặp lỗi, khả năng cao là file kernel mới nhất bị hỏng. Có thể ép hệ thống boot bằng kernel cũ vẫn còn hoạt động.

+ Khởi động lại máy. Ngay khi logo hãng máy tính xuất hiện, nhấn giữ phím Shift hoặc ấn liên tục phím Esc để ép menu GRUB hiện lên.

+ Dùng phím mũi tên chọn Advanced options for Ubuntu và nhấn Enter.

+ Ta sẽ thấy danh sách các kernel. Hãy chọn một phiên bản kernel cũ hơn (ưu tiên dòng không có chữ recovery mode) và nhấn Enter.

+ Cách khắc phục triệt để nếu đã boot xong: Mở Terminal và chạy các lệnh sau để dọn dẹp phân vùng boot và cài lại kernel chuẩn:
        sudo apt autoremove --purge
        sudo apt --reinstall install linux-image-generic linux-headers-generic
        sudo update-grub

2. Tắt Secure Boot trong BIOS/UEFI

Nếu lỗi liên quan đến việc UEFI từ chối nạp kernel do sai lệch chữ ký số, việc tạm thời vô hiệu hóa Secure Boot sẽ giúp máy tính khởi động lại.
+ Khởi động lại máy, nhấn phím tắt để vào BIOS/UEFI (thường là F2, F12, Del, hoặc F10 tùy hãng).
+ Tìm mục Secure Boot (thường nằm trong tab Security, Boot, hoặc Authentication).
+ Chuyển trạng thái của Secure Boot sang Disabled.
+ Lưu thiết lập (thường là F10) và khởi động lại.

3.  Sửa lỗi qua Live USB (Chroot)

Nếu cả hai cách trên không có tác dụng (file boot đã hỏng), ta sẽ cần sử dụng một USB cài đặt Ubuntu (Live USB) để "vào trong" hệ thống và sửa chữa.

Bước 1: Cắm Live USB, khởi động máy tính từ USB và chọn Try Ubuntu (không chọn Install).

Bước 2: Mở Terminal và xác định phân vùng chứa hệ điều hành: sudo fdisk -l

Giả sử /dev/sda2 là phân vùng root (/) chứa Linux và /dev/sda1 là phân vùng EFI. Vì toàn bộ tiến trình nạp kernel, cấu hình GRUB và khởi động hệ thống chỉ diễn ra trên phân vùng Root (/) và phân vùng EFI (/boot/efi). Hệ thống gặp lỗi trước cả khi tiến trình mount ổ đĩa khác được gọi nên quy trình chroot để sửa lỗi boot sẽ diễn ra trên 2 phân vùng root (/) chứa Linux và /dev/sda1 là phân vùng EFI.

Bước 3: Mount các phân vùng để tiến hành chroot (giành quyền điều khiển hệ thống gốc):

        sudo mount /dev/sda2 /mnt
        sudo mount /dev/sda1 /mnt/boot/efi
        for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
        sudo chroot /mnt
Lưu ý: Nếu hệ thống có phân vùng /boot tách biệt, ta sẽ mount nó vào /mnt/boot trước khi mount phân vùng EFI.

Bước 4: Kiểm tra dung lượng ổ cứng. Nếu phân vùng boot hoặc root báo Use 100%, ta sẽ xóa bớt các file cũ để có không gian làm việc: df -h

Nếu hệ thống báo lỗi do phân vùng bị đầy (100%), ta có thể dọn dẹp các kernel cũ bị lỗi bằng lệnh: apt-get autoremove --purge

Bước 5: Build lại initramfs và cập nhật cấu hình GRUB, sau đó khởi động lại:

        update-initramfs -u -k all
        update-grub
        exit
        sudo reboot