Sau một ngày nghiên cứu, bây giờ tôi có thể trả lời Câu hỏi của riêng mình: có, và thậm chí bạn có thể sử dụng phân vùng đó như / boot và lưu trữ hạt nhân / initramfs / của bạn. ở đó
Yêu cầu:
- Grub> = 2,00 (1,98 và 1,99 không hoạt động)
- Grub phải được cài đặt từ nhân Linux, có hỗ trợ các biến EFI (
CONFIG_EFI_VARSđược biên dịch trong hoặc dưới dạng mô-đun efivars)
- Để tạo mục khởi động EFI, bạn sẽ cần
efibootmgr
Thiết lập:
Trước tiên hãy gắn phân vùng EFI của bạn vào / boot
mount /dev/sdX1 /boot
Nếu bạn nhìn vào mục mount, bạn sẽ thấy, nó chỉ đơn giản là một phân vùng FAT (32). Theo /bootbạn nên tìm một thư mục efi.
Vì grub sẽ gọi efibootmgr, bạn nên tải evivars, nếu nó không được biên dịch vào kernel:
modprobe efivars
Bây giờ bạn có thể cài đặt grub:
# Replace x86_64 by i386 for 32 bit installations
grub2-install --target=x86_64-efi
Grub cài đặt các tập tin của nó như bình thường /boot/grub2. Nếu mọi thứ hoạt động chính xác, bây giờ bạn cũng nên có một thư mục /boot/efi/grub2hoặc /boot/efi/your_distros_name. Với --bootloader-id=isert_name_herebạn cũng có thể chỉ định tên cho thư mục.
Grub efibootmgrtự động gọi và tạo một mục khởi động có tên đó trong menu khởi động EFI (trong trường hợp của tôi, điều đó có nghĩa là nó hiển thị dưới dạng thiết bị có thể khởi động trong menu EFI, không chắc đây có phải là trường hợp trên mọi bảng EFI không)
Thiết lập thêm không khác với thiết lập grub2 thông thường, grub2-mkconfigsẽ thêm các mô-đun thích hợp cho EFI vào của bạn grub.cfg.
Chuỗi tải Windows:
Khi tôi yêu cầu khởi động kép với Windows, tôi sẽ bao gồm cấu hình grub để tải chuỗi:
Tải chuỗi cài đặt Windows trên EFI hơi khác so với cài đặt trên đĩa MBR. Bạn sẽ không cần ntfshoặc part_mbrcác mô-đun, thay vào đó fatvà part_gptlà cần thiết.
Ngoài ra, không cần cài đặt root, thông tin này được lưu trữ bởi trình quản lý khởi động riêng của Windows. Thay vào đó chỉ định searchlệnh. Các thông số cần thiết cho nó có thể được xác định bởi
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Điều này sẽ cung cấp cho bạn các tham số để tìm kiếm chỉ định vị trí của phân vùng EFI, nó sẽ trông giống như:
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
Thay vì cho chainloaderbiết số lượng các lĩnh vực cần đọc, bạn sẽ cần đặt đường dẫn đến trình tải EFI của Windows trong phân vùng EFI. Điều này giống nhau cho tất cả các cài đặt Windows EFI. Mục kết quả sẽ trông như thế này:
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root <insert ouput from grub-probe here>
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
Nguồn: Chúng bao gồm một số trường hợp khác, nếu bạn muốn khởi động từ EFI, chúng đáng để đọc:
mount /dev/sdXX /boot/efi, sau đó theo sau này và ranbcdedit /set {bootmgr} path \EFI\fedora\shim.efitừ cửa sổ để bootstrap EFI.