GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Ich habe einige eher schlechte Erfahrungen mit GRUB2 gemacht . Ich könnte sagen (und habe gesagt) einige unangenehme Dinge über seinen Design- und Entwicklungsprozess. Ich mag besonders seine Update-Methoden nicht:aus welchen Gründen auch immer muss es halbautomatisch mehrere Skripte aktualisieren – eines indirekt über ein anderes in einer Kette – für jedes Kernel-Update – oder viele andere kleinere (und scheinbar nicht zusammenhängende) Konfigurationsänderungen.

Dies steht in direktem Gegensatz zu früheren Erfahrungen, die ich mit LILO gemacht habe – zu dem ich ernsthaft überlege, zurückzukehren – da ich nie Probleme damit hatte und seine Konfiguration ziemlich einfach war. Zum einen musste ich, soweit ich mich erinnere, nur aktualisieren (oder besser gesagt, es wurde immer nur aktualisiert) eine einzelne, einfach zu verwaltende Konfigurations-Textdatei pro Kernel-Update.

Wie funktioniert also LILO auf moderner Hardware mit heutigen Kerneln? Wie funktioniert GRUB? Wie machen das andere Bootloader? Muss ich irgendwelche Vorbedingungen erfüllen, oder geht es nur darum, die Konfigurationsdatei zu schreiben und lilo auszuführen Kommando, wie ich es früher gerne in Erinnerung habe? Aktualisiert das Kernel-Paket-Update (Debian/Ubuntu) LILO wie bei GRUB2?

Akzeptierte Antwort:

ELILO

EFI-Bootloader für Linux verwalten:ELILO verwenden

Es ist wirklich schwierig für mich zu entscheiden, welchen Teil davon ich kopieren und einfügen soll, weil alles wirklich gut ist, also bitte ich Sie einfach, es zu lesen.

Rod Smith

Autor und verwaltet beide gdisk und rEFInd .

Aber bevor du das tust, möchte ich es ein wenig kommentieren. Der obige ELILO-Link führt zu einer der vielen Seiten zum Booten von UEFI, die Sie auf rodsbooks.com finden, geschrieben von Rod Smith. Er ist ein versierter technischer Redakteur, und wenn Sie jemals das Thema UEFI-Booten gegoogelt und nichts von ihm gelesen haben, lag das wahrscheinlich daran, dass Sie die ersten Ergebnisse übersprungen haben.

Linux-UEFI-Boot

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

Im obigen Link erwähnt er den EFI-Stub-Loader des Linux-Kernels – diesen sollten Sie meiner Meinung nach verwenden, da er es ermöglicht, den Linux-Kernel direkt von der Firmware selbst aufzurufen. Unabhängig davon, was Sie etwas tun wird von der Firmware ausgeführt – und es hört sich so an, als ob etwas grub ist . Wenn die Firmware Ihren Betriebssystemkern direkt laden kann, was nützt dann ein Bootloader? Die UEFI-Firmware mountet eine FAT-formatierte GPT-Partition mit dem Flag esp durch die Partitionstabelle und führt dort einen Pfad aus, den es als UEFI-Boot-Variable in einem Onboard-Flash-Speichermodul gespeichert hat. Eine Sache, die Sie also tun könnten, ist, den Linux-Kernel auf diese FAT-Partition zu legen und seinen Pfad in dieser Boot-Variablen zu speichern. Plötzlich ist der Kernel sein eigener Bootloader.

Bootloader

Auf UEFI-Systemen sind Bootloader redundant – ELILO eingeschlossen.

Das Problem, das Bootloader lösen sollten, war, dass BIOS-Systeme nur im ersten Sektor des Boots lesen gekennzeichnete Partition und führen Sie sie aus. Es ist ein wenig schwierig, mit einem 512-Byte-Kernel irgendetwas Sinnvolles zu tun, daher war es üblich, ein winziges Dienstprogramm zu schreiben, das ein Dateisystem mounten konnte, in dem Sie das tatsächliche behielten Kernel und Chainload es.

Verwandte:Shell während der Laufzeit im Skript bestimmen?

Tatsächlich reichten die 512 Bytes selbst für die Bootloader oft nicht aus. grub , zum Beispiel, verkettet sich selbst, bevor es jemals Ihren Kernel verkettet, weil es seine zweite Stufe verkeilt im leeren Bereich zwischen dem Bootsektor und dem ersten Sektor Ihres Dateisystems. Es ist eine Art schmutziger Hack – aber es hat funktioniert.

Bootmanager

Zur einfachen Konfiguration jedoch einige Vermittler kann nützlich sein.

rEFInd von Rod Smith startet als EFI Anwendung – Dies ist ein relativ neues Konzept. Es ist ein Programm, das von der Firmware von der Festplatte ausgeführt wird und zu ihr zurückkehrt. Mit rEFInd können Sie Startmenüs verwalten und dann Ihre Startauswahl an die Firmware zurückgeben ausführen. Es wird mit UEFI-Dateisystemtreibern geliefert – so können Sie zum Beispiel den EFI-Stub-Loader des Kernels auf einem Nicht-FAT verwenden Partition (wie Ihr aktueller /boot ). Es ist kinderleicht zu verwalten – falls so etwas überhaupt nötig ist – und es fügt die Einfachheit eines ausführbaren Systemkerns der Bequemlichkeit eines konfigurierbaren Bootmanagers hinzu.

Atomische Indirektion

Der Kernel benötigt keine symbolischen Links – er kann mount --bind .

Wenn es einen Pfad auf Ihrem / gibt wo Sie sollten symbolisches Linken nicht zulassen, es ist /boot . Ein verwaister Symlink in /boot ist nicht die Art von Problem, das Sie jemals beheben sollten. Dennoch ist es gängige Praxis, aufwändige Umleitungen in /boot einzurichten von mehreren Distributionen – auch wenn es eine schreckliche Idee ist – um direkte Kernel-Updates und/oder mehrere Kernel-Konfigurationen zu handhaben.

Das ist ein Problem für EFI-Systeme nicht zum Laden von Dateisystemtreibern konfiguriert (wie sie mit dem rEFInd-Paket bereitgestellt werden) weil FAT insgesamt ein ziemlich dummes Dateisystem ist und sie nicht versteht.

Ich persönlich verwende die mit rEFInd bereitgestellten UEFI-Dateisystemtreiber nicht, obwohl die meisten Distributionen ein rEFInd-Paket enthalten, das über den Paketmanager installiert werden kann, und vergessen, einfach ihren eigenen schrecklichen symbolverknüpften /boot zu verwenden config und die gepackten UEFI-Dateisystemtreiber von rEFInd.

Meine Konfiguration

Ich habe mal eine Anleitung dazu geschrieben und hier gepostet, aber es 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 einfach in meine /etc/fstab eingefügt auf einen Ordner zeigen, den ich beabsichtige, den /boot der neuen Linux-Installation zu enthalten und ich bin fast fertig, sich über die ganze Sache Gedanken zu machen. Ich muss auch Folgendes 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 von refind-efi Paket über pacman Für die erste ist das alles, was erforderlich ist, um so viele separate Installationen/Konfigurationen einzurichten, wie ich möchte. Beachten Sie, dass der Großteil dieser Zeichenfolge oben aus btrfs-spezifischen Einhängeoptionen besteht, die als Kernelparameter angegeben sind. Eine typischere /boot/refind_linux.conf würde wahrscheinlich so aussehen:

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

Und das ist alles was es braucht.

rodsbooks.com

Wenn Sie ELILO dennoch möchten, finden Sie unter dem obigen Link eine Installationsanleitung. Wenn Sie rEFInd möchten, finden Sie dort im ersten Absatz Links dazu. Wenn Sie eine UEFI-Startkonfiguration vornehmen möchten, lesen Sie grundsätzlich zuerst rodsbooks.com.

Verwandte:N-Alternative zu sed, die Unicode unterstützt?
Linux
  1. Die beste Lösung für die Dokumentenarchivierung?

  2. Die besten Web-Linux-Server

  3. Nagios Linux Server:Die beste Webüberwachungslösung?

  4. Wie überprüfe ich HZ im Terminal?

  5. Was sind die besten Möglichkeiten, um Aufgaben in Echtzeit auf einem Nicht-Echtzeit-Betriebssystem/Kernel auszuführen?

Die 5 besten Conky-Designs für Linux

Die 10 besten alternativen Windows-Betriebssysteme:Welches ist das Beste für Sie?

Die 13 besten alternativen Evernote-Notizen-Apps für Linux

Die 10 besten kostenlosen Office Suite-Software als MS Office-Alternative für Linux

Wie lernt man SELinux am besten?

Der beste Weg, um zu verhindern, dass sich das Root-System füllt, wenn ein Mount fehlschlägt?