ติดตั้ง grub2:“ ฉลากพาร์ติชั่น GPT นี้ไม่มี BIOS Boot Partition”


41

ดูเหมือนจะมีการพูดคุยกันเล็กน้อยเกี่ยวกับเรื่องนี้ แต่ฉันไม่สามารถหาคำตอบง่ายๆ

เมื่อฉันพยายามติดตั้ง grub2 ฉันได้รับข้อผิดพลาดนี้:

# 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.

นี่คือเค้าโครงของ / 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)

มีวิธีง่ายๆที่ฉันสามารถแก้ไขปัญหานี้ได้หรือไม่? ฉันเข้าใจว่าฉันต้องสร้างพาร์ติชันเล็ก ๆ ที่จุดเริ่มต้นของดิสก์เป็น "BIOS Boot Partition" ฉันคิดว่าหนึ่งตัวเลือกจะย้าย swap ไปที่ / dev / sda4 เป็นโลจิคัลวอลุ่มและใช้ / dev / sda2 เป็น / boot

อีกวิธีหนึ่งที่ฉันสามารถกลับไปที่ด้วงมรดกและไม่ต้องกังวลเกี่ยวกับเรื่องนั้น (มีประโยชน์จริง ๆ ในการอัพเกรดเป็น grub2 ถ้ามันทำให้เกิดปัญหามากนี้หรือไม่)

คิด?

คำตอบ:


23

คุณควรตรวจสอบก่อนว่าคุณต้องการใช้การบูต BIOS / CSM / โหมดดั้งเดิมหรือการบูตโหมด EFI / UEFI อดีตคือวิธีที่พีซีเริ่มบูทมาตั้งแต่ปี 1980 แต่เป็นระบบที่น่าเกลียดและแฮ็คที่จะไปสู่โดโดก่อนที่จะนานเกินไป Windows เชื่อมโยงการบูทโหมด BIOS เข้ากับตารางพาร์ติชัน MBR ซึ่งคุณไม่ได้ใช้ (แต่ทำได้เพราะดิสก์ของคุณไม่มีขนาดใหญ่พอที่จะต้องใช้ GPT) Linux, FreeBSD และ OS อื่น ๆ ส่วนใหญ่มีความยืดหยุ่นมากกว่าและสนับสนุนการบูทโหมด BIOS จาก GPT; แต่บางครั้งก็มีภาวะแทรกซ้อนที่สร้างขึ้นจากเฟิร์มแวร์และแน่นอนว่าหากคุณตัดสินใจติดตั้ง Windows ในภายหลังในการตั้งค่าดูอัลบูตคุณจะต้องทำการเปลี่ยนแปลงหรือยอมความ

การบูตโหมด EFI / UEFI น้อยกว่าการแฮ็ก แต่การใช้งาน EFI นั้นแตกต่างกันอย่างมากในด้านคุณภาพและระดับความเชี่ยวชาญและการสนับสนุนโดยรวมบนเว็บสำหรับ EFI นั้นต่ำกว่าสำหรับ BIOS Windows จะใช้ GPT กับการบูทโหมด EFI ดังนั้นหากคุณคาดหวังว่าจะติดตั้ง Windows บนคอมพิวเตอร์ของคุณ EFI นั้นเป็นวิธีการที่แน่นอน คอมพิวเตอร์รุ่นเก่านั้นเป็น BIOS เท่านั้น EFI เริ่มเข้าสู่ตลาดกลางปี ​​2554 ดังนั้นหากคอมพิวเตอร์ของคุณเก่ากว่านั้นคุณอาจไม่สามารถใช้ EFI ได้

หากคุณไปกับการบูตในโหมด BIOS คุณควรสร้างพาร์ติชั่นการบู๊ต BIOSบนดิสก์ มีที่ว่างพอสำหรับการเริ่มต้นดิสก์สำหรับพาร์ติชันนี้ แต่คุณจะต้องตั้งค่าการจัดแนวเซกเตอร์ของคุณเป็น 1 (จาก 2048 ปกติ) เพื่อให้การทำงานนี้ ผมไม่ทราบว่าเฉพาะหน้าว่านี้สามารถทำได้ด้วยแต่คุณสามารถทำมันได้ด้วยparted gdisk(โปรดทราบว่าพื้นที่เริ่มต้นของดิสก์ของคุณอยู่ภายใต้ขนาด 1MiB ที่แนะนำสำหรับพาร์ติชั่นการบูตไบออส แต่เพียงไม่กี่เซกเตอร์มันอาจทำงานได้ดี แต่อาจล้มเหลวในอนาคตในอนาคต) คุณสามารถลดขนาดพาร์ติชันของคุณได้ 1-2MiB เพื่อให้มีที่ว่างสำหรับพาร์ติชั่นการบู๊ต BIOS พาร์ติชั่นนี้ไม่จำเป็นต้องเป็นพาร์ติชั่นแรกของดิสก์, ถึงแม้ว่ามันจะเป็นตำแหน่งทั่วไปก็ตาม

ถ้าคุณไปกับการบูทโหมด EFI / UEFI คุณต้องสร้างพาร์ติชันระบบ EFI (ESP) พาร์ติชันนี้ต้องมีการจัดรูปแบบ FAT และต้องมีขนาดใหญ่กว่าพาร์ติชั่นบู๊ต BIOS อย่างมากดังนั้นคุณจะต้องปรับขนาดบางอย่างเพื่อสร้าง ฉันแนะนำขนาด 550MiB ถึงแม้ว่าหนึ่งในสิบของมันอาจใช้งานได้ดี

ในการติดตั้งด้วงคุณต้องแน่ใจก่อนว่าได้ติดตั้งแพ็คเกจด้วงที่ถูกต้อง ฉันไม่แน่ใจในการตั้งชื่อในดิสทริบิวชันทั้งหมด แต่ใน Ubuntu มันจะใช้grub-pcสำหรับ BIOS / CSM / โหมดดั้งเดิมและโหมดgrub-efi-amd64EFI / UEFI การติดตั้งโหมด EFI นั้นจะต้องทำการบูทสิ่งที่คุณกำลังใช้เพื่อติดตั้ง GRUB (ซีดี / USB สด, สมมุติ) ในโหมด EFI การทำเช่นนี้อาจต้องการการใช้ตัวจัดการการบูตในคอมพิวเตอร์ของคุณซึ่งโดยทั่วไปจะเข้าถึงได้ผ่านปุ่มฟังก์ชั่น แต่รายละเอียดจะแตกต่างกันไปตามคอมพิวเตอร์เครื่องหนึ่ง


ขอบคุณสำหรับคำตอบที่เป็นประโยชน์ของคุณ ฉันได้สิ่งต่าง ๆ ที่ทำงานบนเครื่องเสมือนด้วยความยุ่งเหยิง เมื่อฉันพยายามที่จะทำเช่นนี้ใน "การผลิต" ของฉันเครื่อง (ซึ่งมีฮาร์ดไดรฟ์สอง) ฉันมีจำนวนของปัญหา: จะช่วยให้grub2-install grub-setup=/bin/true /dev/sda grub2-install: error: More than one install device?.บน VM ที่ใช้งานของฉันเซกเตอร์เริ่มต้นถูกทำเครื่องหมายเป็น 32 แต่บนเครื่องผลิตของมันในปี 2048 ไม่ทราบว่าสิ่งนี้เกี่ยวข้องหรือไม่
Robert S

ตามที่โฟลแนะนำในคำตอบเขาจะต้องตั้งค่าประเภทพาร์ติชันของพาร์ติชั่นการบูตไบออสเป็น 0x04 นั่นคือ "การบูท BIOS" มิฉะนั้นด้วงจะไม่สามารถติดตั้งได้ ตัวอย่างนี้สามารถตั้งค่าด้วยคำสั่ง "t" ของ fdisk
user1225999

มีวิธีที่จะทำให้ด้วง 2 ติดตั้งโดยไม่ต้องบูตพาร์ทิชันไบออสหรือไม่? ฉันแค่ต้องการใช้ UEFI
CMCDragonkai

1
ในการติดตั้งโหมด EFI, GRUB 2 ไม่ได้ใช้พาร์ติชันสำหรับบูต BIOS หาก GRUB ขอรหัสผ่านแสดงว่ามีโอกาสที่คุณจะบูตในโหมด BIOS ไม่ใช่ในโหมด EFI ตรวจสอบตัวเลือกการบูตของคุณเพื่อให้แน่ใจว่า CSM ของคุณถูกปิดการใช้งานตามที่อธิบายไว้ในหน้าเว็บของฉันในหัวข้อ: rodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html
Rod Smith

6

หากคุณต้องการที่จะใช้พาร์ทิชัน GPT กับแบบเก่าโหมดบูตไบออสแล้วคุณจะต้องสร้างพาร์ทิชัน BIOS ไม่กี่เมกะไบต์ (16MiB ควรจะปรับและหลักฐานในอนาคต) grub-installบนอุปกรณ์ที่คุณต้องการติดตั้งด้วงกับ

ใช้เช่นfdiskเพื่อสร้างพาร์ทิชันประเภท "BIOS boot" ที่ใดที่หนึ่งบนดิสก์ของคุณ ตัวอย่างผลลัพธ์:

# 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

พาร์ติชันสำหรับเริ่มระบบจะต้องมีการจัดรูปแบบ fat32 เพื่อให้สามารถใช้งานได้

mkfs.vfat -F32 /dev/sdXY

ควรแก้ไขให้คุณเอง

นอกจากนี้ยังต้องตั้งค่าสถานะการบูตในแยก:

set 1 boot on
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.