GRUB2 能否與 Windows 共享 EFI 系統分區?
我有一個現有的 Windows 7 GPT 安裝,它已經有一個 EFI 系統分區。
我現在正試圖在一個單獨的硬碟上安裝 Linux,它也是 GPT 格式的。在沒有 EFI 系統分區的情況下,我沒有找到任何工作方式來啟動 grub,所以我的問題是:
grub2 是否可以使用與 windows 相同的 EFI 系統分區?我如何告訴 grub2 使用它?
為了澄清我的設置:
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)
我希望 grub2 使用現有的
/dev/sda1
EFI 分區。PS:我的主機板支持EFI。
經過一天的研究,我現在可以回答我自己的問題:是的,這是可能的,您甚至可以將該分區用作 /boot 並儲存您的 kernels/initramfs/etc。那裡。
要求:
- Grub >= 2.00(1.98 和 1.99 不起作用)
- Grub 必須從 Linux 核心安裝,該核心支持 EFI 變數(
CONFIG_EFI_VARS
編譯為模組或編譯為模組efivars
)- 要創建 EFI 引導條目,您將需要
efibootmgr
設置:
首先將你的 EFI 分區掛載到 /boot
mount /dev/sdX1 /boot
如果您查看掛載條目,您會發現它只是一個 FAT(32) 分區。你應該在
/boot
下面找到一個目錄efi
。grub 會呼叫,如果它沒有編譯到核心中
efibootmgr
,你應該載入:evivars
modprobe efivars
現在你可以安裝 grub:
# Replace x86_64 with i386 for 32 bit installations grub2-install --target=x86_64-efi
Grub 像往常一樣將其文件安裝到
/boot/grub2
. 如果一切正常,您現在應該還有一個文件夾/boot/efi/grub2
或/boot/efi/<name_of_your_distro>
.--bootloader-id=insert_name_here
您還可以自己指定文件夾的名稱。Grub
efibootmgr
自動呼叫並在 EFI 引導菜單中創建一個具有該名稱的引導條目(在我的情況下,這意味著它在 EFI 菜單中顯示為可引導設備,不確定每個 EFI 板上是否都是這種情況)進一步的設置與通常的 grub2 設置沒有區別,
grub2-mkconfig
它將為 EFI 添加適當的模組到您的grub.cfg
.鍊式載入視窗:
當我要求使用 Windows 進行雙啟動時,我將包含用於鍊式載入的 grub 配置:
在 EFI 上鍊式載入 Windows 安裝與在 MBR 磁碟上的安裝略有不同。您不需要
ntfs
orpart_mbr
模組,而是需要fat
和part_gpt
。此外,不需要設置 root,此資訊由 Windows 自己的啟動管理器儲存。而是指定
search
命令。它所需的參數可以通過以下方式確定grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
這將為您提供指定 EFI 分區位置的搜尋參數,它應該類似於:
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
chainloader
您需要在 EFI 分區中設置 Windows 的 EFI 載入程序的路徑,而不是告訴要讀取的扇區數。這對於所有 Windows EFI 安裝都是相同的。結果條目應如下所示: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 }
**資料來源:**這些涵蓋了更多情況,如果您想從 EFI 啟動,它們值得一讀: