grub2-install: Nhãn phân vùng GPT này không chứa phân vùng khởi động BIOS


41

Dường như có khá nhiều cuộc thảo luận về điều này nhưng tôi không thể tìm thấy một câu trả lời đơn giản.

Khi tôi cố gắng cài đặt grub2, tôi gặp lỗi này:

# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.

Đây là cách bố trí của / dev / sda:

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 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: 7ECE06D0-9F0C-44FF-BCFB-142283172CCA

Device        Start       End   Sectors  Size Type
/dev/sda1      2048    411647    409600  200M Linux filesystem (/boot)
/dev/sda2    411648   4605951   4194304    2G Linux swap
/dev/sda3   4605952  46548991  41943040   20G Linux filesystem (/)
/dev/sda4  46548992 234441614 187892623 89.6G Linux LVM (/var)

Có một cách đơn giản mà tôi có thể giải quyết vấn đề này? Tôi hiểu rằng tôi cần tạo một phân vùng nhỏ ở đầu đĩa dưới dạng "Phân vùng khởi động BIOS". Tôi cho rằng một tùy chọn sẽ là di chuyển hoán đổi sang / dev / sda4 dưới dạng một khối hợp lý và sử dụng / dev / sda2 làm / boot.

Ngoài ra, tôi chỉ có thể quay lại di sản grub và không lo lắng về điều đó (có thực sự có lợi thế để nâng cấp lên grub2 nếu nó gây ra nhiều rắc rối không?).

Suy nghĩ?

Câu trả lời:


23

Trước tiên, bạn nên xác định xem bạn muốn sử dụng khởi động chế độ BIOS / CSM / kế thừa hay khởi động chế độ EFI / UEFI. Trước đây là cách mà PC đã khởi động từ những năm 1980, nhưng đó là một hệ thống xấu xí và hackish sẽ đi theo con đường của dodo trước đó quá lâu. Windows liên kết việc khởi động chế độ BIOS với bảng phân vùng MBR mà bạn không sử dụng (nhưng có thể; đĩa của bạn không đủ lớn để yêu cầu GPT). Linux, FreeBSD và hầu hết các HĐH hiện đại khác linh hoạt hơn và hỗ trợ khởi động chế độ BIOS từ GPT; nhưng đôi khi có những sự phức tạp do phần sụn tạo ra và tất nhiên nếu sau này bạn quyết định cài đặt Windows trong thiết lập khởi động kép, bạn sẽ cần phải thay đổi hoặc thỏa hiệp.

Khởi động chế độ EFI / UEFI ít bị hack hơn; nhưng việc triển khai EFI khác nhau rất nhiều về chất lượng và mức độ chuyên môn và hỗ trợ chung trên Web cho EFI thấp hơn so với BIOS. Các mối quan hệ của Windows sử dụng khả năng khởi động từ chế độ GPT sang EFI, vì vậy nếu bạn muốn cài đặt Windows trên máy tính của mình, EFI chắc chắn là cách tốt nhất. Các máy tính cũ chỉ có BIOS. EFI bắt đầu cất cánh trên thị trường vào giữa năm 2011, vì vậy nếu máy tính của bạn cũ hơn thế, bạn có thể không sử dụng được EFI.

Nếu bạn đi với khởi động ở chế độ BIOS, bạn nên tạo Phân vùng khởi động BIOS trên đĩa. Có đủ chỗ khi bắt đầu đĩa của bạn cho phân vùng này, nhưng bạn sẽ cần đặt giá trị căn chỉnh khu vực của mình thành 1 (từ năm 2048 thông thường) để điều này hoạt động. Tôi không biết nếu điều này có thể được thực hiện parted, nhưng bạn có thể làm điều đó với gdisk. . , bạn có thể thu nhỏ bất kỳ phân vùng nào của mình bằng 1-2MiB để nhường chỗ cho Phân vùng khởi động BIOS. Phân vùng này không cần phải là phân vùng đầu tiên trên đĩa, mặc dù đó là vị trí thông thường.

Nếu bạn đi với khởi động chế độ EFI / UEFI, bạn phải tạo Phân vùng hệ thống EFI (ESP). Phân vùng này phải được định dạng FAT và phải lớn hơn đáng kể so với Phân vùng khởi động BIOS, vì vậy bạn sẽ phải thay đổi kích thước một cái gì đó để tạo ra nó. Tôi đề nghị kích thước 550MiB, mặc dù một phần mười trong số đó có thể hoạt động trong một nhúm.

Để cài đặt GRUB, trước tiên bạn nên chắc chắn rằng bạn đã cài đặt gói GRUB chính xác. Tôi không chắc chắn về việc đặt tên trong tất cả các bản phân phối, nhưng trong Ubuntu, nó sẽ grub-pcdành cho chế độ BIOS / CSM / kế thừa và grub-efi-amd64cho chế độ EFI / UEFI. Cài đặt chế độ EFI cũng sẽ yêu cầu khởi động bất cứ thứ gì bạn đang sử dụng để cài đặt GRUB (có thể là CD / USB trực tiếp) ở chế độ EFI. Làm điều này có thể yêu cầu sử dụng trình quản lý khởi động tích hợp trong máy tính của bạn, thường được truy cập thông qua phím chức năng, nhưng các chi tiết khác nhau giữa máy tính này với máy tính khác.


Cảm ơn câu trả lời rất hữu ích của bạn. Tôi đã có những thứ làm việc trên một máy ảo với một chút lộn xộn. Khi tôi cố gắng làm điều này trên máy "sản xuất" của mình (có hai ổ cứng), tôi gặp một số vấn đề: grub2-install grub-setup=/bin/true /dev/sdacho grub2-install: error: More than one install device?.. Trên máy ảo hoạt động của tôi, khu vực bắt đầu được đánh dấu là 32, nhưng trên máy sản xuất là năm 2048. Không biết điều này có liên quan hay không.
Robert S

Như Flow gợi ý trong câu trả lời của anh ấy, loại phân vùng của Phân vùng khởi động BIOS phải được đặt thành 0x04, đó là "BIOS boot" nếu không grub không cài đặt được. Điều này có thể được đặt ví dụ với lệnh "t" của fdisk.
dùng1225999

Có cách nào để cài đặt grub 2 mà không cần phân vùng khởi động bios không? Tôi chỉ muốn sử dụng UEFI.
CMCDragonkai

1
Trong cài đặt chế độ EFI, GRUB 2 không sử dụng Phân vùng khởi động BIOS. Nếu GRUB đang yêu cầu một cái, thì rất có thể bạn đã khởi động ở chế độ BIOS, không phải ở chế độ EFI. Kiểm tra các tùy chọn khởi động của bạn để chắc chắn rằng CSM của bạn đã bị vô hiệu hóa, như được mô tả trên trang Web của tôi về chủ đề: Rodbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Rod Smith

6

Nếu bạn muốn sử dụng phân vùng GPT với chế độ khởi động BIOS kiểu cũ, thì bạn cần tạo phân vùng BIOS có dung lượng vài megabyte (16MiB sẽ ổn và bằng chứng trong tương lai) trên thiết bị bạn muốn cài đặt grub grub-install.

Sử dụng, ví dụ fdiskđể tạo phân vùng kiểu "BIOS boot" ở đâu đó trên đĩa của bạn. Ví dụ đầu ra:

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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: 57E16A16-36B4-4445-A216-031EF6501415

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    4196351    4194304     2G Linux RAID
/dev/sda2   4196352   35653631   31457280    15G Linux RAID
/dev/sda3  35653632   37750783    2097152     1G Linux swap
/dev/sda4  37750784   37816319      65536    32M BIOS boot
/dev/sda5  37816320 1953525134 1915708815 913.5G Linux LVM

3

Phân vùng khởi động phải được định dạng fat32, để nó hoạt động

mkfs.vfat -F32 /dev/sdXY

Nên sửa nó cho bạn

Ngoài ra, cờ khởi động phải được chia ra:

set 1 boot on
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.