Làm thế nào để trình tải efi grub tìm đúng thư mục grub.cfg và boot?


9

Theo tôi hiểu, bios uefi tải grub.efi từ phân vùng efi. Bây giờ tải một loạt các mô-đun grub và tệp cấu hình từ thư mục / boot.

Nhưng làm thế nào để grub tìm đúng thiết bị trong đó phân vùng khởi động nằm? Trong di sản grub, bạn thường cài đặt grub vào một phân vùng cụ thể, sử dụng

# grub-install --root-directory=/dev/sda

Vì vậy, nó khá rõ ràng nơi nó sẽ tìm thư mục khởi động. Làm thế nào để grub-efi tìm ra thiết bị chính xác?


Theo tôi hiểu, cấu hình cho vị trí của kernel nằm trong phân vùng efi.
Joe

Rõ ràng thông tin phải có trong phân vùng efi, nhưng bạn không bao giờ thực sự chỉ định nó tại bất kỳ thời điểm nào (như bạn đã từng phải) khi cài đặt grub.
dùng128063

trong tệp .efi được tạo khi bạn chạy grub-efi
Joe

Câu trả lời:


9

Sau khi sử dụng ghex để kiểm tra tệp "BOOTX64.EFI" của tôi trong phân vùng efi, tôi tìm thấy dòng này.

search.fs_uuid a43d1f11-6ebe-477d-8be3-321a33bc37f9 root hd2,gpt4 
set prefix=($root)'/boot/grub'

Điều này cho thấy thông tin về vị trí của grub (phân vùng khởi động) đã được nhúng bởi grub2-install vào tệp BOOTX64.EFI được tạo cho hệ thống.

Grub2 sau đó được trình tải EFI thực thi và bạn có giao diện grub để chọn hệ điều hành (kernel) để khởi động hoặc kernel mặc định được tải.

Chỉ cần mở rộng một chút: các tệp ".EFI" là loại ứng dụng giống như hệ thống con UEFI có thể thực thi. Dự định sẽ được sử dụng để khởi động cả hệ thống và cung cấp một nơi thuận tiện để chạy các chương trình bảo vệ thực thi và chống vi-rút.

Họ đặt khả năng mở rộng trong "Giao diện phần mềm mở rộng hợp nhất"


Sẽ rất thú vị nếu bạn có thể vá tệp này và thay đổi cấu hình của mình và vẫn khởi động mà không cần cài đặt lại Grub
Joe

Thật lạ, tôi không thể tìm thấy nó. Thư mục efi ubfox của tôi có một grub.cfg (trong ascii) với tiền tố và thông tin gốc bên trong id. Nhưng thư mục efi archlinux của tôi chỉ đơn giản là có một grubx64.efi không có dấu hiệu của các lệnh gốc và tiền tố mà bạn đã đề cập ngay cả khi tôi đọc chúng trong ghex.
dùng128063

Không có trong ubfox.efi hãy tìm boot.efi. phân vùng efi có một thư mục. Được gọi là efi và trong đó một thư mục gọi là boot.
Joe

Thư mục efi có một số nhị phân efi, một cho windows, một cho Ubuntu và vv. Tên của tệp efi không liên quan. Lý do tôi không thể tìm thấy dòng uuid là vì phân vùng gốc của tôi là phân vùng lvm. Nó lưu trữ một lvmid thay thế!
dùng128063

1
Ồ, xin lỗi tôi đã đọc sai bài viết trước của bạn. Stackexchange cắt bài đăng trước đó của bạn tại phần mà bạn mô tả hệ thống của mình. Mô tả của bạn là hình ảnh một bộ nạp khởi động (grub) (BOOTX64.EFI) khởi động hai hệ điều hành theo như tôi có thể nói. Dưới đây là một vài khả năng khác: 1) steamos cũng có thể có bộ tải khởi động riêng, nó sẽ có tệp EFI riêng trong phân vùng efi. 2) bạn có một hệ thống khởi động EFI-legacy lai, nơi bộ tải khởi động steamos của bạn được lưu trữ trong MBR. Bạn có thể thấy bootorder efi sẽ được sử dụng sudo efibootmgr -vtrên gentoo, nhưng tôi chắc chắn bạn biết điều này
user128063
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.