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 LILO
któ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 lilo
polecenia tak, jak go pamiętam z dawnych czasów? Czy aktualizacja pakietu jądra (Debian / Ubuntu) aktualizuje LILO, tak jak w przypadku GRUB2?
Odpowiedzi:
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
gdisk
irEFInd
.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
/boot
konfiguracji 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:
Więc po prostu umieściłem te dwa wiersze,
/etc/fstab
wskazując na folder, który zamierzam zawierać nowe instalacje Linuksa/boot
i już prawie martwię się o całą sprawę. Muszę też zrobić:Oprócz zainstalowania
refind-efi
pakietu za pośrednictwempacman
pierwszego, 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.conf
wyglądałby prawdopodobnie: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 .
źródło
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.
źródło
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
ext
partycjach 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.
źródło
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/vmlinuz
i 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.
źródło
/boot
są brudnym rozwiązaniem każdego problemu.