GRUB2 có thể chia sẻ phân vùng hệ thống EFI với Windows không?


30

Tôi có bản cài đặt Windows 7 GPT hiện có, đã có phân vùng Hệ thống EFI.

Bây giờ tôi đang cố gắng cài đặt Linux trên một đĩa cứng riêng, cũng là định dạng GPT. Tôi không tìm thấy bất kỳ cách làm việc nào để khởi động grub mà không có phân vùng hệ thống EFI, vì vậy câu hỏi của tôi là:

Có thể cho grub2 sử dụng cùng phân vùng Hệ thống EFI như các cửa sổ không? Làm thế nào để tôi nói với grub2 để sử dụng nó?

Để làm rõ thiết lập của tôi:

gpt /dev/sda:
    1 EFI System partition created by windows (100MB)
    2 "Microsoft reserved partition" (200MB)
    3 Windows root (rest of disk)

gpt /dev/sdb:
    # After answering my own question: this partition is not needed
    1 boot partition containing grub, kernels etc.(32MB)
    2 crypto LVM partition (rest of disk)

Tôi muốn grub2 sử dụng /dev/sda1phân vùng EFI hiện có .

PS: Mainboard của tôi có khả năng EFI.

Câu trả lời:


22

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 đó fatpart_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:


Đối với tôi (Fedora24) tôi đặt các cửa sổ 10 phân vùng efi tại mount /dev/sdXX /boot/efi, sau đó theo sau này và ran bcdedit /set {bootmgr} path \EFI\fedora\shim.efitừ cửa sổ để bootstrap EFI.
jozxyqk
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.