Ist GRUB die beste Bootloading-Lösung? Gibt es eine einfachere Alternative?

26

Ich habe mit ein paar ziemlich schlechte Erfahrungen gemacht GRUB2. Ich könnte einige üble Dinge über den Design- und Entwicklungsprozess sagen (und gesagt haben) . Ich mag besonders die Art der Aktualisierung nicht: Aus irgendeinem Grund muss es bei jeder Kernelaktualisierung - oder bei vielen anderen geringfügigen (und scheinbar nicht zusammenhängenden) Konfigurationsänderungen - mehrere Skripte halbautomatisch aktualisieren - eine indirekt über eine andere in einer Kette .

Dies steht in direktem Gegensatz zu früheren Erfahrungen, mit LILOdenen ich ernsthaft darüber nachdenke, zurückzukehren, da ich nie Probleme damit hatte und die Konfiguration ziemlich einfach war. Zum einen musste ich, wie ich mich erinnere, nur eine einzige, einfach zu verwaltende Konfigurationstextdatei pro Kernel-Update aktualisieren (oder vielmehr immer aktualisieren) .

Wie funktioniert LILO auf moderner Hardware mit heutigen Kerneln? Wie geht GRUB? Wie machen andere Bootloader? Muss ich irgendwelche Voraussetzungen erfüllen, oder geht es nur darum, die Konfigurationsdatei zu schreiben und den liloBefehl auszuführen, an den ich mich früher gern erinnere? Aktualisiert das Kernelpaket-Update (Debian / Ubuntu) LILO wie GRUB2?

Gemeinschaft
quelle
Abhängig davon, ob Sie einen EFI-Firmware-Typ haben oder nicht, können Sie entweder darauf verzichten, wenn Sie möchten, und den Linux-Kernel von der Firmware laden. Sie können LILO jedoch weiterhin mit EFI (eLILO) oder BIOS verwenden. Es befindet sich im Kernel-Quelltextbaum und wird beibehalten. Wenn Sie wissen möchten, wie man das EFI-Ding macht, kann ich das beantworten, aber ich habe keine persönlichen Erfahrungen mit LILO, sondern nur, dass es erhalten bleibt und funktioniert.
mikeserv
Ich erinnere mich, dass ich LILO um 2010 oder 2011 auf einem damals aktuellen Core 2 Duo verwendet habe. Ich denke, es sollte immer noch funktionieren (ohne Berücksichtigung von UEFI usw.), die PC-Architektur hat sich nicht wesentlich geändert.
Renan
@mikeserv, bitte schreibe alles, was du über LILO-EFI duet weißt. Alle Informationen zu diesem Thema sind willkommen.
Ich habe tatsächlich etwas geschrieben, das Sie vielleicht früher hier nützlich fanden und das sich kurz mit den Unterschieden zwischen uefi / bios befasst. Uefi enthält einen Bootloader, so dass grub / lilo / anything überflüssig ist. Was es oft nicht beinhaltet, ist ein Boot-Manager - für Menüs und andere
Dinge
3
Es ist immer noch das, was mit Slackware geliefert wird. Das ist kaum eine winzige Gemeinschaft.
Bandrami

Antworten:

28

ELILO

Verwalten von EFI-Bootloadern für Linux: Verwenden von ELILO

Es ist wirklich schwierig für mich zu entscheiden, welcher Teil davon kopiert und eingefügt werden soll, weil alles sehr gut ist. Ich bitte Sie daher, ihn zu lesen.

Rod Smith

Verfasst und verwaltet sowohl gdiskals auch rEFInd.

Aber bevor Sie es tun, möchte ich etwas dazu sagen. Der obige ELILO-Link führt zu einer der vielen Seiten zum Thema UEFI-Booten, die auf rodbooks.com von Rod Smith zu finden sind. Er ist ein erfahrener technischer Redakteur, und wenn Sie jemals das Thema UEFI-Booten gegoogelt und festgestellt haben, dass Sie etwas von ihm nicht gelesen haben, lag dies wahrscheinlich daran, dass Sie die ersten Ergebnisse übersprungen haben.

Linux UEFI booten

Grundsätzlich kann der Linux-Kernel direkt von der Firmware ausgeführt werden.

In dem obigen Link erwähnt er den EFI-Stubloader des Linux-Kernels - das ist es, was Sie meiner Meinung nach verwenden sollten, da der Linux-Kernel direkt von der Firmware selbst aufgerufen werden kann. Unabhängig davon, was Sie gerade tun, wird etwas von der Firmware ausgeführt - und es klingt so, als ob es sich um etwas handelt grub. Was nützt ein Bootloader, wenn die Firmware Ihren Betriebssystemkern direkt laden kann? Die UEFI-Firmware stellt eine FAT-formatierte GPT-Partition bereit, die von der Partitionstabelle als besonders gekennzeichnet wird, und führt dort einen Pfad aus, den sie als UEFI-Startvariable in einem integrierten Flash-Speichermodul gespeichert hat. Sie könnten also den Linux-Kernel auf diese FAT-Partition setzen und seinen Pfad in dieser Boot-Variablen speichern. Plötzlich ist der Kernel sein eigen Bootloader.

Bootloader

Auf UEFI-Systemen sind Bootloader redundant - einschließlich ELILO.

Das Problem, das Bootloader lösen sollten, bestand darin, dass BIOS-Systeme nur den ersten Sektor der Partition mit Boot- Flag einlesen und ausführen. Es ist ein wenig schwierig, mit einem 512-Byte-Kernel irgendetwas Sinnvolles zu machen. Daher war es üblich, ein winziges Hilfsprogramm zu schreiben, das ein Dateisystem mounten konnte, in dem Sie den eigentlichen Kernel aufbewahrten und ihn mit einer Kette luden.

Tatsächlich reichten die 512 Bytes selbst für die Bootloader oft nicht aus. grubBeispielsweise lädt sich die Kette selbst, bevor der Kernel geladen wird, da die zweite Phase im leeren Bereich zwischen dem Startsektor und dem ersten Sektor Ihres Dateisystems eingeklemmt wird. Es ist ein bisschen dreckig - aber es hat funktioniert.

Bootmanager

Aus Gründen der einfachen Konfiguration aber einige können go-between nützlich sein.

Rod Smiths rEFInd startet als EFI- Anwendung - dies ist ein relativ neues Konzept. Es ist ein Programm, das von der Festplatte ausgeführt wird und zu der Firmware zurückkehrt. Mit rEFInd können Sie Startmenüs verwalten und anschließend Ihre Startauswahl an die Firmware zurücksenden, um sie auszuführen. Es wird mit UEFI-Dateisystemtreibern geliefert. So können Sie/boot beispielsweise den EFI-Stubloader des Kernels auf einer Nicht-FAT- Partition (wie Ihrer aktuellen ) verwenden. Es ist kinderleicht zu verwalten - falls dies überhaupt erforderlich ist - und erweitert den Komfort eines konfigurierbaren Bootmanagers um die Einfachheit eines ausführbaren Systemkerns.

Atomare Indirektion

Der Kernel benötigt keine Symlinks - er kann mount --bind.

Wenn sich auf Ihrem Pfad ein Pfad befindet, auf /dem Sie Symlinking nicht zulassen sollten , ist dies der Fall /boot. Ein verwaister Symlink in /bootist nicht das Problem, das Sie jemals beheben sollten. Trotzdem ist es gängige Praxis, aufwendige Indirektionen /bootdurch mehrere Distributionen einzurichten - auch wenn dies eine schreckliche Idee ist -, um Kernel-Updates und / oder mehrere Kernel-Konfigurationen direkt durchzuführen.

Dies ist ein Problem für EFI-Systeme, die nicht zum Laden von Dateisystemtreibern konfiguriert sind (wie sie im rEFInd-Paket enthalten sind), da FAT insgesamt ein ziemlich dummes Dateisystem ist und diese nicht versteht.

Ich persönlich verwende die mit rEFInd gelieferten UEFI-Dateisystemtreiber nicht, obwohl die meisten Distributionen ein rEFInd-Paket enthalten, das über den Paketmanager installiert werden kann, und vergesse, nur ihre eigene schrecklich verknüpfte /bootKonfiguration und die mit rEFInd gelieferten UEFI-Dateisystemtreiber zu verwenden.

Meine Konfig

Ich habe einmal eine Anleitung dazu geschrieben und sie hier gepostet , aber sie sieht so aus:

% 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/

Also habe ich diese beiden Zeilen in meinen /etc/fstabVerweis auf einen Ordner gestellt, in dem sich die neue Linux-Installation befinden soll, /bootund ich bin fast fertig damit, mir Gedanken über das Ganze zu machen. Ich muss auch tun:

cat /boot/refind_linux.conf 

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

Abgesehen von der Installation des refind-efiPakets über pacmanfür das erste ist dies alles, was erforderlich ist, um so viele separate Installationen / Konfigurationen einzurichten, wie ich möchte. Beachten Sie, dass der Großteil der obigen Zeichenfolge aus btrfs-spezifischen Mount-Optionen besteht, die als Kernel-Parameter angegeben sind. Ein typischeres /boot/refind_linux.confwürde wahrscheinlich so aussehen:

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

Und das ist alles was es braucht.

rodbooks.de

Wenn Sie immer noch ELILO wollen, finden Sie die Installationsanweisungen unter dem obigen Link. Wenn Sie REFInd möchten, finden Sie dort im ersten Absatz Links dazu. Wenn Sie eine UEFI-Boot-Konfiguration vornehmen möchten, lesen Sie zuerst rodbooks.com .

mikeserv
quelle
3

Ich benutze LILO anstelle von GRUB2. Um ehrlich zu sein, war es nicht meine Wahl - die GRUB2-Installation schlug im Debian Live CD-Installer fehl, aber dann war die Option, LILO zu installieren, erfolgreich. Ich habe einen 2 Jahre alten Laptop, auf dem Debian Stable läuft. LILO arbeitet einwandfrei für mich.

Larsoden
quelle
1

LILO ist auch mit UEFI-BIOS noch verwendbar. UEFI kann den Linux-Kernel normalerweise direkt laden. Dies hängt jedoch von der UEFI selbst ab.

Wenn Sie jedoch einen Startauswahlbildschirm benötigen, z. B. wenn Sie mehrere Betriebssysteme auf einem Computer starten, ist ein kleiner Bootloader möglicherweise hilfreich.

Ich würde jedoch überlegen, stattdessen EXTLINUX zu verwenden. Es ist eine Variante von SYSLINUX, befindet sich jedoch in extPartitionen vom Typ.

Das Schöne an EXTLINUX ist, dass es zwar erweiterbarer ist und viel mehr Optionen bietet als LILO, aber genauso einfach und aktiv gewartet werden kann.

Polemon
quelle
-1 Das (deb / ubuntu) -Kernpaket aktualisiert EFI nicht. (EFI liest keine fs, die Symlinks unterstützen, Sie können also nicht einfach meine Antwort verwenden). +1 für EXTLINUX als neuere Alternative zu LILO. Ihr Link zeigt, dass er mehrere andere Dateisysteme unterstützt, was ein gutes Zeichen ist. Die EFI-Unterstützung sieht allerdings etwas neu aus, wo dies erforderlich ist.
Sourcejedi
@sourcejedi - du liegst falsch. Ein EFI-System, auf dem die richtigen EFI-Dateisystemtreiber geladen sind, kann Symlinks problemlos verarbeiten.
mikeserv
Aus irgendeinem Grund scheint es verboten zu sein, direkt auf syslinux.com zu verlinken.
Polemon
@mikeserv Ich weiß, aber das Laden eines Dateisystemtreibers erschien mir für die meisten Fälle etwas undurchsichtig. Sie müssten sogar eine Art EFI-Skript (Terminologie?) Installieren, um den Treiber und dann den Kernel zu laden. Ich wette, niemand hat MS-sichere Boot-Signaturen für diese Treiber, das ist also ein weiterer Wurm: p.
Sourcejedi
@sourcejedi - lesen Sie bitte die Antwort, die ich hier geschrieben habe? Und ja - Sie würden ein Mittel zum Laden des Treibers benötigen.
mikeserv
1

Ich erinnere mich an kein Äquivalent von update-grub. Es gibt jedoch ein älteres System, das immer noch in Debian unterstützt wird. (Es wird für Uboot auf meinem ARM-Server verwendet).

Der neueste Kernel ist mit sym- /boot/vmlinuzund initrd verbunden /boot/initrd.img. Es wird vom Kernel-Paket aktualisiert. Der Bootloader zeigt auf die Links, auf die bei jedem Bootvorgang verwiesen wird.

Daher erhalten Sie möglicherweise keine Wiederherstellungsoption. In jedem Fall wird dies nicht die am häufigsten getestete Option sein, weshalb es noch empfehlenswerter ist, eine funktionierende Bootdiskette bei sich zu haben :-).


Update: Wenn es Ihr Ziel ist, LILO nicht nur auf einem modernen Computer auszuführen, gibt es wahrscheinlich bessere Alternativen, wie in den anderen Antworten hier beschrieben :).

Das oben Gesagte ist nur für die ursprüngliche BIOS-basierte Version von LILO sinnvoll. Moderne Hardware bietet neben EFI auch BIOS-Kompatibilität, wenn Sie nicht über dasselbe Menü sicher booten oder Windows 8 booten möchten. Sie könnten ELILO theoretisch zum Laufen bringen, aber es unterstützt kein sicheres Booten oder Laden von Windows 8. ELILO macht im Allgemeinen keinen Sinn mehr, daher schätze ich, dass nicht viel von einer Community dahinter steckt.

sourcejedi
quelle
Pfui. Symlinks in / aus /bootsind eine schmutzige Lösung für jedes Problem.
mikeserv
welp lilo ist tot (und uboot veraltet) also ja. Was war das Problem, an das du gedacht hast? Die Leute benutzen FAT noch nicht für / boot ... BootLoaderSpec ist ein gutes Projekt, aber noch nicht wirklich da ... und es gibt einen guten Grund dafür (böse Patente, FLOSS-kompatible Lizenz, die nur für EFI Interop gewährt wird).
Sourcejedi
Das war ein guter Schnitt.
mikeserv