Chainload syslinux từ GRUB2 - hiển thị menu syslinux.cfg


9

Tôi đang sử dụng đĩa USB trực tiếp Clonezilla để đánh giá lại các hệ thống. Theo những gì được giải thích trong http://clonezilla.org/fine-print-live-doc.php?path=clonezilla-live/doc/99_Misc/00_live-boot-parameter.doc các đĩa của tôi sẽ nhắc tôi với menu chứa trong syslinux.cfgtất cả các hệ thống ngoại trừ những hệ thống mới nhất là các máy UEFI (và có cấu hình BIOS để khởi động từ các thiết bị UEFI trước) trong đó tôi được nhắc với grub.cfgmenu.

Vì tôi đã tùy chỉnh rất nhiều syslinux.cfgmenu của mình, tôi muốn sửa đổi grub.cfgtệp thành tự động chainload thành syslinux để hiển thị syslinux.cfgmenu trong mọi trường hợp.

cái này nó có hoàn toàn có thể xảy ra được không? Làm sao?

Trên đĩa có GRUB2 và sự hiểu biết của tôi (từ việc tìm kiếm trên Internet) là điều có thể, nhưng tôi chưa hiểu làm thế nào. Bất kỳ trợ giúp được đánh giá cao.

Chỉnh sửa:
Tôi muốn làm rõ rằng hệ thống khởi động bằng grub mà không gặp sự cố khi chọn bất kỳ tùy chọn nào trong grub.cfgmenu theo mặc định như được cung cấp bởi tải xuống của Conezilla, nhưng điều tôi muốn làm là hiển thị menu của syslinux (in syslinux.cfg) thay vì menu mặc định trong grub.cfg

lần chỉnh sửa thứ hai, tôi đã làm như thế nào:
Cuối cùng, các giải pháp được đề xuất không hiệu quả với tôi, vì vậy tôi chỉ đơn giản làm cho thư mục 'EFI \ boot' "không có sẵn" (đổi tên thành); bằng cách này, việc khởi động UEFI không thành công và hệ thống khởi động từ syslinux như trên hệ thống cũ: không sửa đổi BIOS, không có menu mới, không tải chuỗi ...


Tôi đoán, bạn có thể sử dụng configfiletham số bên trong grub.conf để tải chuỗi syslinux.cfg
SHW

Câu trả lời:


1

Điều này cho thấy rằng đó là một số lỗi liên quan đến điều đó và là một số bản vá, vì vậy thật khó để biết chắc chắn: https://bugs.launchpad.net/ubfox/+source/grub2/+bug/469568

Đầu tiên, nếu hệ điều hành của bạn cập nhật grub, nó sẽ tạo lại grub.cfg và xóa sạch cấu hình của bạn, vì vậy đừng sửa đổi thủ công /boot/grub.cfg thay vì sửa đổi các tệp trong /etc/grub.d (tệp có tên 40_custom hoặc đại loại như thế) và gọi grub-mkconfig -o /boot/grub/grub.cfg.

Bạn có thể thử một cái gì đó đơn giản như thế này:

menuentry "Ổ đĩa gốc Syslinux" {

đặt gốc = (hd1,3)

trình tải chuỗi +1

}

(hd1,3) là phân vùng đĩa sdb3, grub hỗ trợ nhận dạng bởi uuid, do đó có thể tạo thiết lập trong đó phân vùng của bạn sẽ được phát hiện bởi tất cả các PC. Tuy nhiên theo kinh nghiệm của tôi đôi khi điều này là không đủ.

Bạn cũng có thể thử một cái gì đó như chainloader (hd1,3)/path/to/syslinux/isofile.bin

Nếu mọi thứ đều thất bại, có thể khởi động từ iso với syslinux trong đó, nhưng có vẻ như trong trường hợp của bạn, đây không phải là một tùy chọn.


Lần đầu tiên tôi đã thử điều này từ dòng lệnh grub (nhấn c một lần trong grub), tôi đã xác định phân vùng syslinux.cfg của mình và thử 'chainloader (hd0, msdos2) +1' nhưng tôi gặp lỗi 'đường dẫn tệp EFI không hợp lệ'. Xin lưu ý rằng nội dung của phân vùng trên dos không chứa bất kỳ tệp .bin nào. (Tôi cũng đã chỉnh sửa câu hỏi để rõ ràng hơn)
Rodedo

Có lẽ không, phần mở rộng định dạng nhị phân và tên (.bin) của nó phụ thuộc vào distro (cd trực tiếp thường có bin để có thể khởi động với syslinux và isolinux, nhưng trong trường hợp của bạn có lẽ là tệp .bs, hãy xem các lệnh này ở đây syslinux.org/wiki/index.php/SYSLINEUX#LABEL_command ). Tuy nhiên, bây giờ tôi đang nghiên cứu một điều: không khởi động kernel trực tiếp với mô-đun casper (còn gọi là chế độ cd / live live) không chạy trình đơn bootloader. Sau vài phút tôi sẽ viết kết quả.
IBr

OK, tôi thấy rằng các ứng cử viên là các tệp .c32 mà tôi có trong thư mục đó. Chính xác hơn đây là nội dung của thư mục: 'chain.c32', 'menu.c32', 'restart.c32', 'vesamothy.c32', 'memdisk', 'syslinux.cfg' <br> không bao gồm tệp cfg Tôi sẽ thử từng cái một? Nhìn xung quanh tôi hiểu rằng chain32 được cho là được sử dụng để chailoid theo hướng khác (vì vậy không phải những gì tôi cần), tôi có sai không?
Rodedo

Casper gọi tốt không gọi menu bootloader. Tôi không có ý tưởng làm thế nào để lưu trữ này. Nếu điều đó sẽ giúp tôi có ví dụ tải chuỗi grub của riêng mình để grub, nhưng tôi nghi ngờ rằng nó có bất kỳ công dụng nào với syslinux:menuentry 'Archlinux The Latest' { insmod ext2 set root=(hd0,6) multiboot /boot/grub/i386-pc/core.img }
IBr

0

Sau 4 năm ... :)

Thử cái này:

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

1
Hãy giải thích một chút và giải thích lý do tại sao điều này giải quyết vấn đề.
phản biện

-1

bạn phải thực hiện cài đặt thư mục thay vì cài đặt boot sector. nếu bạn thực hiện cài đặt boot sector thì dd 512 byte đầu tiên của phân vùng vào một tệp và chainload vào tệp đó. đã làm cho tôi.


Điều này có thể đúng, nhưng nó có thể được hưởng lợi từ một chút giải thích về cách thực hiện các bước được mô tả (và từ viết hoa đúng).
Caleb
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.