ทำการติดตั้ง Grub2 สองชุด


14

นี่ทำให้ฉันผิดหวังจริงๆ ฉันมี Gentoo และ Ubuntu ทั้งคู่กับ Grub2 Gentoo มี/bootพาร์ติชั่นเฉพาะขณะที่ Ubuntu ไม่มี ฉันมีmenuentryGentoo's /etc/grub.d/40_customในการบูต Ubuntu (และ Ubuntu จะบูตได้)

เพราะอูบุนตูมาพร้อมกับด้วงฉันต้องการที่จะสับเข้าไปในนั้นแทนการรักษารายการของฉันซึ่งตั้งค่ารูทเคอร์เนลเริ่มต้นและเนื้อหา นี่คือสิ่งที่ฉันมีสำหรับ chainloader (Ubuntu เปิดอยู่/dev/sda4และฉันได้ติดตั้ง Grub ไว้แล้ว):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

มันทำให้ฉันerror: Invalid signatureและฉันพบว่าไม่มีวิธีแก้ปัญหา ใครบางคนสามารถชี้ให้เห็นบางสิ่งบางอย่าง?

นี่คือผลลัพธ์ของ </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

fdisk -lนี้เป็นผลมาจากการ /dev/sda1เป็น/bootของ Gentoo, Gentoo อยู่ในอูบุนตูอยู่ใน/dev/sda2 /dev/sda4อูบุนตูก็/bootอยู่ใน/dev/sda4นั้นด้วย

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

ไม่มีข้อผิดพลาดด้วย grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.

เห็นได้ชัดว่าคุณไม่ได้ติดตั้ง bootloader /dev/sda4บน คุณมีมากกว่าหนึ่งดิสก์หรือไม่ ตารางพาร์ทิชันของคุณคืออะไร? กรุณาโพสต์การส่งออกของและข้อความจากfdisk -l grub-install /dev/sda4 --no-floppy --force
Gilles 'หยุดความชั่วร้าย'

ใช่ฉันอัปเดตคำถาม
phunehehe

คำตอบ:


4

คุณสามารถ chainload GRUB2 จาก GRUB2 ได้ฉันลองวิธีที่คุณอธิบายและใช้งานได้ อย่างไรก็ตามข้อมูลที่คุณให้ไว้ดูเหมือนว่าอิมเมจสำหรับบูตไม่ได้ฝังอยู่ใน MBR ของดิสก์ (หรือจะไม่ใช่ศูนย์ทั้งหมด)

ฉันจะลองสิ่งนี้แม้ว่าจะไม่ได้ใช้ GRUB2 จาก Ubuntu อย่างแน่นอน (แค่เป็นไฟล์กำหนดค่า) คุณสามารถสร้างรายการเมนูในไฟล์กำหนดค่า Gentoo GRUB2 ที่โหลดไฟล์กำหนดค่าของ Ubuntu ฉันเห็นสองวิธีนี้

สิ่งที่ฉันจะใช้คือคำสั่งปกติซึ่งช่วยให้คุณระบุไฟล์ปรับแต่งเพื่อโหลดสำหรับโหมดปกติ หากคุณไปเส้นทางนี้มีคำสั่งชื่อว่าnormal_exitที่คุณสามารถเพิ่มเป็นรายการที่กำหนดเองในการกำหนดค่า Ubuntu ซึ่งจะช่วยให้คุณกลับไปที่การกำหนดค่า Gentoo ของคุณ

ตัวเลือกอื่นคือคำสั่งconfigfileซึ่งให้คุณระบุไฟล์กำหนดค่าอื่นที่จะโหลด ดูเหมือนว่าจะยากที่จะ "ถอยออก" ของตัวเลือกนี้

ข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งเหล่านี้สามารถพบได้ที่นี่


3

ส่วนเริ่มต้นของกระบวนการบูตประกอบด้วยรหัสโหลดจากภาคแรกของฮาร์ดไดรฟ์ที่เรียกว่าMaster Boot Record (MBR) โดยปกติแล้ว Grub จะถูกเขียนลงในเซกเตอร์ฮาร์ดไดรฟ์ตัวแรกและไม่ใช่อยู่ในเซกเตอร์แรกของการถือครอง / บูตพาร์ติชัน อย่างไรก็ตามโดยปกติคุณสามารถเปลี่ยนแปลงสิ่งนี้ได้ในระหว่างการติดตั้ง Linux แต่ในขั้นตอนการติดตั้งสมัยใหม่มักจะถูกซ่อนอยู่

คุณบอกว่าคุณติดตั้ง Grub ไว้ใน / dev / sda4 แล้วอย่างไรก็ตามการกำหนดค่าของคุณถูกต้องและข้อความแสดงข้อผิดพลาดที่คุณโพสต์แนะนำไว้ว่า Grub อาจไม่ได้รับการติดตั้งอย่างถูกต้องในพาร์ติชันที่คุณต้องการทำการโหลด คุณควรบูทเข้าไปที่ Gentoo จากนั้นเข้าไปที่พาร์ติชั่น Ubuntu ตรวจสอบให้แน่ใจว่า / boot ชี้ไปที่ Ubuntu- / boot อย่างถูกต้องแล้วไม่ใช่ Gentoo one! ตอนนี้ติดตั้ง Grub 2 ในส่วนแรกของ Ubuntu-Partition / dev / sda4:grub-install /dev/sda4 --no-floppysda4:

เช่นเคยเมื่อเล่นซอกับ MBR และพาร์ติชันตรวจสอบให้แน่ใจว่าคุณมีการสำรองข้อมูลที่ใช้งานได้และทันสมัยก่อนที่คุณจะเริ่ม


มันจะสร้างความแตกต่างได้หรือไม่ถ้าฉันบูตเข้า Ubuntu และรันด้วง - ติดตั้ง? เพราะนั่นคือสิ่งที่ฉันทำและใช้งานไม่ได้: (
2010

ฉันคิดว่าคุณไม่สามารถบูตเข้าสู่ Ubuntu ได้เพราะ chainloading ไม่ทำงาน? แต่ไม่มันไม่ควรสร้างความแตกต่างถ้าคุณบูทเข้ากับ Ubuntu หรือ chroot
fschmitt

@phunehehe: ข้อความแสดงข้อผิดพลาดหมายความว่า Grub ไม่พบลายเซ็น bootloader ในภาคแรกของ/dev/sda4(สองไบต์สุดท้ายต้องเป็น0x55 0xaa) คุณสามารถโพสต์การส่งออกของ</dev/sda4 head -c 512 | hd?
Gilles 'หยุดความชั่วร้าย'

@Gilles: ฉันเพิ่มผลลัพธ์ให้กับคำถาม ดูไม่ถูกต้องใช่ไหม
phunehehe

จริงๆแล้วฉันต้องวิ่งgrub-install /dev/sda4 --no-floppy --forceมิฉะนั้นจะมีข้อร้องเรียนบางอย่างเกี่ยวกับบล็อกลิสต์
phunehehe

-1

sda4 จะไม่เป็น (hd0,3) ในด้วงหรือมีการเปลี่ยนแปลงใน grub2 หรือไม่?


ใช่ฉันแน่ใจว่า / dev / sda4 จะกลายเป็น (hd0,4) เพราะนั่นคือสิ่งที่ฉันได้ใช้ในการบูต Ubuntu
phunehehe

3
ใช่ Grub 0.97 เริ่มนับจำนวนฮาร์ดดิสก์และพาร์ติชั่นด้วย 0 Grub 2 ยังเริ่มนับดิสก์ด้วย 0 แต่เริ่มนับจำนวนพาร์ติชันด้วย 1 ดังนั้น / dev / sda4 คือ hd0,3 ใน Grub 0.97 และ hd0,4 ใน Grub 2
fschmitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.