Hầu hết các bản phân phối đều cài đặt bộ tải khởi động bổ sung trên hệ thống UEFI. Bản thân UEFI là một bộ tải khởi động, nó cung cấp một menu để chọn các hệ điều hành khác nhau hoặc các hạt nhân riêng lẻ. Hơn nữa, các cài đặt UEFI có thể dễ dàng được thay đổi bằng các công cụ không gian người dùng như efibootmgr
.
Kernels kể từ 3.3 hỗ trợ EFI_STUB, có nghĩa là hạt nhân có thể được tải trực tiếp từ UEFI. Lý do phân phối quyết định sử dụng bộ tải khởi động bổ sung là gì? Hầu hết các hướng dẫn về Linux / UEFI tập trung chủ yếu vào cách thiết lập trình tải khởi động bổ sung (rEFInd, grub2, ELILO, v.v.) thay vì khởi động Linux bằng EFI_STUB.
Điều duy nhất còn thiếu trong các bản phân phối là hỗ trợ. Vì hầu hết các bản phân phối đều có bộ tải khởi động thứ hai, nên kernel không được thêm vào menu khởi động UEFI và cũng không được sao chép vào phân vùng hệ thống EFI.
Ba kịch bản là đủ để làm tất cả các phép thuật. Một trong đó sao chép các initramfs vào ESP. Một cái thứ hai sao chép kernel vào ESP và tạo một mục mới trong menu khởi động UEFI. Kịch bản thứ ba loại bỏ kernel cũ và initramfs khỏi ESP và xóa mục nhập menu khởi động UEFI. Điều này cho phép cập nhật / thanh lọc kernel / initramfs hoàn toàn tự động mà không cần tương tác của người dùng. Tôi đang sử dụng phương pháp này từ hơn một năm nay và nó đã hoạt động hoàn hảo.
Tại sao hầu hết các bản phân phối sử dụng grub thay vì EFI_STUB?
Liên kết:
EDIT: Tôi không nói về việc loại bỏ hoàn toàn hỗ trợ grub mà là đưa ra lựa chọn cho những người muốn sử dụng nó vì nhiều lý do. Các bản phân phối có thể cung cấp một gói grub-efi
cho những ai muốn xâu chuỗi UEFI và grub và một gói efistub-boot
chứa các tập lệnh mà tôi đã đề cập ở trên.