Chainload syslinux z GRUB2 - pokaż menu syslinux.cfg


9

Używam dysku USB Clonezilla na żywo do reimage systemów. Zgodnie z tym, co wyjaśniono w http://clonezilla.org/fine-print-live-doc.php?path=clonezilla-live/doc/99_Misc/00_live-boot-parameters.doc moje dyski podpowiadają mi zawarte menu we syslinux.cfgwszystkich systemach z wyjątkiem najnowszych, które są maszynami UEFI (i BIOS mają skonfigurowane najpierw do uruchamiania z urządzeń UEFI), gdzie pojawia się monit z grub.cfgmenu.

Biorąc pod uwagę, że mocno dostosowałem moje syslinux.cfgmenu, chciałbym zmodyfikować grub.cfgplik tak, aby automatycznie ładował łańcuch tylko do syslinux, aby wyświetlać syslinux.cfgmenu we wszystkich przypadkach.

Czy to w ogóle jest możliwe? W jaki sposób?

Na dysku znajduje się GRUB2 i moje zrozumienie (z rozglądania się po Internecie) jest takie, że będzie to możliwe, ale jeszcze nie zrozumiałem, jak to zrobić. Każda pomoc jest mile widziana.

Edycja:
Chciałbym wyjaśnić, że system uruchamia się przy użyciu GRUB-a bez problemów z wybraniem jakichkolwiek opcji, które są grub.cfgdomyślnie w menu zgodnie z pobraniem Conezilli, ale chciałbym wyświetlić menu syslinux (in syslinux.cfg) zamiast domyślnego menu w grub.cfg

Drugiej edycji, jak to zrobiłem:
Ostatecznie zaproponowane rozwiązania nie działały dla mnie, więc po prostu sprawiłem, że folder „EFI \ boot” stał się „niedostępny” (zmieniłem jego nazwę); w ten sposób rozruch UEFI kończy się niepowodzeniem, a system uruchamia się z syslinux jak w starszym systemie: bez modyfikacji BIOS, bez nowego menu, bez ładowania łańcuchowego ...


Sądzę, że można użyć configfileparametru wewnątrz grub.conf, aby załadować łańcuchowo syslinux.cfg
— SHW

Odpowiedzi:


1

Sugeruje to, że były to pewne błędy i poprawki, więc trudno jest na pewno wiedzieć: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/469568

Po pierwsze, jeśli twój system operacyjny aktualizuje grub, ponownie wygeneruje grub.cfg i wyczyści konfigurację, więc nie modyfikuj ręcznie /boot/grub.cfg, zamiast tego modyfikuj pliki w /etc/grub.d (plik o nazwie 40_custom lub coś w tym stylu) i zadzwoń grub-mkconfig -o /boot/grub/grub.cfg.

Możesz spróbować czegoś prostego:

menuentry „Syslinux root drive” {

ustaw root = (hd1,3)

ładowarka +1

}

(hd1,3) jest partycją dyskową sdb3, grub obsługuje identyfikację przez uuid, więc można stworzyć konfigurację, w której twoja partycja byłaby wykrywana przez wszystkie komputery. Jednak z mojego doświadczenia wynika, że ​​czasem to nie wystarczy.

Możesz także spróbować czegoś takiego chainloader (hd1,3)/path/to/syslinux/isofile.bin

Jeśli wszystko zawiedzie, możliwe jest uruchomienie z iso z syslinux, ale wydaje się, że w twoim przypadku nie jest to opcja.


Najpierw spróbowałem tego z wiersza poleceń grub (naciśnij raz raz w grub), zidentyfikowałem moją partycję syslinux.cfg i próbowałem bezpośrednio „chainloader (hd0, msdos2) +1”, ale pojawia się błąd „nieprawidłowa ścieżka pliku EFI”. Należy pamiętać, że zawartość powyższej partycji nie zawiera żadnego pliku .bin. (Zredagowałem też pytanie dla
— większej

Prawdopodobnie nie, jego nazwa i rozszerzenie formatu binarnego (.bin) zależą od dystrybucji (płyty CD na żywo zwykle mają bin, aby móc uruchomić się z syslinux i isolinux, ale w twoim przypadku jest to prawdopodobnie plik .bs, poszukaj tutaj poleceń syslinux.org/wiki/index.php/SYSLINUX#LABEL_command ). Jednak teraz badam jedną rzecz: nie uruchamia jądra bezpośrednio z modułem casper (inaczej tryb Live CD / Live USB), nie uruchamia menu bootloadera. Po kilku minutach napiszę wyniki.
— IBr

OK, widzę, że kandydaci to pliki .c32, które mam w tym folderze. Dokładniej jest to zawartość folderu: „chain.c32”, „menu.c32”, „reboot.c32”, „vesamenu.c32”, „memdisk”, „syslinux.cfg” <br> z wyłączeniem pliku cfg , czy powinienem wypróbować jeden po drugim? Rozglądając się, zrozumiałem, że łańcuch32 ma być używany do chailoidingu w innym kierunku (więc nie to, czego potrzebuję), czy się mylę?
— rodedo

Wywołanie caspera nie wywołuje menu bootloadera. Nie mam pojęcia, jak to zrobić. Jeśli to by pomogło, mam swój własny przykład menuentry 'Archlinux The Latest' { insmod ext2 set root=(hd0,6) multiboot /boot/grub/i386-pc/core.img }
— ładowania łańcuchowego

0

Po 4 latach ... :)

Spróbuj tego:

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

1
Proszę opracować i wyjaśnić, dlaczego to rozwiązuje problem.
— kontr-

-1

musisz wykonać instalację katalogu zamiast instalacji sektora rozruchowego. jeśli wykonasz instalację sektora rozruchowego, dodaj pierwsze 512 bajtów partycji do pliku i załaduj do tego pliku. pracował dla mnie.


Może to być poprawne, ale może przydać się trochę wyjaśnienia na temat tego, jak wykonać opisane kroki (i odpowiednia wielkość liter).
— Caleb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.