Chainload syslinux จาก GRUB2 - แสดงเมนู syslinux.cfg


9

ฉันใช้ดิสก์ USB Clonezilla สดเพื่อจำลองระบบ ตามที่อธิบายไว้ในhttp://clonezilla.org/fine-print-live-doc.php?path=clonezilla-live/doc/99_Misc/00_live-boot-parameters.docดิสก์ของฉันจะแจ้งให้ฉันพร้อมกับเมนูที่มีอยู่ ในsyslinux.cfgสำหรับทุกระบบยกเว้นระบบล่าสุดที่เป็นเครื่อง UEFI (และมีการกำหนดค่า BIOS ให้บูตจากอุปกรณ์ UEFI ก่อน) ที่ฉันได้รับแจ้งจากgrub.cfgเมนู

เนื่องจากฉันปรับแต่งsyslinux.cfgเมนูเป็นอย่างมากฉันต้องการแก้ไขgrub.cfgไฟล์ให้เฉพาะ chainload เป็น syslinux โดยอัตโนมัติเพื่อแสดงsyslinux.cfgเมนูในทุกกรณี

เป็นไปได้ทั้งหมดหรือไม่ อย่างไร?

บนดิสก์มี GRUB2 และความเข้าใจของฉัน (จากการดูรอบ ๆ อินเทอร์เน็ต) เป็นสิ่งที่เป็นไปได้ แต่ฉันยังไม่เข้าใจเลย ความช่วยเหลือใด ๆ ที่ชื่นชม

แก้ไข:
ฉันต้องการชี้แจงว่าระบบบูทที่ใช้ด้วงโดยไม่มีปัญหาในการเลือกตัวเลือกใด ๆ ที่อยู่ในgrub.cfgเมนูตามค่าเริ่มต้นที่ให้ไว้โดยการดาวน์โหลด Conezilla แต่สิ่งที่ฉันต้องการจะทำคือการแสดงเมนูของ syslinux (ในsyslinux.cfg) แทนที่จะเป็นเมนูเริ่มต้นในการgrub.cfg

แก้ไขครั้งที่สองฉันทำมันอย่างไร:
ในที่สุดโซลูชันที่เสนอไม่ทำงานสำหรับฉันดังนั้นฉันจึงสร้างโฟลเดอร์ 'EFI \ boot' "ไม่พร้อมใช้งาน" (เปลี่ยนชื่อ); วิธีนี้การบู๊ต UEFI ล้มเหลวและบูทระบบจาก syslinux เหมือนกับในระบบเก่า: ไม่มีการดัดแปลง BIOS, ไม่มีเมนูใหม่, ไม่มีการสับเปลี่ยน ...


ผมคิดว่าคุณสามารถใช้configfileพารามิเตอร์ภายใน grub.conf เพื่อ chainload syslinux.cfg
SHW

คำตอบ:


1

สิ่งนี้ชี้ให้เห็นว่ามันเป็นข้อบกพร่องบางอย่างที่เกี่ยวข้องกับสิ่งนั้นและเป็นบางส่วนของแพตช์ดังนั้นจึงเป็นเรื่องยากที่จะทราบแน่นอน: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/469568

ก่อนอื่นหากการอัพเดตระบบปฏิบัติการของคุณด้วงมันจะสร้าง grub.cfg ขึ้นใหม่และล้างการกำหนดค่าของคุณดังนั้นอย่าแก้ไข /boot/grub.cfg ด้วยตนเองแทนการแก้ไขไฟล์ใน /etc/grub.d (ไฟล์ชื่อเช่น 40_custom หรืออะไรทำนองนั้น) grub-mkconfig -o /boot/grub/grub.cfgและโทร

คุณสามารถลองอะไรง่ายๆแบบนี้:

เมนู "ไดรฟ์ราก Syslinux" {

set root = (hd1,3)

chainloader +1

}

(hd1,3) เป็นดิสก์พาร์ติชัน sdb3, ด้วงรองรับการระบุโดย uuid ดังนั้นจึงเป็นไปได้ที่จะสร้างการตั้งค่าที่พาร์ทิชันของคุณจะถูกตรวจพบโดยพีซีทั้งหมด อย่างไรก็ตามในประสบการณ์ของฉันบางครั้งก็ไม่เพียงพอ

คุณสามารถลองทำสิ่งที่ชอบ chainloader (hd1,3)/path/to/syslinux/isofile.bin

หากทุกอย่างล้มเหลวคุณสามารถบูตจาก iso ด้วย syslinux ได้ แต่ดูเหมือนว่าในกรณีของคุณนี่ไม่ใช่ตัวเลือก


ฉันลองนี่จากบรรทัดคำสั่ง grub (กด c ครั้งเดียวในด้วง) ฉันระบุพาร์ติชัน syslinux.cfg ของฉันและลอง 'chainloader (hd0, msdos2) +1' โดยตรง แต่ฉันได้รับข้อผิดพลาด 'เส้นทางไฟล์ EFI ไม่ถูกต้อง' โปรดทราบว่าเนื้อหาของพาร์ติชันข้างต้น dos ไม่มีไฟล์. bin ใด ๆ (ฉันยังแก้ไขคำถามเพื่อความชัดเจนเพิ่มเติม)
rodedo

มันอาจจะไม่ได้ชื่อและส่วนขยายรูปแบบไบนารี (.bin) ขึ้นอยู่กับ distro (โดยทั่วไป cd สดจะมี bin เพื่อให้สามารถบูตด้วย syslinux และ isolinux ได้ แต่ในกรณีของคุณอาจเป็นไฟล์. bbs ดูคำสั่งที่นี่syslinux.org/wiki/index.php/SYSLINUX#LABEL_ คำสั่ง ) อย่างไรก็ตามตอนนี้ฉันกำลังค้นคว้าสิ่งหนึ่ง: ไม่บูทเคอร์เนลโดยตรงกับโมดูลแคสเปอร์ (หรือที่รู้จักโหมด live cd / live usb) ไม่ได้เรียกใช้มันเป็นเมนู bootloader หลังจากนั้นไม่กี่นาทีฉันจะเขียนผลลัพธ์
IBr

ตกลงฉันเห็นว่าผู้สมัครเป็นไฟล์. c32 ที่ฉันมีในโฟลเดอร์นั้น นี่คือเนื้อหาของโฟลเดอร์: 'chain.c32', 'menu.c32', 'reboot.c32', 'vesamenu.c32', 'memdisk', 'memdisk', 'syslinux.cfg' โดยไม่รวมไฟล์ cfg ฉันจะลองอีกอันทีละอันไหม? เมื่อมองไปรอบ ๆ ฉันเข้าใจว่า chain32 ควรจะถูกใช้สำหรับ chailoiding ในทิศทางอื่น (ไม่ใช่สิ่งที่ฉันต้องการ) ฉันผิดหรือเปล่า?
rodedo

แคสเปอร์ที่เรียกดีไม่เรียกใช้เมนูตัวโหลด ฉันไม่รู้ว่าจะเก็บสิ่งนี้อย่างไร หากที่จะช่วยให้ฉันมีด้วงของตัวเอง chainloading เช่นด้วง แต่ฉันสงสัยว่ามันมีการใช้งานใด ๆ กับ syslinux:menuentry 'Archlinux The Latest' { insmod ext2 set root=(hd0,6) multiboot /boot/grub/i386-pc/core.img }
IBR

0

หลังจาก 4 ปี ... :)

ลองสิ่งนี้:

menuentry 'menuentry' {
    set root=(hd0,1)
    syslinux_source /path/isolinux/isolinux.bin
    syslinux_configfile /path/isolinux/isolinux.cfg
}

1
โปรดอธิบายรายละเอียดเล็กน้อยและอธิบายว่าเหตุใดจึงแก้ปัญหาได้
ตอบโต้

-1

คุณต้องทำการติดตั้งไดเรกทอรีแทนการติดตั้งบูตเซกเตอร์ หากคุณทำการบูตเซกเตอร์ให้ทำการติดตั้งจากนั้น dd 512 ไบต์แรกของพาร์ติชั่นไปยังไฟล์และทำการโหลดไฟล์นั้น ทำงานให้ฉัน


สิ่งนี้อาจถูกต้อง แต่อาจได้รับประโยชน์จากคำอธิบายเล็กน้อยเกี่ยวกับวิธีดำเนินการตามขั้นตอนที่อธิบายไว้ (และจากการใช้อักษรตัวพิมพ์ใหญ่ที่เหมาะสม)
Caleb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.