Czy GRUB jest najlepszym rozwiązaniem do ładowania systemu? Czy jest łatwiejsza alternatywa?


26

Miałem raczej złe doświadczenia GRUB2. Mógłbym powiedzieć (i powiedziałem) kilka nieprzyjemnych rzeczy na temat procesu projektowania i rozwoju. Szczególnie nie podoba mi się sposób aktualizacji: z jakiegokolwiek powodu musi on półautomatycznie aktualizować kilka skryptów - jeden pośrednio przez inny w łańcuchu - dla każdej aktualizacji jądra - lub wiele innych drobnych (i pozornie niezwiązanych) zmian konfiguracji.

Kontrastuje to bezpośrednio z poprzednimi doświadczeniami, z LILOktórymi poważnie myślę o przywróceniu, ponieważ nigdy nie miałem z tym żadnych problemów, a jego konfiguracja była dość prosta. Po pierwsze, o ile pamiętam, musiałem tylko zaktualizować (a raczej tylko zaktualizować) pojedynczy, zarządzany plik tekstowy konfiguracji na aktualizację jądra.

Jak więc LILO działa na nowoczesnym sprzęcie w dzisiejszych jądrach? Jak działa GRUB? Jak działają inne programy ładujące? Czy muszę spełnić jakieś warunki wstępne, czy chodzi tylko o zapisanie pliku konfiguracyjnego i uruchomienie lilopolecenia tak, jak go pamiętam z dawnych czasów? Czy aktualizacja pakietu jądra (Debian / Ubuntu) aktualizuje LILO, tak jak w przypadku GRUB2?


W zależności od tego, czy masz typ oprogramowania EFI, możesz obejść się bez niego i załadować jądro Linux z oprogramowania. Ale nadal możesz używać LILO z EFI (eLILO i tak) lub BIOS. Jest w drzewie źródeł jądra i jest utrzymywany. Jeśli chcesz wiedzieć, jak zrobić EFI, mogę na to odpowiedzieć, ale nie mam osobistego doświadczenia z LILO, po prostu wiedz, że jest on zachowany i działa.
mikeserv

Pamiętam, jak korzystałem z LILO około 2010 lub 2011 roku na ówczesnym Core 2 Duo. Myślę, że powinien on nadal działać (nie uwzględniając UEFI itp.), Architektura komputera nie zmieniła się tak bardzo.
Renan

@mikeserv, napisz wszystko, co wiesz o duecie LILO-EFI. Wszelkie informacje dotyczące tego tematu są mile widziane.

Napisałem coś, co może ci się przydać wcześniej , a które dotyczy krótko różnic między uefi / bios. Chodzi o to, że uefi zawiera bootloader, więc grub / lilo / cokolwiek jest zbędne. Często nie obejmuje menedżera rozruchu - dla menu i innych rzeczy - dlatego polecam odwiedzić stronę rodsbooks.com/refind
mikeserv

3
Wciąż jest dostarczane z Slackware. To nie jest mała społeczność.
Bandrami

Odpowiedzi:


28

ELILO

Zarządzanie modułami ładującymi EFI dla systemu Linux: za pomocą ELILO

Naprawdę trudno mi zdecydować, którą część skopiować i wkleić, ponieważ wszystko jest naprawdę dobre, więc poproszę tylko o przeczytanie.

Rod Smith

Jest autorem i utrzymuje zarówno, jak gdiski rEFInd.

Ale zanim to zrobisz, chciałbym trochę o tym skomentować. Powyższy link ELILO prowadzi do jednej z wielu stron dotyczących uruchamiania systemu UEFI, które można znaleźć na stronie rodsbooks.com napisanej przez Rod Smitha. Jest znakomitym pisarzem technicznym, a jeśli kiedykolwiek przejrzałeś temat uruchamiania UEFI i skończyłeś na tym, że nie czytałeś czegoś o nim, prawdopodobnie dlatego, że pominąłeś kilka pierwszych wyników.

Rozruch systemu Linux UEFI

Zasadniczo jądro Linuksa może być bezpośrednio wykonywane przez oprogramowanie układowe.

W powyższym odsyłaczu wspomina o kodzie ładującym EFI jądra Linuksa - tego, moim zdaniem, powinieneś używać, ponieważ pozwala on na wywołanie jądra Linuksa bezpośrednio przez samo oprogramowanie. Niezależnie od tego, co robisz, oprogramowanie układowe wykonuje coś - i wygląda na to, że coś takiego jest grub. Jeśli oprogramowanie układowe może bezpośrednio załadować jądro systemu operacyjnego, jaki jest pożytek z programu ładującego? Oprogramowanie układowe UEFI montuje partycję GPT w formacie FAT oznaczoną esp przez tablicę partycji i wykonuje tam ścieżkę zapisaną jako zmienna rozruchowa UEFI we wbudowanym module pamięci flash. Jedną rzeczą, którą możesz zrobić, to umieścić jądro Linux na tej partycji FAT i zapisać jego ścieżkę w tej zmiennej rozruchowej. Nagle jądro jest własne program rozruchowy.

Programy ładujące

W systemach UEFI programy ładujące są nadmiarowe - w tym ELILO.

Problem, który zostały zaprojektowane w celu rozwiązania ładujących, polegał na tym, że systemy BIOS odczytują tylko pierwszy sektor partycji oznaczonej jako boot i wykonują go. Jest to trochę trudne do zrobienia czegoś sensownego z jądrem 512 bajtów, więc często coś zrobić, to napisać małe narzędzie, które mogłyby zamontować system plików, w którym zachował rzeczywistą jądra i chainload go.

W rzeczywistości 512 bajtów często nie wystarczało nawet dla programów ładujących. grub, na przykład, faktycznie ładuje się sam przed ładowaniem jądra, ponieważ klinuje swój drugi etap w pustej przestrzeni między sektorem rozruchowym a pierwszym sektorem systemu plików. To trochę brudny hack - ale zadziałało.

Bootmanagers

Przez wzgląd na łatwą konfigurację choć niektóre pośrednik może być przydatna.

REFInd Rod Smitha uruchamia się jako aplikacja EFI - jest to stosunkowo nowa koncepcja. Jest to program uruchamiany z dysku przez oprogramowanie sprzętowe i powracający do niego. REFInd pozwala zarządzać menu rozruchu, a następnie zwraca wybór rozruchu do oprogramowania układowego w celu wykonania. Dostarczany jest ze sterownikami systemu plików UEFI - na przykład można użyć modułu ładującego EFI-stub jądra na partycji innej niż FAT (takiej jak bieżąca /boot). Jest bardzo prosty w zarządzaniu - jeśli taka rzecz jest w ogóle konieczna - i dodaje prostości wykonywalnego jądra systemowego do wygody konfigurowalnego bootmanagera.

Pośrednictwo atomowe

Jądro nie potrzebuje dowiązań symbolicznych - może mount --bind.

Jeśli na twojej ścieżce jest jakaś ścieżka, w /której powinieneś zabronić tworzenia dowiązań symbolicznych, jest to /boot. Osierocone dowiązanie symboliczne nie/boot jest problemem, który powinieneś kiedykolwiek rozwiązać. Nadal jednak dość powszechną praktyką jest tworzenie skomplikowanych pośredniości przez kilka dystrybucji - nawet jeśli jest to okropny pomysł - w celu obsługi lokalnych aktualizacji jądra i / lub wielu konfiguracji jądra./boot

Jest to problem w przypadku systemów EFI, które nie są skonfigurowane do ładowania sterowników systemu plików (takich, które są dostarczane z pakietem rEFInd), ponieważ FAT jest ogólnie dość głupim systemem plików i ich nie rozumie.

Ja osobiście nie używam sterowników systemu plików UEFI dostarczonych z rEFInd, chociaż większość dystrybucji zawiera pakiet rEFInd, który można zainstalować za pomocą menedżera pakietów i zapomniałem po prostu o używaniu własnej okropnej /bootkonfiguracji z linkami symbolicznymi oraz spakowanych sterowników systemu plików UEFI rEFInd.

Moja konfiguracja

Kiedyś napisałem na nim zestaw instrukcji i opublikowałem go tutaj , ale wygląda to tak:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

Więc po prostu umieściłem te dwa wiersze, /etc/fstabwskazując na folder, który zamierzam zawierać nowe instalacje Linuksa /booti już prawie martwię się o całą sprawę. Muszę też zrobić:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

Oprócz zainstalowania refind-efipakietu za pośrednictwem pacmanpierwszego, to wszystko, co jest potrzebne do skonfigurowania tylu osobnych instalacji / konfiguracji, ile chcę. Zauważ, że większość powyższego łańcucha składa się z opcji montowania specyficznych dla btrfs określonych jako parametry jądra. Bardziej typowy /boot/refind_linux.confwyglądałby prawdopodobnie:

"Menu Entry" "root=/dev/sda2"

I to wszystko.

rodsbooks.com

Jeśli nadal chcesz ELILO, możesz znaleźć instrukcje instalacji pod linkiem powyżej. Jeśli chcesz otrzymać REFInd, znajdziesz linki do niego w pierwszym akapicie. Zasadniczo, jeśli chcesz wykonać dowolną konfigurację rozruchową UEFI, najpierw przeczytaj rodsbooks.com .


3

Używam LILO zamiast GRUB2. Szczerze mówiąc, to nie był mój wybór - instalacja GRUB2 nie powiodła się w instalatorze Debiana Live CD, ale potem była opcja instalacji LILO, która zakończyła się powodzeniem. Mam 2-letniego laptopa z systemem Debian Stable. LILO działa dla mnie bezbłędnie.


1

LILO jest nadal użyteczny, nawet z BIOSami UEFI. Zazwyczaj UEFI może bezpośrednio ładować jądro Linuksa. Zależy to jednak od samego UEFI.

Jeśli jednak potrzebujesz ekranu wyboru rozruchu, na przykład, jeśli uruchamiasz się w kilku systemach operacyjnych na jednym komputerze, może się przydać mały program ładujący.

Zastanowiłbym się jednak nad skorzystaniem z EXTLINUX . Jest to wariant SYSLINUX, ale rezyduje w extpartycjach typu.

Piękno EXTLINUX polega na tym, że chociaż można go rozszerzać i ma o wiele więcej opcji niż LILO, może być równie prosty i aktywnie utrzymywany.


-1 Pakiet jądra (deb / ubuntu) nie aktualizuje EFI. (EFI nie odczyta fs, który obsługuje dowiązania symboliczne, więc nie możesz po prostu użyć mojej odpowiedzi). +1 dla EXTLINUX jako nowszej alternatywy dla LILO. Twój link pokazuje, że obsługuje kilka innych systemów plików, co jest dobrym znakiem. Obsługa EFI wygląda jednak nieco inaczej, tam gdzie jest to konieczne.
sourcejedi

@sourcejedi - mylisz się. System EFI, w którym załadowane są odpowiednie sterowniki systemu plików EFI, może z łatwością obsługiwać dowiązania symboliczne.
mikeserv

Z jakiegoś powodu linkowanie bezpośrednio do syslinux.com wydaje się zabronione.
polemon

@ Mikeserv Wiem, ale ładowanie sterownika systemu plików w większości przypadków wydawało mi się niejasne. Trzeba by nawet zainstalować jakiś skrypt EFI (terminologia?), Aby załadować sterownik, a następnie jądro. Och, i założę się, że nikt nie ma podpisów MS bezpiecznego rozruchu dla tych sterowników, więc jest to kolejny robak: p.
sourcejedi

@sourcejedi - czy mógłbyś przeczytać odpowiedź, którą tu napisałem? I tak - potrzebujesz środków do załadowania sterownika.
mikeserv

1

Nie pamiętam żadnego odpowiednika update-grub. Istnieje jednak starszy system, który jest nadal obsługiwany w Debianie. (Służy do uruchamiania systemu na moim serwerze ARM).

Najnowsze jądro jest dowiązane symbolicznie /boot/vmlinuzi initrd do /boot/initrd.img. Jest aktualizowany przez pakiet jądra. Program ładujący wskazuje na te i dereferencje dowiązanie symboliczne przy każdym uruchomieniu.

Więc możesz nie otrzymać opcji odzyskiwania. W każdym razie nie będzie to najczęściej testowana opcja, więc jeszcze bardziej wskazane jest utrzymywanie działającego dysku rozruchowego :-).


Aktualizacja: Jeśli Twoim celem jest coś innego niż dosłowne uruchomienie LILO na nowoczesnym komputerze, prawdopodobnie są lepsze alternatywy, jak opisano w innych odpowiedziach tutaj :).

Powyższe ma sens tylko w przypadku oryginalnej wersji LILO opartej na systemie BIOS. Nowoczesny sprzęt zapewnia zgodność z BIOS-em oprócz EFI, jeśli nie chcesz bezpiecznego rozruchu lub uruchamiania systemu Windows 8 z tego samego menu. Teoretycznie możesz uruchomić ELILO, ale nie obsługuje ono bezpiecznego rozruchu ani ładowania systemu Windows 8. ELILO nie ma już w ogóle sensu, więc zgaduję, że nie ma w tym za dużo społeczności.


ugh. dowiązania symboliczne do / z /bootsą brudnym rozwiązaniem każdego problemu.
mikeserv

welp lilo nie żyje (i przestarzałe), więc tak. Jaki masz problem? Ludzie jeszcze nie używają FAT do / boot ... BootLoaderSpec to dobry projekt, ale tak naprawdę jeszcze go nie ma ... i jest ku temu dobry powód (złe patenty, licencja zgodna z FLOSS przyznana tylko dla interoperacji EFI).
sourcejedi

To była dobra edycja.
mikeserv
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.