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 /boot
bạ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/grub2
hoặc /boot/efi/your_distros_name
. Với --bootloader-id=isert_name_here
bạn cũng có thể chỉ định tên cho thư mục.
Grub efibootmgr
tự độ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-mkconfig
sẽ 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 ntfs
hoặc part_mbr
các mô-đun, thay vào đó fat
và part_gpt
là 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 search
lệ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 chainloader
biế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.efi
từ cửa sổ để bootstrap EFI.