Làm thế nào để grub2 tìm thấy tệp cấu hình của nó trong khởi động EFI?


8

Có rất nhiều chủ đề grub2 / EFI trên mạng, nhưng tôi thấy khó tìm được câu trả lời cho câu hỏi trên. Chúng tôi đã được thông báo rằng trong grub2, tệp cấu hình là /boot/grub/grub.cfg. Nhưng khi có vấn đề khởi động, grub2 có thể kết thúc bằng dấu nhắc lệnh (hay còn gọi là shell khẩn cấp) mà không có bất kỳ thông báo lỗi nào. Vì vậy, trước khi có thể giải quyết bất kỳ vấn đề nào, thật tuyệt khi hiểu cách grub2 cố gắng xác định chính xác tệp cấu hình của nó.

Câu trả lời:


7

Điều đầu tiên để hiểu rằng không có cách cố định. grub2 có thể được cấu hình khác nhau trong quá trình cài đặt và tên grub.cfg không có cách nào được mã hóa cứng. Cách học thứ hai là không có tệp cấu hình duy nhất, ví dụ hệ thống Ubuntu của tôi tại thời điểm viết sử dụng 2 tệp khác nhau theo thứ tự, cả hai thực sự có tên là grub.cfg.

Theo mặc định, grub2 thực hiện 2 điều cần thiết khi bắt đầu:

  1. đặt biến tiền tố thành giá trị tích hợp trong quá trình cài đặt grub2
  2. tiếp tục với tệp cấu hình $ prefix / grub.cfg nếu nó tồn tại

(để biết thêm chi tiết tham khảo http://www.gnu.org/software/grub/manual/grub.html#GRUB-only-offers-a-resTHER-shell )

Điều kiện "nếu nó tồn tại" là điều khó chịu: Nếu tệp không tồn tại (ví dụ: vì tiền tố $ không trỏ đến đúng vị trí), không có thông báo lỗi nào mà nó đã cố gắng thực hiện và bạn chỉ cần kết thúc bằng dấu nhắc lệnh .

Nếu bạn kết thúc trong shell khẩn cấp, điều đầu tiên cần kiểm tra là giá trị của biến tiền tố (sử dụng lệnh set) và nội dung của thư mục đó (sử dụng lệnh ls và cat).

(Hành vi mặc định có thể được ghi đè bằng tệp cấu hình tích hợp, nhưng tôi không nghĩ rằng tôi đã thấy điều đó được sử dụng trong thực tế.)

Ubuntu đặt tiền tố ở cùng một nơi nơi grubx64.efi và shimx64.efi được sử dụng để khởi động an toàn được đặt. Vì vậy, tệp cấu hình đầu tiên grub.cfg được tải từ cùng thư mục chứa các tệp nhị phân EFI này. Từ phối cảnh Linux, đường dẫn là / boot / efi / EFI / ubfox và từ phối cảnh grub2 (hd0, gpt1) / efi / ubfox (số ổ đĩa và phân vùng có thể thay đổi tùy theo vị trí phân vùng hệ thống EFI của bạn, tên tệp trong grub2 dường như không phân biệt chữ hoa chữ thường nên EFI được hiển thị bởi Linux được hiển thị dưới dạng efi bởi grub2).

Tệp grub.cfg đầu tiên chỉ chứa 3 câu lệnh:

  1. xác định vị trí phân vùng chứa hệ thống tệp gốc bằng UUID (trong các hệ thống sử dụng hệ thống tệp khởi động riêng biệt định vị hệ thống tệp khởi động thay thế)
  2. đặt tiền tố thành giá trị mới của $ root / boot / grub (sử dụng giá trị $ root được xác định ở bước trước, đối với các hệ thống có phân vùng khởi động riêng, đây phải là $ root / grub)
  3. thực thi configfile từ vị trí $ prefix / grub.cfg

Cái sau là vị trí Linux /boot/grub/grub.cfg, mà chúng ta thường được nói.


thông tin khá tốt của nó, nhưng tại sao bạn lại đưa lên w / all jazz đó? Tại sao không chỉ gỡ cài đặt nó?
mikeerv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.