FAQ: Linuxe parallel betreiben

FAQ: Linuxe parallel

Praxis & Tipps | FAQ

Ubuntu und ein anderes Linux parallel einzusetzen erscheint trivial, denn die eine Distribution nimmt die andere automatisch in ihr Bootmenü auf. Tatsächlich lauern dabei aber viele Stolpersteine.

Seit einigen Wochen nutzt Ubuntu auf meinem per UEFI bootenden System einen veralteten Kernel, obwohl es bei der Systemaktualisierung schon mehrfach neuere eingespielt hat. Liegt das vielleicht am Linux Mint, das ich kürzlich testweise parallel installiert habe?

Ihr PC startet offenbar standardmäßig den Bootmanager Grub von Linux Mint, weil das die Distribution ist, die Sie als Letztes aufgespielt haben. Dieser Bootmanager bekommt allerdings nicht automatisch mit, wenn das parallel installierte Ubuntu einen neuen Kernel einrichtet, denn Ubuntu trägt den nur in die Hauptkonfigurationsdatei seines eigenen Grub ein. Die Änderung verpufft daher bei Ihnen, schließlich entsteht das beim Start angezeigte Menü aus der grub.cfg von Linux Mint. Dort ist für Ubuntu halt nach wie vor der Kernel hinterlegt, den Mint bei Installation oder Update der Distribution für die beste Wahl hielt, als es die Konfigurationsdatei mit dem Werkzeug grub-mkconfig erzeugt hat.

Sie werden das Problem schnell, aber nur vorübergehend los, indem Sie einmalig Mint booten und dort via sudo update-grub eine neue grub.cfg erzeugen, denn dabei wird der neue Kernel erkannt. Falls Ihre Distributionen kein vergleichbares Skript mitbringt, müssen Sie das von solchen Skripten eingesetzte grub-mkconfig direkt bemühen, das bei Fedora und einigen anderen grub2-mkconfig heißt.

Das Ganze ist aber nur ein Workaround, den Sie beim nächsten Kernel-Update wiederholen müssten. Um die Ursache zu beseitigen, müssen Sie tiefer in die Trickkiste greifen, wie die folgenden Fragen und Antworten zeigen. Die erläutern auch, wie Sie weitere Fallstricke umgehen, denn bei einigen Distributionen greift der obige Workaround nicht – beispielsweise, wenn sie Fedora über einen Grub von Linux Mint oder Ubuntu starten.

Ich habe parallel zu meinem Ubuntu testweise ein Linux Mint installiert, das seinen Grub als Standard-Bootmanager eingerichtet hat. Wie übertrage ich diese Verantwortung wieder dem Grub von Ubuntu?

Starten Sie Ubuntu und öffnen Sie eine Kommandozeile, um dort ein ls /sys/firmware/efi/ auszuführen. Wenn das einige Dateien und Verzeichnisse auflistet, bootet Ihr Linux per UEFI. In dem Fall können Sie sudo grub-install ausführen, um den zu Ubuntu gehörenden Grub neu zu installieren und den EFI-Boot-Eintrag neu zu erzeugen. Letzteres überschreibt den Eintrag, den Mint angelegt hat, das Sie danach über den Grub von Ubuntu starten können.

Sollte das ls-Kommando einen Fehler liefern, startet Ihr System klassisch, was auch „Legacy-BIOS-Modus“ genannt wird. Auf den meisten Systemen können Sie den Grub von Ubuntu dann durch Eingabe von sudo grub-install /dev/sda wieder zum Standard-Bootmanager machen. Achtung: Sollte mehr als ein Datenträger in Ihrem System stecken, müssen Sie das Kommando anpassen. Schauen Sie dazu im BIOS-Setup nach, von welchem Datenträger das BIOS standardmäßig bootet; starten Sie dann Linux, um über die Laufwerksverwaltung (gnome-disks) den Linux-Gerätenamen dieses Datenträgers herauszufinden, den Sie dann hinter dem Aufruf von grub-install angeben müssen; Achtung, der darf keine Zahl enthalten, schließlich soll der Bootcode in den ersten Sektor des Datenträgers und nicht in eine seiner Partitionen. Um noch weitere Probleme und Risiken bei der Installation zu vermeiden, sollten Sie am besten vorübergehend alle Datenträger mit Ausnahme der Bootplatte abklemmen.

Ich boote Fedora über den Grub von Ubuntu. Obwohl ich bei Letzterem gerade erst sudo update-grub ausgeführt habe, wie c’t es mir geraten hat, startet Fedora mit einem steinalten Kernel voller Sicherheitslücken. Woran liegt das?

Bei Mint und Ubuntu erkennt grub-mkconfig den neuesten Fedora-Kernel oft nicht und greift stattdessen zum ältesten. Die erwähnten Distributionen sind hier aber nur Beispiele, denn das Gleiche passiert auch in anderen Konstellationen.

Bei PCs, die Betriebssysteme per UEFI starten, können Sie das Problem leicht umschiffen: Starten Sie Fedora einfach über seinen eigenen UEFI-Boot-Eintrag, den Sie im Bootmenü des BIOS (BIOS Boot Select/BBS) oder in der Startreihenfolge des BIOS-Setup finden. Der führt zum Fedora-eigenen Grub. Darüber bootet Fedora dann genau wie bei PCs, bei denen kein Mint parallel installiert ist. Dieser Ansatz vermeidet so alle Tücken, die bei der Parallelinstallation mehrerer Distributionen auftreten können.

Für PCs, die noch klassisch starten, gibt es keinen so handlichen Trick. Der am wenigsten aufwendige und robusteste Lösungsweg: beim Linux mit dem standardmäßig verwendeten Grub ein Skript in /etc/grub.d/ anlegen, das der grub.cfg einen Abschnitt hinzufügt, der mit dem Befehl configfile die grub.cfg eines parallel installierten Linux lädt. Früher, zu Zeiten der ersten Grub-Generation, haben fortgeschrittene Linux-Anwender das Problem gelöst, indem Sie bei Zweit- und Dritt-Linux etwas Code zum Aufruf von Grub an den Anfang der jeweiligen Root-Partition gelegt haben; der Grub des Erst-Linux konnte diesen dann per Chainloading starten. Dokumentation und grub-install des heute verwendeten Grub der zweiten Generation raten von der Installation an den Partitionsanfang aber stark ab, weil Grub 2 diese nicht zuverlässig beherrscht; die Installer mancher Linux-Distributionen können so eine Konstellation daher auch gar nicht mehr einrichten.

Ich will dieselbe Distribution ein zweites Mal installieren, dabei aber die Tücken bei der Parallelinstallation vermeiden, die Sie am Beispiel der Distributionen Linux Mint und Ubuntu beschrieben haben. Kann ich nicht jede vollkommen unabhängig von der anderen starten, wie es bei der Parallelinstallation von Fedora und Ubuntu auf UEFI-PCs gelingt? Also über individuelle UEFI-Booteinträge?

Das ist möglich, erfordert aber ein paar Handgriffe. Die folgenden Beispiele zeigen das am Beispiel eines neben Ubuntu installierten Linux Mint, denn so können Sie auch diese beiden sehr eng miteinander verwandten Distributionen vollkommen unabhängig voneinander parallel betreiben.

Bei der Installation von Mint müssen Sie manuell partitionieren und dabei eine zweite ESP erzeugen, damit der Grub von Mint nicht den Grub von Ubuntu überschreibt. Nach der Installation müssen Sie dann für beide Distributionen einen eigenen UEFI-Boot-Eintrag erzeugen. Das ist nötig, denn beide legen einen Starteintrag mit dem Bezeichner (Label) „Ubuntu“ an; daher überschreibt die eine Distribution den Eintrag der anderen nicht nur bei der Installation, sondern später hin und wieder auch bei Updates.

Viele Tücken bei der Parallelinstallation von Linux-Distributionen können Sie vermeiden, wenn Sie per UEFI booten und das zu startende Linux gleich im Boot-Menü des BIOS wählen.

Mit dem folgendem Befehl legen Sie etwa einen eigenen UEFI-Boot-Eintrag für Ubuntu an, dessen ESP unter /dev/sda2 zu finden ist:

sudo efibootmgr --create --label 'Mein Ubuntu' \
--disk /dev/sda --part 2 \
--loader '\EFI\ubuntu\shimx64.efi'

Rufen Sie das Kommando leicht modifiziert erneut auf, um einen zweiten Boot-Eintrag für Mint anzulegen. Ändern Sie dazu die Label-Angabe auf etwas wie „Mein Mint“; ferner müssen Sie die via --part übergebene Partitionsnummer gegen die der ESP austauschen, die Sie für Linux Mint angelegt haben.

Ich habe mehrere Linux-Distributionen parallel installiert. Wie erkenne ich, zu welcher der Grub gehört, der beim Booten das Menü zeigt?

Die Faustregel lautet: Grub gehört zur Distribution, die im Bootmenü ganz oben steht. Meist dürfte es der Bootmanager der zuletzt installierten oder aktualisierten Distribution sein. Zweifelsfrei lässt sich die Zugehörigkeit über die Kommandozeile von Grub klären. Diese können Sie durch Betätigen von „C“ öffnen, wenn Grub sein Menü zeigt. Geben Sie dort echo $root ein; Grub verrät dann die Partition, auf der es beim Booten standardmäßig nach den Teilen seiner selbst sucht, die man nach dem Booten von Linux unter /boot/grub/ sieht. Bei einer Angabe von „hd0,gpt7“ gehört der Grub beispielsweise zum Linux, das in der Partition 7 des Datenträgers liegt, den das BIOS als den ersten („hd0“) definiert; unter Linux ist das oft, aber nicht zwangsweise /dev/sda.

Die ganz oben im Bootmenü stehende Distribution kontrolliert meist den Bootmanager; wenn man ein parallel installiertes Linux darüber startet, kann die Installation der Nvidia-Treiber dort fehlschlagen.

Manchmal steht Ubuntu im Menü meines Bootmanagers ganz vorne, dann plötzlich wieder das parallel installierte Linux Mint, das ich hin und wieder nutze. Wie kommt das und kann ich das irgendwie verhindern?

Einige Distributoren installierten Grub per grub-install neu, wenn Sie bei der Systeminstallation ein frisches Grub-Paket erhalten; das birgt zwar Risiken, aber nur so können Distributoren beim klassischen Boot sichergehen, dass der Grub-Code in den ersten Sektoren des Bootdatenträgers aktualisiert wird. Daher kann es dazu kommen, dass bei einem Update von Mint dessen Grub die Rolle als Bootmanager übernimmt, bis es dann bei einem Update von Ubuntu irgendwann wieder zurückgeht. Damit wechselt dann auch die Menüreihenfolge (siehe vorherige Frage), weil jeder Grub eine eigene Konfigurationsdatei verwendet. Die Schritte, um das zu unterbinden, unterscheiden sich zwischen den verschiedenen Familien von Distributionen. Im Ubuntu-Universum erreichen Sie das gewünschte, indem Sie bei einer der Distributionen sudo dpkg-reconfigure grub-pc aufrufen und darüber die Neueinrichtung von Grub bei Updates untersagen.

Ich habe parallel zu meinem Ubuntu jüngst testweise ein Linux Mint installiert. Ich will jetzt aber doch bei Ubuntu bleiben und Mint wieder loswerden. Kann ich einfach die Partition löschen, auf der Mint liegt?

Das sollten Sie keinesfalls tun, solange Ihr Ubuntu über den Bootmanager von Mint startet. Der fällt nämlich höchstwahrscheinlich auf die Nase, wenn Sie die Mint-Partition löschen, denn bei vielen Distributionen und Bootkonstellationen lädt ein Grub von dort die Grub-Konfigurationsdatei oder Teile seiner selbst nach. Wenn es die nicht erreichen kann, zeigt Grub statt dem Bootmenü nur noch seine Kommandozeile. Wer die gut kennt, kann darüber in vielen Bootkonstellationen ein parallel installiertes Ubuntu starten. Vermeiden Sie so ein Dilemma besser, indem Sie auf den Grub von Ubuntu zurückwechseln (siehe zweite Antwort), bevor Sie die Partition mit Mint löschen.

Bevor Sie ein parallel installiertes Linux löschen, sollten Sie unbedingt sicherstellen, dass Sie nicht über dessen Bootmanager starten.

Ich habe an der grub.cfg von Fedora etwas geändert, um den Kernel immer mit einem Parameter zu starten, der die Performance meines Systems verbessern soll. Laut cat /proc/cmdline wird dieser Kernel-Parameter aber beim Start nicht übergeben. Ich verstehe nicht, wo es hakt, denn bei einem parallel installierten Ubuntu hat Ähnliches jüngst auf Anhieb geklappt.

Vermutlich starten Sie Fedora über den Grub von Ubuntu. Der merkt halt nicht, wenn Sie die Grub-Konfiguration von Fedora ändern. Das Problem ist dadurch eng mit dem verwandt, das die erste Antwort dieser FAQ näher erläutert hat. Der dort genannte Workaround hilft hier aber nicht, denn wenn update-grub oder grub-mkconfig eine neue Konfigurationsdatei erzeugen, erkennen Sie oft nicht, welche Kernel-Parameter der Grub parallel installierter Distributionen setzen würde. Sie müssen daher einen der in Antwort zwei, drei und vier dieser FAQ beschriebenen Wege nutzen oder die in /etc/grub.d/ liegenden Skripte zur Generierung der grub.cfg anpassen.

Ich schaffe es bei Fedora partout nicht, den proprietären Treiber von Nvidia zu installieren. Sind die denn zu blöd, das hinzukriegen? Bei meinem parallel installierten Linux Mint, über dessen Grub ich Fedora starte, geht es doch auch problemlos!

Höchstwahrscheinlich liegt die Ursache nicht bei Fedora, sondern bei Ihrem Dual-Boot-Setup, denn das birgt zwei Fallen. Die eine: Der Grub von Mint startet Fedora vermutlich über einen veralteten Kernel (siehe erste und dritte Frage), für den Fedora das zum Nvidia-Treiber gehörende Kernel-Modul womöglich nicht erzeugen kann – beispielsweise, weil Compiler oder Entwicklerdateien nur zum aktuellen Fedora-Kernel passen. Die zweite Falle: Die Installation schlägt fehl, weil Installations- oder RPM-Skripte über die Grub-Konfiguration von Fedora einen Kernel-Parameter setzen, der für Nvidias Treiber entscheidend ist; der Bootmanager von Mint bemerkt das aber nicht (siehe vorherige Frage), daher fährt das Ganze vor die Wand. Auch hier helfen wieder die Wege in den Antworten zwei bis vier. Das Ganze kann übrigens nicht nur Fedora passieren, sondern auch mit vielen anderen Distributionen.

Wer hat eigentlich Schuld daran, dass bei der Parallelinstallation mehrerer Linux-Distributionen so viele Tücken lauern? Arbeitet jemand daran, das besser zu machen?

Letztlich sind die Grub-Entwickler und alle Distributoren irgendwie schuld, denn die sind die seit Jahrzehnten bekannte Problematik allenfalls halbgar und nie wirklich konsequent angegangen. Besserung verspricht die vom Systemd-Projekt entwickelte Boot Loader Specification (BLS), die systemd-boot (vormals: Gummiboot) unterstützt. Über einige Eigenschaften der BLS herrscht aber Uneinigkeit, daher gibt es mittlerweile Implementierungen, die von der Spezifikationen abweichen. Dazu gehört ein Code mit einem BLS-Modul für Grub, mit dem das Ende April freigegebene Fedora 30 die Menüeinträge zum Start von Fedora ad hoc erzeugt. Falls andere Distributionen das Verfahren aufgreifen, wird das Besserung bringen; dafür ist aber noch viel Arbeit nötig, denn noch haben die Grub-Entwickler das BLS-Modul nicht einmal aufgenommen.

Auch die Systemd-Entwickler sind an der Problematik noch dran: Sie haben kürzlich die Extended BLS angekündigt, die einige Unstimmigkeiten beseitigt und weitere Problembereiche angeht. (thl)

Dieser Artikel stammt aus c't 13/2019

Kommentare

Anzeige