grub2-install: error: / boot / efi không giống như phân vùng EFI trên bản cài đặt Gentoo mới


4

Tôi cần một máy Gentoo 13 để kiểm tra một số phần mềm trên nền tảng. Tôi không phải là người Gentoo thường xuyên, vì vậy tôi đang chịu đựng các thủ tục cài đặt của họ. Tôi đang cấu hình bộ nạp khởi động | Cài đặt GRUB2 và không thành công với:

# grub2-install --target=x86_64-efi --efi-directory=/boot
Installing for x86_64-efi platform.
grub2-install: error: /boot doesn't look like an EFI partition.

Tôi quay lại để chuẩn bị các đĩa | Mặc định: Sử dụng parted để phân vùng đĩa và nó xuất hiện Tôi có những thứ thiết lập theo hướng dẫn:

(chroot) Gentoo-2012 / # parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit mb                                                          
(parted) print                                                            
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 21475MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End      Size     File system     Name    Flags
 1      1.05MB  3.15MB   2.10MB                   grub    bios_grub
 2      3.15MB  131MB    128MB    ext2            boot    boot, esp
 3      131MB   2572MB   2441MB   linux-swap(v1)  swap    msftdata
 4      2572MB  21474MB  18902MB  ext4            rootfs  msftdata

Các kết quả ở trên là từ cùng một chương của hướng dẫn, các phần Áp dụng hệ thống tệp vào phân vùngKích hoạt phân vùng trao đổi .

Tôi cũng đã theo dõi thư mục EFI bình luận không nên là / boot mà là / boot / efi từ các vấn đề và câu hỏi về Bootloader trên các diễn đàn Gentoo, nhưng nó dẫn đến cùng một lỗi:

(chroot) Gentoo-2012 / # mkdir /boot/efi
(chroot) Gentoo-2012 / # grub2-install --target=x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi
Installing for x86_64-efi platform.
grub2-install: error: /boot/efi doesn't look like an EFI partition.

Vấn đề là gì và làm cách nào để khắc phục nó?


Đây là fdiskquan điểm tương ứng của các thông tin được trình bày gpartedở trên.

(chroot) Gentoo-2012 / # fdisk -l
Disk /dev/loop0: 3.3 GiB, 3567640576 bytes, 6968048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes    

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 52F5571A-808B-XXXX-XXXX-XXXXXXXX

Device       Start      End  Sectors  Size Type
/dev/sda1     2048     6143     4096    2M BIOS boot
/dev/sda2     6144   255999   249856  122M EFI System
/dev/sda3   256000  5023743  4767744  2.3G Microsoft basic data
/dev/sda4  5023744 41940991 36917248 17.6G Microsoft basic data

Tôi cũng đã xác minh gói sys-boot/grubhỗ trợ EFI:

(chroot) Gentoo-2012 / # cat /etc/portage/make.conf | grep GRUB
GRUB_PLATFORMS="emu efi-32 efi-64 pc"

Sau đó tôi thực hiện một emerge --ask --newuse sys-boot/grub, emerge -pv sys-boot/grubvà sau đó xây dựng lại grub.


Hãy thử mkdir, sau đó khởi động lại và thực thigrub2-install --target=x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi
Joseph A.

@ bytec0de - Cảm ơn. Nếu tôi khởi động lại thì máy sẽ không khởi động được vì nó sẽ không có bộ tải khởi động. Tôi cảm thấy tốt hơn nhiều về hệ điều hành hiện tại ở trạng thái có thể tiến hành. Làm thế nào để tôi buộc đọc lại các phân vùng đĩa (đó là những gì cần phải làm)?
jww

@ bytec0de - Tôi đã thử khởi động lại, nhưng nó sẽ không khởi động lại. Thông báo lỗi là "không tìm thấy hệ điều hành" . Tôi có thể hỏi bạn ... bạn có biết vấn đề là gì không, hoặc bạn có đoán được không? Điều tốt nhất tôi có thể nói, hai ngày làm việc đáng giá đã biến mất ...
jww

Đó là một phỏng đoán có giáo dục @jww, đó là lý do tại sao tôi nhận xét.
Joseph A.

Câu trả lời:


5

Đáp án đơn giản. Phân vùng hệ thống EFI (ESP) phải là FAT32 (FAT16 hoặc thậm chí là FAT12 cũng sẽ làm cho hầu hết UEFI phù hợp; chúng hầu hết được hiển thị như vfattrong Linux) thay vì ext2:

mkfs.fat -F32 /dev/sda2

FWIW, nếu bạn không cài đặt grub i386-pc (để khởi động BIOS / CSM), bạn không cần phân vùng "BIOS boot". Nó chỉ được yêu cầu bởi grub i386-pc(nhưng không phải grub x86_64-efihoặc i386-efi) trên GPT.

Nó không thực sự quan trọng cho dù bạn sử dụng ESP cho /boot. Nếu bạn làm thế, bạn nên chạy:

grub2-install --efi-directory /boot

Nếu bạn gắn nó vào /boot/efithay thế, thì bạn nên chạy:

grub2-install --efi-directory /boot/efi

--boot-directory /bootđược ngụ ý (tức là mặc định); Không quan trọng /bootlà ESP, phân vùng riêng khác hay thư mục trên /hệ thống tập tin.

Bạn thậm chí có thể không cần phải chroot một lần nữa để thực hiện grub2-install; Ví dụ, bạn đã gắn kết sda4, phân vùng của bạn cho /, trên /mnt; VÀ THEN, được gắn kết sda2, ESP của bạn /mnt/boot/efi, sau đó bạn có thể chạy một cách đơn giản:

grub2-install --boot-directory /mnt/boot --efi-directory /mnt/boot/efi

Mặc dù grub2-mkconfigcần phải được chạy trong chroot AFAIK. Nhưng nếu bạn có kế hoạch viết một cách đơn giản và làm sạch grub.cfgbản thân thay vào đó (đó là cách duyên dáng duy nhất để sử dụng grub2), thì điều này sẽ không nằm ngoài mối quan tâm của bạn.


Cảm ơn Tom. Có vẻ như hướng dẫn của họ bị hỏng khá nhiều trong lĩnh vực này. Hãy để tôi thử một vài trong số những điều này và lấy lại cho bạn.
jww

Cảm ơn một lần nữa Tom. Tôi đã thực hiện mkfs.fat -F32 /dev/sda2. Tôi đã gắn lại mọi thứ theo hướng dẫn và tôi có thể chạy grub2-install --target=x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi/với một số cảnh báo. grub2-installhoàn thành với "Cài đặt hoàn tất. Không có lỗi báo cáo." Tuy nhiên, nó không khởi động và tạo ra lỗi "không tìm thấy hệ điều hành" . Không có gì ngạc nhiên khi những kẻ này không tạo ra một LiveCD thực hiện cài đặt. Dựa trên hướng dẫn của họ, nó không thể được thực hiện.
jww

Theo hướng dẫn? Điều đó nghĩa là gì? Nói các mountlệnh bạn đã chạy TRÊN ĐẶT HÀNG. Cũng xem xét các thông số bạn đã sử dụng, bạn đã chroot? Thông thường bạn không thể thực sự bỏ qua "cảnh báo" từ grub2-install, vì vậy vui lòng hiển thị chính xác chúng là gì.
Tom Yan

Cảm ơn một lần nữa Tom. Xin lỗi vì điều đó; Tôi nghĩ rằng bạn đã quen thuộc với các thủ tục. Các đĩa được gắn theo Chuẩn bị các đĩa | Gắn kết . Chroot được nhập theo Cài đặt hệ thống cơ sở Gentoo | Gắn các hệ thống tập tin cần thiết . Tôi đã phải Chroot vì tôi gặp lỗi mà không có nó. Lỗi là "grub2-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh không tồn tại."
jww

Đó không phải là về "thủ tục" hay liệu tôi có quen thuộc với chúng không. Đó là CÁCH BẠN gắn thiết bị CỦA BẠN. Vì vậy, bạn đã đặt hàng mount /dev/sda4 /mnt/gentoo; mount /dev/sda2 /mnt/gentoo/boot/efinày và chroot /mnt/gentoo? Một lần nữa, những cảnh báo bạn đã đề cập là gì?
Tom Yan

0

Vấn đề dường như là trộn lẫn và kết hợp BIOS, EFI, MBR và GPT. Tôi đã cố gắng làm theo các hướng dẫn và sử dụng GPT, nhưng có một số phụ thuộc mà tôi không thể giải quyết vì tôi quá thiếu kinh nghiệm. Nó thậm chí không rõ ràng đối với tôi kernel được xây dựng với sự hỗ trợ GPT (thông qua tùy chọn cấu hình CONFIG_EFI_PARTITION).

Khi tôi bỏ GPT và EFI và chuyển sang hoàn toàn BIOS và MBR, tôi đã có thể khởi động máy kết quả. BIOS và GPT được coi là một sự kết hợp hợp lệ, nhưng tôi tự hỏi liệu nó có hoạt động trong thực tế không (xem, ví dụ, Tùy chọn bộ tải khởi động ).

Đây là cấu hình tôi có thể chạy máy với:

$ parted
GNU Parted 3.2
Using /dev/sda
(parted) print                                                            
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  135MB   134MB   primary  ext2            boot
 2      135MB   19.5GB  19.3GB  primary  ext4
 3      19.5GB  21.5GB  2012MB  primary  linux-swap(v1)

Phân vùng 1 là /boot, Phân vùng 2 là /và Phân vùng 3 là swap.


Bạn thậm chí không nhất thiết cần GPT cho UEFI tuân thủ tiêu chuẩn và bạn có thể gắn kết các phân vùng trên đĩa GPT. Bạn chưa đăng ký thành công nhị phân EFI của grub trong NVRAM của UEFI, như các cảnh báo grub2-installđã nói rõ với bạn. Và bất kể lý do là gì, --removablesẽ có thể giúp bạn ra ngoài (trừ khi nó chia sẻ một ESP của Windows).
Tom Yan

@TomYan Bạn có nói rằng 'lỗi: / boot không giống phân vùng EFI.' rõ ràng đang nói với anh ta rằng anh ta thiếu một cái gì đó trong NVRAM? Bởi vì hiện tại tôi đang gặp vấn đề này trên arch linux và tôi cảm thấy nó MIGHT là do một phần khởi động WIn 7 (64-bit) tiêu chuẩn là NTFS thay vì FAT32, nhưng điều đó dường như không thể xảy ra như tôi nghĩ HAD là một loại nào đó (mặc dù có vẻ như là NTFS)
ebyrob

@wiserob lỗi khá nhiều có nghĩa là bạn đang vượt qua --efi-directory /boottrong khi bất cứ thứ gì được gắn vào /bootkhông phải là hệ thống tập tin FAT (32). Nếu bạn đã có bản cài đặt Win7, rất có thể không có khả năng khởi động UEFI, bạn có thể cài đặt grub để khởi động kế thừa / BIOS / MBR ( --target i386-pc) hoặc tự tạo phân vùng được định dạng FAT (32) làm phân vùng hệ thống EFI và cài đặt grub để khởi động UEFI. Thông báo trước cho cách tiếp cận thứ hai là bạn chỉ có thể chuyển đổi giữa Windows và Arch bằng menu khởi động UEFI chứ không phải grub. Dù sao, bạn KHÔNG nên gắn kết bất kỳ phân vùng Windows hiện có.
Tom Yan

@TomYan Win7 x64 khởi động từ phân vùng NTFS. Có lẽ do đó sự nhầm lẫn về phía tôi. Cài đặt Ubuntu hoạt động tốt (Và Debian đã hoạt động trong quá khứ). Tôi không chắc chắn Arch Linux nên khởi động như thế nào với win7 ... Tôi biết Ubuntu sử dụng khả năng khởi động UEFI, tôi nghĩ Ubuntu sử dụng GRUB, nhưng có lẽ không.
ebyrob

@itherrob Nó thực sự không liên quan gì đến distro. Bạn có thể cài đặt các biến thể khác nhau (còn gọi là mục tiêu) của grub cho chế độ khởi động khác nhau trên hầu hết UEFI ("bản địa" hoặc di sản). Biến thể bạn cài đặt xác định cách bạn đa khởi động (tức là nơi / khi bạn chọn HĐH để khởi động), vì bạn không thể thay đổi chế độ khởi động sau khi grub được tải. Đó là lý do tại sao nếu bạn cài đặt UEFI grub, bạn chỉ có thể chọn khởi động Win7 (chỉ có thể là khởi động kế thừa) với menu khởi động UEFI của bạn.
Tom Yan

0

Tôi chỉ gặp vấn đề này và thấy rằng / boot đã tồn tại nhưng không có phân vùng khởi động của tôi được gắn vào nó. Chỉ cần gắn phân vùng khởi động để sửa lỗi này

mnt /dev/sda1 /boot
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.