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.