Câu hỏi Làm thế nào để kiểm tra xem GRUB có ở chế độ EFI hay BIOS không?


Có một lệnh ở vỏ grub có thể chỉ ra nếu máy đang trình bày phần mềm EFI hay BIOS không?

Tôi đang sử dụng GRUB 2.00 trên Mac Pro 2010. Máy tính này có phần vững EFI tất nhiên. Nhưng tôi đã cố gắng cho một vài ngày để có được nó để khởi động Ubuntu trong chế độ mô phỏng BIOS cho muốn của trình điều khiển hiển thị NVIDIA. Sự hiểu biết của tôi là vào thời điểm GRUB đang chạy, quyết định sử dụng mô phỏng EFI hoặc BIOS đã được thực hiện. Vậy làm thế nào tôi có thể kiểm tra từ GRUB?


1
2018-01-03 22:51


gốc




Các câu trả lời:


Kể từ GRUB 2.00, giả sử GRUB hoạt động đủ tốt để vào chế độ bình thường thay vì chế độ cứu, "echo $ grub_platform" từ trình bao GRUB sẽ hiển thị "pc" trong chế độ BIOS và "efi" ở chế độ UEFI.

Bản xây dựng BIOS tương ứng với gói grub-pc và bản dựng UEFI tương ứng với gói grub-efi-amd64 (hoặc, ít phổ biến hơn, grub-efi-ia32).


2
2018-01-04 02:32



Cảm ơn bạn. Tôi đã thử nó trực tiếp từ Live CD (trên USB) và có "efi". Đây là một chẩn đoán tốt bởi vì sự hiểu biết của tôi là Ubuntu sẽ không được nạp trong chế độ BIOS theo chỉ dẫn này. Bây giờ để tìm ra cách để có được "pc" ... Có thể có một chút lung lay phòng ở đây. Tôi thấy tài liệu cho grub_platform nói nó chỉ ra nền tảng mà GRUB đã được xây dựng. Có vẻ như những ý tưởng tương đương với tôi, nhưng tôi không phải là một chuyên gia ở đây. Tôi không nghĩ rằng "efi" xây dựng của GRUB thậm chí sẽ chạy trong chế độ BIOS, phải không? - NoahR
Chính xác; mỗi bản dựng của GRUB sử dụng các cuộc gọi chương trình cơ sở cụ thể cho loại chương trình cơ sở của nền tảng. Để khởi động một thanh USB trực tiếp ở chế độ BIOS, bạn sẽ cần phải tìm kiếm một tùy chọn mức phần mềm phù hợp; trên máy Mac, có lẽ nó có thể liên quan đến Boot Camp, nhưng đã lâu rồi kể từ khi tôi nhìn vào một trong số đó. Lưu ý rằng khi khởi động một hình ảnh Ubuntu trực tiếp (trái ngược với một hệ thống đã cài đặt) trong chế độ BIOS, bạn sẽ thực sự nhận được ISOLINUX hơn là GRUB. - Colin Watson
Làm thế nào tôi có thể sử dụng một tuyên bố nếu với điều này? Tôi đã thử if [ ${$grub_platform} == "pc" ] { ... }nhưng nó không hoạt động - nó luôn được đánh giá là đúng. - starbeamrainbowlabs
Cú pháp đó sai theo một vài cách. if [ ${grub_platform} == "pc" ]; then ...; fi có nhiều khả năng hoạt động. - Colin Watson