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файл так, чтобы он автоматически загружал цепочку в syslinux, чтобы syslinux.cfgменю отображалось во всех случаях.

Это вообще возможно? Как?

На диске есть GRUB2, и я понимаю (из Интернета), что это возможно, но я пока не понял, как это сделать. Любая помощь приветствуется.

Изменить:
Я хотел бы уточнить, что система загружается с использованием Grub без проблем, выбирая любой из параметров, которые grub.cfgпо умолчанию в меню, как это предусмотрено загрузкой Conezilla, но я хотел бы показать меню syslinux (в syslinux.cfg) вместо меню по умолчанию во grub.cfg

втором редактировании, как я это сделал:
В конце концов, предложенные решения не сработали для меня, поэтому я просто сделал папку «EFI \ boot» «недоступной» (переименовал ее); таким образом происходит сбой загрузки UEFI, и система загружается из syslinux, как в более старой системе: без изменений в BIOS, без нового меню, без загрузки сети ...


Я думаю, вы можете использовать configfileпараметр внутри grub.conf для цепной загрузки syslinux.cfg
SHW

Ответы:


1

Это говорит о том, что это были некоторые ошибки, связанные с этим, и некоторые исправления, так что трудно точно знать: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/469568

Во-первых, если ваша ОС обновляет grub, она сгенерирует grub.cfg и уничтожит вашу конфигурацию, поэтому не изменяйте /boot/grub.cfg вручную, а не изменяйте файлы в /etc/grub.d (файл с именем 40_custom или что-то в этом роде) и позвони grub-mkconfig -o /boot/grub/grub.cfg.

Вы можете попробовать что-то простое, как это:

menuentry "Syslinux root drive" {

установить root = (hd1,3)

загрузчик цепей +1

}

(hd1,3) - это раздел диска sdb3, grub поддерживает идентификацию по uuid, поэтому можно создать настройку, в которой ваш раздел будет обнаруживаться всеми ПК. Однако, по моему опыту, иногда этого недостаточно.

Вы также можете попробовать что-то вроде chainloader (hd1,3)/path/to/syslinux/isofile.bin

Если все не удается, можно загрузиться с iso с syslinux в нем, но кажется, что в вашем случае это не вариант.


Сначала я попробовал это из командной строки grub (один раз нажмите c в grub), я определил свой раздел syslinux.cfg и попробовал «chainloader (hd0, msdos2) +1» напрямую, но я получаю ошибку «неверный путь к файлу EFI». Обратите внимание, что содержимое раздела выше не содержит никакого файла .bin. (Я также отредактировал вопрос для дополнительной ясности)
Родедо

Вероятно, это не так, его имя и расширение бинарного формата (.bin) зависит от дистрибутива (у живых компакт-дисков обычно есть bin для загрузки с syslinux и isolinux, но в вашем случае это, вероятно, файл .bs, смотрите здесь команды syslinux.org/wiki/index.php/SYSLINUX#LABEL_command ). Однако сейчас я исследую одну вещь: не загружается ядро ​​напрямую с модулем casper (он же live cd / live usb mode), не запускается его меню загрузчика. Через несколько минут я напишу результаты.
2013 г.

Хорошо, я вижу, что кандидатами являются файлы .c32, которые у меня есть в этой папке. Точнее, это содержимое папки: «chain.c32», «menu.c32», «reboot.c32», «vesamenu.c32», «memdisk», «syslinux.cfg» <br> за исключением файла cfg я попробую другой один за другим? Оглядываясь вокруг, я понял, что chain32 должен использоваться для chailoiding в другом направлении (так что не то, что мне нужно), я не прав?
Родедо

Хорошо, вызов Каспера не вызывает меню загрузчика. Я понятия не имею, как это заархивировать. Если бы это помогло, у меня есть свой собственный пример menuentry 'Archlinux The Latest' { insmod ext2 set root=(hd0,6) multiboot /boot/grub/i386-pc/core.img }
цепной загрузки Grub

0

Через 4 года ... :)

Попробуй это:

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

1
Пожалуйста, уточните немного и объясните, почему это решает проблему.
countermode

-1

Вы должны выполнить установку каталога вместо установки загрузочного сектора. если вы устанавливаете загрузочный сектор, то дд первые 512 байт раздела в файл и цепную загрузку в этот файл. работал на меня.


Это может быть правильным, но для него может быть полезно немного пояснений о том, как предпринять описанные шаги (и из правильной капитализации).
Калеб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.