Jaka jest różnica między GRUB a SYSLINUX?

13

To pytanie jest związane z moim odkryciem, że Ubuntu i jego pochodne używają zarówno programów ładujących SYSLINUX, jak i GRUB na obrazach ISO w wersjach Desktop .

Podczas uruchamiania z 32-bitowego obrazu ISO mówi się, że SYSLINUX obsługuje proces rozruchu (rozruch, który pokazuje piękny ekran powitalny z animacją kropek postępu).

Ale podczas uruchamiania systemu z 64-bitowego obrazu ISO , GRUB jest używany zamiast (czarny i biały ekran, pokazuje GNU GRUB version...się na górze ekranu).

Dlatego, aby sformułować moje pytanie, jakie są różnice, które sprawiły, że Ubuntu używa GRUB i SYSLINUX na swoich obrazach ISO? Dlaczego po prostu nie użyć jednego z nich?

Dla wyjaśnienia

To pytanie było niejasne z powodu mojego braku wyjaśnień i dostępności sprzętu. Dodałem tę odpowiedź (lub przewiń w dół), aby lepiej wyjaśnić 64-bitowy obraz ISO.

Jaka odpowiedź nie jest

Poniższy wątek komentarza dał już pewien pomysł, ale powinienem to wyjaśnić. Odpowiedź nie brzmi, ponieważ jedno z nich prawidłowo obsługuje EFI. To pytanie miało na celu dowiedzieć się więcej na temat podstawowych przyczyn, a nie tylko wsparcia EFI.

Powiedzmy, jeśli należałoby o to zapytać w inny sposób, np. „Dlaczego w obrazach ISO używane są zarówno GRUB, jak i SYSLINUX?” to może dać odpowiedź w stylu: „GRUB jest dołączony do obsługi systemów obsługujących EFI, a SYSLINUX zawsze był dołączany i działa na systemach tylko BIOS” - co nie jest moim zamiarem.

Muszę przyznać, że wsparcie EFI jest prawdopodobnie częścią odpowiedzi.

Uważam jednak, że nie powinna to być jedyna odpowiedź. Musi istnieć coś więcej niż obsługa EFI, co spowodowało, że Ubuntu dołączyło dwa programy ładujące do swoich obrazów ISO, tak? A może tak naprawdę wsparcie EFI jest jedyną różnicą? Pomóż mi odpowiedzieć na to pytanie, jeśli w ogóle.

clearkimura
źródło
Animacja kropki postępu powinna pojawić się w obu przypadkach, zakładając, że nic nie jest nie tak z grafiką. A dlaczego mówisz „Live CD” i „Live USB” pogrubioną czcionką, skoro różnica między 64-bitowym obrazem UEFI a innymi obrazami? Czy wypróbowałeś obraz UEFI na płycie CD i otrzymałeś Syslinux?
muru
Zwiększyłoby to zamieszanie, ponieważ GRUB jest używany tylko przez 64-bitowy obraz obsługujący UEFI, a nie przez inne. Zasugerowałbym w inny sposób: porzuć sformułowanie „na żywo CD / USB” i po prostu trzymaj się obrazów, których użyłeś, ponieważ na tym polegają różnice.
muru
1
OK, odpowiednio zastąpiłem słowa kluczowe: Live CD -> 32-bitowy obraz ISO; Live USB -> 64-bitowy obraz ISO.
clearkimura
Syslinux to program ładujący BIOS. Używany w wersjach 32- i 64-bitowych na partycjach sformatowanych w systemie FAT32. Jest to moduł ładujący typu Windows tylko dla systemu BIOS. Grub2 jest używany tylko z bootowaniem UEFI. Prawdopodobnie mogliby używać GRUB2 z BIOS-em, ale teraz zawsze był większy i historycznie używali syslinux. Nie jestem pewien dlaczego. Kilka drobnych zalet różnych programów ładujących, abyś wiedział, w jaki sposób się uruchamiasz, UEFI lub BIOS.
oldfred
@oldfred System plików obrazu ISO to ISO9660 i nie jest to FAT32. Syslinux najwyraźniej działa również na maszynie obsługiwanej przez EFI, więc dlaczego nadal używać zarówno Syslinux, jak i Grub?
clearkimura

Odpowiedzi:

14

To moja ostatnia odpowiedź, która opiera się na informacjach znalezionych przez dopasowanie słowa kluczowego na ponad 2000 stronach w tej aukcji na Ubuntu Wiki . Znalazłem datowane notatki na temat rozwoju i specyfikacji Ubuntu (czytaj: słowa, słowa, słowa), więc zajęło mi to trochę czasu, aby dotrzeć do tej odpowiedzi.

Operacje, nieprawidłowe nazewnictwo

Na początek należy wyjaśnić nazwę programów ładujących rozruch:

  • Nazwa z wielkimi literami odnosi się do modułu ładującego (np. GRUB, SYSLINUX)

  • Nazwa z wielką literą odnosi się do nazwy projektu lub kilku lub wszystkich wariantów rodziny programów rozruchowych (np. Syslinux)

  • W szczególności „Syslinux” to kolekcja programów ładujących, która obejmuje „SYSLINUX”, „ISOLINUX”, „EXTLINUX” i „PXELINUX”

Zgodnie z konwencją nazewnictwa pytanie odnosi się do „ISOLINUX” dla programu ładującego „El Torito bez emulacji”, a nie „SYSLINUX”. Być może ten drugi jest używany zamiennie z pierwszym w dawnych czasach. Nieważne więc.

Krótka historia

2005: ISOLINUX został wybrany jako moduł ładujący CD Ubuntu zamiast GRUB.

GRUB był wcześniej sugerowany jako możliwy zamienny moduł ładujący, ale takie podejście wypróbowano na płycie CD Live Warty, gdzie zaobserwowaliśmy znaczną regresję w zakresie rozruchu w porównaniu z instalacyjną płytą CD używającą ISOLINUX. Uważamy, że trzymanie się rozwiązań opartych na ISOLINUX jest najbardziej odpowiednim podejściem do wydania wspieranego przez długi czas.

- z CdBootloader - Ubuntu Wiki

2006: dodano gfxboot; Potwierdza to informacje podane w 2010 r.

W Dapper dodaliśmy gfxboot do obrazów CD amd64 i i386, zapewniając przyjazne graficzne menu rozruchowe, jako pierwszą rzecz, którą użytkownicy widzą podczas uruchamiania obrazów CD Ubuntu na tych architekturach [...]

- z PortableGfxboot - Ubuntu Wiki

2009: ISOLINUX (oznaczony jako SYSLINUX) jest nadal używany do uruchamiania systemu Ubuntu CD.

Live CD Ubuntu nadal uruchamia się przy użyciu SYSLINUX, co nie obejmuje obsługi uruchamiania jądra w trybie graficznym. Oznacza to, że płyty CD na żywo wyświetlają graficzne menu rozruchowe, a następnie przełączają się z powrotem do trybu tekstowego, aby uruchomić jądro, a następnie normalnie przełączają się z powrotem na tryb graficzny później. W rezultacie płyty CD na żywo będą migotać w chwili rozruchu bardziej niż normalnie zainstalowane systemy.

- z BootGraphicsArchitecture - Ubuntu Wiki

2010: Wykorzystano ISOLINUX, ale GRUB 2 jest potrzebny do obsługi UEFI.

Obecne płyty CD z Ubuntu używają ISOLINUX, a rozszerzenia gfxboot z SuSE implementują graficzne menu.

Okazało się to raczej trudne do utrzymania, z tylko jedną osobą w Ubuntu, która rozumie kod tematyczny związany z [...]

[Od czasu] GRUB 2 ostatnio dodał obsługę menu graficznego przed nim, przejście do tego może potencjalnie zmniejszyć nasze obciążenie związane z konserwacją. Wydaje się prawdopodobne, że i tak będziemy musieli użyć GRUB 2, aby obsługiwać EFI, a konfiguracja dwóch różnych programów ładujących na naszych płytach CD byłaby niepożądana.

- z FoundationsTeam / Specs / MaverickCDBoot - Ubuntu Wiki

Zgodnie z fundations-m-grub2-boot-framebuffer będziemy musieli przyjrzeć się naszej zdolności do obsługi graficznych menu rozruchowych w EFI. GRUB ma pewien poziom obsługi grafiki UGA i GOP.

Wymaga to użycia GRUB-a do uruchamiania z CD lub przynajmniej minimalnej konfiguracji do obsługi [...]

- od FoundationsTeam / Specs / MaverickUefiSupport - Ubuntu Wiki

Znaleziono różnice lub nie

Po krótkiej historii rozumiemy teraz, że:

  • ISOLINUX był preferowany, ponieważ GRUB miał wtedy regresje (2005)

  • ISOLINUX był nadal preferowany pomimo braku wsparcia dla uruchamiania jądra w trybie graficznym, co powoduje migotanie podczas przejścia do rozruchu (2009)

  • ISOLINUX był używany z gfxboot w celu zapewnienia menu graficznego, które nie było zaimplementowane lub było wówczas niemożliwe w GRUB (2010)

  • GRUB został dodany później, aby uruchomić z obsługą UEFI od Maverick (po 2010)

Potem zdałem sobie sprawę, że to nie różnica między GRUB a SYSLINUX sprawiła, że ​​Ubuntu Live CD zawiera dwa programy ładujące.

Zasadnicze powody

Z mojej lektury te potwierdzające fakty faktycznie wskazywały, że:

  1. Ubuntu Live CD korzysta ze szczególnego programu ładującego, który miał lepszą obsługę zapewniającą menu graficzne i motyw oraz płynne przejście do pokazania rozruchu. W tym przypadku SYSLINUX (dokładnie ISOLINUX).

  2. Kiedy systemy UEFI stały się coraz bardziej popularne, tylko Ubuntu dołączył GRUB (dokładnie GRUB 2) do Live CD Ubuntu, aby uruchomić z obsługą UEFI.

Przede wszystkim uważam, że odpowiada to na pytanie, które miałem od ponad roku, i ta odpowiedź w końcu uspokoiła moją ciekawość.

Zarówno TL; DR GRUB, jak i ISOLINUX są używane w Live CD Ubuntu z wyjątkowych powodów; Oba zostały dołączone do Live CD, aby zapewnić lepsze uruchamianie i obsługę sprzętu.

clearkimura
źródło
Dobre badania. Informacje o grub przed około 2009/10 z Ubuntu były starsze od grub. Ubuntu następnie przełączył się na grub2 jako domyślny. Nie sądzę, aby starsze wersje grub pracowały wtedy z UEFI, chociaż wiele funkcji pozwalających na uzyskanie starszej wersji grub z nowszymi systemami było często wykonywanych przez dystrybucję.
oldfred
6

To moja wstępna odpowiedź, która pozwala lepiej zrozumieć część mojego pytania, ale nadal nie odpowiada na pytanie.

Kilka wyjaśnień poniżej:

  • W przeciwieństwie do 32-bitowego obrazu ISO, 64-bitowy obraz ISO faktycznie zawiera zarówno GRUB, jak i SYSLINUX (jest to potwierdzone przez, /boot/gruba /isolinuxoba katalogi znajdują się na obrazie ISO)
  • GRUB jest wyświetlany, gdy obraz ISO jest uruchamiany na maszynie obsługującej EFI.
  • SYSLINUX jest wyświetlany, gdy obraz ISO jest uruchamiany na komputerze z systemem BIOS.
  • Plymouth obsługuje animację kropki postępu, bez względu na to, czy pokazano GRUB lub SYSLINUX (zostało to poprawnie zasugerowane przez @muru w pierwszym komentarzu)

Doświadczenie z uruchamianiem : Napisałem „z obsługą EFI”, ponieważ nawet moja maszyna zaimplementowała EFI, wyłączyłem funkcję „Bezpiecznego rozruchu” (1,2), aby uruchomić system Ubuntu (w moim przypadku Xubuntu 14.04) z Live USB.

  1. Wersja 64-bitowa Xubuntu 14.04 jest w stanie uruchomić się, gdy Bezpieczny rozruch jest włączony, po zainstalowaniu go na dysku lokalnym (nie na Live USB).

  2. Wersja 64-bitowa Xubuntu 16.04 jest w stanie uruchomić się przy włączonym Bezpiecznym rozruchu.

Wypróbowana metoda : Zamiast próbować z fizycznym nośnikiem DVD i uruchomić z zewnętrznego napędu optycznego, zamiast tego skorzystałem z oprogramowania do wirtualizacji (w moim przypadku VirtualBox 4.3).

  • VirtualBox 4.3 ma już opcję przełączania między EFI a systemem BIOS, można go znaleźć w obszarze Maszyna> Ustawienia> System> Płyta główna - Funkcje rozszerzone: Włącz EFI (tylko specjalne systemy operacyjne) . Domyślnie opcja nie jest zaznaczona (3).

  • Maszynę wirtualną należy utworzyć za pomocą 64-bitowej wersji VirtualBox, działającej na 64-bitowym systemie hosta. 64-bitowy obraz ISO Xubuntu 14.04 jest używany w moich następnych próbach.

  • Pierwsza próba: uruchomiłem obraz ISO z ustawieniami domyślnymi (zakłada to system BIOS). Maszyna wirtualna pokaże fioletowe tło z ikonami u dołu. To jest SYSLINUX .

  • Druga próba: zamknąłem maszynę i przeszedłem do ustawień, zaznaczyłem opcję (3), aby włączyć EFI. Korzystając z tego samego obrazu ISO, ponownie uruchomiłem maszynę wirtualną. Tym razem minęło trochę czasu, zanim pojawił się GNU GRUB version...tekst monochromatyczny. To jest GRUB .

  • W obu próbach kontynuowanie procesu rozruchu pokaże animację kropki postępu podczas uruchamiania.

  • Ta sekcja strony na Ubuntu Wiki zawiera zrzuty ekranu opisujące dwa powyższe przypadki.

Oświadczenie : Ta odpowiedź ma na celu wyjaśnienie sposobu uruchamiania i wypróbowanej metody. Nie jest to jednak ostateczna odpowiedź na moje pytanie. Ostateczna odpowiedź zostanie opublikowana osobno, jeśli uda mi się samodzielnie odpowiedzieć na pytanie.

clearkimura
źródło
Dzięki za tą informację! Udało mi się uruchomić rozruch z usb tylko przy użyciu rufos obrazu .iso, który utworzył syslinux podczas rozruchu, ale nie z poleceniem „dd <iso>” - zauważyłem, że nie tworzy syslinux. Chodzi o to, że Ubuntu z HDD ma grub. Więc nie rozumiem, dlaczego grub działa z dyskiem twardym, a nie z USB.
ransh
@ransh Możesz zrozumieć, „którą metodą zainstalować który program ładujący”, a niniejsza kontrola jakości tego nie rozwiązuje. Powinieneś zadać swoje pytanie jako nowe pytanie , ponieważ komentarz nie jest przeznaczony do dyskusji.
clearkimura