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 (in 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.

Ви можете спробувати щось таке, як це:

меню "Корневий привід Syslinux" {

встановити 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. (Я також редагував питання для додаткової ясності)
rodedo

Це, мабуть, немає, його ім'я та розширення бінарного формату (.bin) залежить від distro (живі CD-диски зазвичай мають bin, щоб мати можливість завантажуватися з syslinux та isolinux, але у вашому випадку це, напевно, файл .bs, дивіться тут команди. syslinux.org/wiki/index.php/SYSLINUX#LABEL_command ). Однак зараз я досліджую одне: не завантажуючи ядро ​​безпосередньо модулем каспера (він же режим живого CD / режиму живого usb), не запускає меню завантажувача. Через кілька хвилин я напишу результати.
IBr

Гаразд, я бачу, що кандидатами є файли .c32, які я маю у цій папці. Більш чітко це вміст папки: 'chain.c32', 'menu.c32', 'reboot.c32', 'vesamenu.c32', 'memdisk', 'syslinux.cfg' <br> за винятком файлу cfg , я спробую інший по одному? Озирнувшись, я зрозумів, що ланцюжок32 повинен використовуватися для вибивання білизни в іншому напрямку (тож не те, що мені потрібно), я помиляюся?
rodedo

Добре закликаючи каспер не використовує меню завантажувача. Я поняття не маю, як це досягти. Якщо це допоможе, я маю свій власний приклад завантаження ланцюгів, але я сумніваюся, що він використовує 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

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


Це може бути правильним, але це може отримати користь від невеликих пояснень щодо того, як вжити описаних кроків (і від правильної капіталізації).
Калеб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.