รายละเอียดระบบการทำงานพื้นฐาน:
ฉันใช้ซีดีเซิร์ฟเวอร์ Ubuntu 12.04 เพื่อติดตั้งเซิร์ฟเวอร์
ฉันมี 4 ดิสก์ ในดิสก์ทั้งหมดที่ฉันทำต่อไปนี้คล้ายกับhowto นี้ :
- สร้างพาร์ทิชัน swap 2GB
- สร้างพาร์ติชั่น 256 GB / boot
- สร้างพาร์ติชั่น 64 GB RAID10 (สำหรับรูท)
- สร้างพาร์ติชั่น RAID10 ขนาดใหญ่เพื่อใช้พื้นที่ที่เหลือ
ฉันจัดรูปแบบการบู๊ตเป็น ext3 ฉันตั้งค่า RAID10 บนรูทและพาร์ติชั่นใหญ่ ฉันจัดรูปแบบรูทหนึ่ง ext4 ฉันสร้างโลจิคัลวอลุ่มบนตัวใหญ่และจัดรูปแบบเป็น ext4
ระบบผลลัพธ์นั้นทำงานได้ดีและบู๊ตได้ดี
รายละเอียดปัญหา:
จากนั้นฉันตัดสินใจทำเอกสารขั้นตอนความล้มเหลว เป็นขั้นตอนแรกฉันตัดสินใจว่าจะติดตั้งด้วงใหม่
# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
# grub-install /dev/sdb
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
ดังนั้นดูเหมือนว่าจะล้มเหลว แต่ก็ดูเหมือนว่าจะให้ขึ้นและไม่ได้ทำการเปลี่ยนแปลง ดังนั้นฉันรีบูต การบูตล้มเหลว มันเพิ่งแฮงค์ด้วยหน้าจอสีดำที่มีเคอร์เซอร์กะพริบประมาณ 4 บรรทัด ถ้าฉันบูท "Shift" ค้างไว้ฉันจะได้คำว่า "GRUB" ทางด้านซ้ายของเคอร์เซอร์ แต่ไม่มีพรอมต์ตอบโต้
ณ จุดนี้ฉันใช้boot-repair-diskเพื่อสร้างรายงานนี้: http://paste.ubuntu.com/966531/
หมายเหตุในรายงานข้างต้นระบุว่า bootloader ไม่ได้ชี้ไปที่เซกเตอร์ที่ถูกต้องสำหรับ core.img (sda คือ cd เสมือนจริง; sdb เป็นดิสก์สำหรับบูต; sdc เป็นมิเรอร์ของ sdb แต่การบูตไม่ได้ถูกทำมิเรอร์พาร์ติชันที่ไม่เกี่ยวข้องแยกต่างหากจะอยู่ที่นั่นและฟอร์แมตเป็น ext3; sdd และ sde มีที่ว่างสำหรับบูต
จากนั้นฉันบูตจากซีดีเซิร์ฟเวอร์ Ubuntu เริ่มระบบช่วยเหลือและออกคำสั่งต่อไปนี้ซึ่งเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด (โดยที่ sda คือซีดีเสมือนจริงและ b, c, d, e เป็นดิสก์ซึ่งเป็น, b, c , d ในคำสั่ง grub ก่อนหน้า):
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
ณ จุดนี้ฉันใช้boot-repair-diskเพื่อสร้างรายงานนี้: http://paste.ubuntu.com/966561/
โปรดทราบว่าในรายงานข้างต้นปัญหาเกี่ยวกับ core.img หายไป ดูเหมือนว่าจะชี้ไปยังภาคที่ถูกต้อง
ตอนนี้ถ้าฉันพยายามบูทฉันจะได้รับพรอมต์ด้วง หากฉันรัน "set" ฉันจะเห็นรูทนั้นพบและตั้งค่า ถ้าฉันรัน "ls /" ฉันเห็นไดเรกทอรีรูทของฉันจากโวลุ่มการจู่โจมรวมถึงไฟล์เคอร์เนล vmlinuz หากฉันพิมพ์ "ls / vmlinuz" จะแจ้งว่า "ข้อผิดพลาด: ไม่พบไฟล์" มันบอกว่าข้อผิดพลาดเดียวกันถ้าฉันใช้คำสั่ง "linux" เพื่อพยายามโหลดเคอร์เนล ไฟล์ vmlinuz ไม่ปรากฏถ้าฉันใช้ "ls -l /"
รายละเอียดมากเกินไปในกรณีที่คุณต้องการติดตาม:
ฉันสังเกตเห็นว่ายังไม่มี / boot/grub/grub.cfg ดังนั้นฉันจึงวิ่ง
# grub-mkconfig -o /boot/grub/grub.cfg
แต่ปัญหายังคงอยู่
หากฉันใช้เครื่องมือ "gptsync" จะไม่มีการเปลี่ยนแปลงในพฤติกรรมนี้
boot-repair-disk จะไม่ซ่อมแซมระบบเพราะต้องการให้ฉันบูตด้วยไบออสที่เปิดใช้งาน EFI ฉันมองดูสิ่งนี้สั้น ๆ แต่ฉันไม่รู้ว่ามันทำงานอย่างไร ฉันพบเปลือก UEFI ในตัวเลือกการบูตของฉัน แต่ฉันไม่รู้อะไรเลยและไม่เห็นวิธีเปลี่ยนการเริ่มต้นจากที่นั่น (เช่นการบูตซีดีจากเปลือก EFI นั้น)
ฉันได้อ่านหน้านี้แล้ว แต่ Ubuntu ไม่ได้มาพร้อมกับคำสั่ง "grub" ดังนั้นฉันจึงไม่สามารถติดตามได้อย่างแน่นอน ฉันสามารถติดตั้งคำสั่งนั้นได้ แต่ฉันอยากรู้มากกว่านี้ว่าตัวติดตั้ง Ubuntu จัดการติดตั้งได้อย่างไรแทนที่จะมีการตั้งค่าแบบอื่น มันใช้ blocklist ไหม?
นี่คือผลลัพธ์ของการแยกส่วนขณะบู๊ตบนboot-repair-disk (โดยที่นี่ sdb เป็นฮาร์ดดิสก์ตัวแรก sda เมื่อบูตจากดิสก์และ "boot" เปลี่ยนเป็น "bios_grub" ในลิงก์วางที่ 2):
Model: ATA Hitachi HUA72303 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000MB 2000MB linux-swap(v1) swap1
2 2000MB 2256MB 256MB ext3 boot1 boot (this says bios_grub in 2nd link)
3 2256MB 66.3GB 64.0GB root1 raid
4 66.3GB 3001GB 2934GB data1 raid
นี่คือเครื่องเสมือนซุปเปอร์เก่าที่ไม่เกี่ยวข้องสำหรับการเปรียบเทียบ (สำหรับทุกคนที่ไม่คุ้นเคยกับboot-repair-disk ): http://paste.ubuntu.com/966799/
นี่คือการวางล่าสุดจากระบบปัญหาหลังจากรัน grub-mkconfig ด้านบนและตั้งค่า "bios_grub" กลับไปที่ "boot" http://paste.ubuntu.com/966808/
เปรียบเทียบทั้งสองนี้ดูน่าสนใจ:
sdb2: __________________________________________________________________________
File system:
Boot sector type: Grub2's core.img
Boot sector info:
Mounting failed: mount: unknown filesystem type ''
md/bcserver8:0: ________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
ดูเหมือนว่าการจู่โจมจะมีไฟล์สำหรับบู๊ตและ sdb2 ไม่ได้ฟอร์แมต (แม้จะมีสิ่งนี้ระบบบูตก่อนที่จะเรียกใช้ด้วง) จากซีดีช่วยเหลือ "mount -t ext3 / dev / sdb2 / boot" ล้มเหลว แต่มันก็สมเหตุสมผลว่าสิ่งนี้จะทำให้เกิดความสับสนเนื่องจากด้วงใช้พาร์ติชัน 2 อย่างชัดเจน (2 ในคำสั่งแบบแยกส่วนที่เปิด bios_grub ไว้)
ดังนั้นฉันจึงทำสิ่งนี้:
# mkfs.ext3 -L boot1 /dev/sdb2
# mv boot boot_on_root
# mkdir boot
# mount /dev/sdb2 boot
# rsync -avHP boot_on_root/ boot/
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
รีบูทจากนั้นฉันก็มีหน้าจอสีดำอีกครั้งไม่มีข้อความแจ้ง http://paste.ubuntu.com/966848/
ดังนั้น ณ จุดนี้ฉันเดาว่าเมื่อตั้งค่า bios_grub แล้ว grub จะไม่ติดตั้งไปยัง MBR และไม่ใช่ไปยังระบบไฟล์ ext3 บน ext3 แต่ในพาร์ติชันเองราวกับว่ามันเป็น EFI ... ซึ่งจะเห็นได้ชัดว่ายุ่งเหยิง ตั้งค่าระบบไฟล์ ext3 ที่นั่น Aand จากการอ่านสั้น ๆ เกี่ยวกับ EFI ดูเหมือนว่า EFI จะถือว่าพาร์ติชั่นแรกคือบูท แต่ในกรณีของฉันอันที่แรกคือ swap และก็ควรเป็น FAT แทนที่จะเป็นอะไรที่ไม่สามารถถอด ... ความรู้สึกฉันยังคงหายไปอย่างสมบูรณ์โดยไม่ต้องมีเงื่อนงำ [แก้ไข: ตอนนี้ฉันมีเงื่อนงำ ... ข้ามไปเล็กน้อยสำหรับการปรับปรุง]
และตอนนี้เมื่อฉันคลิกซ่อมแซมในboot-repair-diskมันจะถามอย่างอื่น ครั้งสุดท้ายที่ข้อผิดพลาดถูกซ่อนอยู่ใต้หน้าต่างและฉันต้องลากส่วนที่เหลือออกเพื่อดู เวลานี้หน้าต่างหลักหายไปและหน้าต่างใหม่แจ้งว่า:
GPT detected. You may want to retry after creating a
BIOS-Boot partition (>1Mo, flag). Do you want to continue?
ดังนั้นฉันคลิกใช่และมันบอกว่ามันได้รับการซ่อมแซมเรียบร้อยแล้วและสร้างวางอื่น: http://paste.ubuntu.com/966862/
แต่ฉันยังมีหน้าจอสีดำพร้อมเคอร์เซอร์กะพริบ
ทฤษฏีของฉันคือการบูตถูกเขียนทับโดยสิ่งที่ไม่ใช่ไขมันไม่ใช่ EFI ซึ่งเป็นรหัสด้วงที่น่าจะอยู่ในเซ็กเมนต์ 0-63 มาก่อน ฉันโชคดีที่มีคำสั่งที่ชัดเจนมากในหน้านี้ซึ่งอาจทำให้ฉันเข้าใจว่ามันหมายถึงอะไร และหลังจากนั้นฉันก็พบว่าเจเรมีโพสต์คำตอบซึ่งหากเป็นจริงยืนยันว่านี่เป็นแนวคิดหลักที่ขาดหายไป http://blog.psych0tik.net/2011/08/grub-embedding-blocklists-and-bios_grub-partitions/
คำถาม:
เกิดอะไรขึ้น? ทำไมด้วงไม่สามารถบู๊ตได้? ทำไมถึงพูดว่า "ไม่พบไฟล์"
ทำไมด้วงไม่ต้องการติดตั้งโดยไม่มีการตั้งค่านี้ฉันได้ตั้งค่าด้วยการแยกส่วน (ซึ่งตัวติดตั้ง Ubuntu ไม่ได้ตั้งไว้) ฉันคิดว่าสิ่งที่ฉันต้องใช้ในการติดตั้งคือการแยก / บูตที่ไม่ได้อยู่ใน LVM หรือซอฟต์แวร์ RAID เนื่องจากรากของฉันอยู่ใน RAID และตารางพาร์ติชันคือ GPT
ตัวติดตั้ง Ubuntu CD ติดตั้งอย่างไรโดยไม่มีปัญหานี้และไม่มีการตั้งค่า bios_grub
ฉันจะพิจารณาใช้ EFI ด้วย หากนี่เป็นความคิดที่ดีและมีวิธีมาตรฐานในการตั้งค่าฉันมักจะเรียนรู้สิ่งใหม่ ๆ อยู่เสมอ
คำตอบที่เร็วที่สุดที่จะทำให้ฉันมีความสุขแม้จะไม่ได้ตอบคำถามทั้งหมดของฉันก็จะเป็นชุดคำสั่งที่ฉันสามารถเรียกใช้จากแผ่นซีดีกู้คืนเพื่อแก้ไข bootloader ในลักษณะเดียวกับที่แผ่นซีดีติดตั้งทำได้ มันจะดีเป็นพิเศษถ้าฉันสามารถเรียกใช้พวกเขาด้วยระบบบูตแทนซีดี