FAQ: Linux-versies parallel gebruiken
Ubuntu en andere Linux-varianten naast elkaar installeren lijkt simpel zat, want de ene distributie neemt automatisch de andere mee in zijn bootmenu. Maar bij zo’n parallelle installatie loop je alsnog kans op wat struikelblokken.
OUDE KERNEL
? Sinds een paar weken gebruikt Ubuntu op mijn via UEFI bootende pc een verouderde kernel. Dit ondanks het feit dat ik bij het updaten al meerdere malen alles heb bijgewerkt. Kan dat liggen aan Linux Mint dat ik recent ernaast geïnstalleerd heb?
! Je hebt Linux Mint als laatste geïnstalleerd, en blijkbaar start daardoor automatisch de bootmanager Grub van Linux Mint op. Die bootmanager krijgt niet automatisch mee wanneer een parallel geïnstalleerde Ubuntu een nieuwe kernel in gebruik neemt. Ubuntu geeft dat alleen aan via het hoofdconfiguratiebestand van zijn eigen Grub. Die wijziging blijft onopgemerkt, waardoor bij het starten van het menu grub.cfg van Linux Mint wordt geladen. Daarin staat de status van Ubuntu’s kernel die Mint op het moment van installeren of updaten van de distributie de beste keuze vond en waarna hij het configuratiebestand met de tool grub-mkconfig heeft aangemaakt.
Dit probleem is snel op te lossen, maar de fix is slechts een tijdelijke. Boot Linux Mint eenmalig en regel daarin via sudo update-grub een nieuwe grub.cfg. Daarbij ziet hij ook de nieuwe kernel. Voor het geval je distributie geen vergelijkbaar script biedt, gebruik dan de door dat soort scripts gebruikte grub-mkconfig of bij FEdora en een aantal andere distributies heeft het commando grub2-mkconfig.
Deze stappen zijn slechts een workaround. Dit trucje moet je namelijk na elke kernelupdate weer herhalen. Om de oorzaak te verhelpen, moet je wat dieper onder de motorkap gaan tweaken, zoals de volgende vragen in deze FAQ laten zien. Ze verklaren ook hoe je valkuilen kunt voorkomen. Want bij sommige distributies werkt de gebruikelijke workaround niet. Dit geldt bijvoorbeeld voor als je Fedora via een Grub van Linux Mint of Ubuntu boot.
BOOTMANAGER WISSELEN
? Naast Ubuntu heb ik bij wijze van test Linux Mint draaien, die zijn Grub als standaard bootmanager heeft ingesteld. Hoe zet ik dit weer om naar de Grub van Ubuntu?
! Start Ubuntu op en open de commandline om ls /sys/firmware/efi/ uit te voeren. Zie je een aantal bestanden en mappen verschijnen? Dan betekent dit dat je Linux via UEFI boot. In dit geval kun je sudo grub-install uitvoeren om de Grub van Ubuntu opnieuw te installeren en de EFI Bootentry opnieuw aan te maken. Dat laatste overschrijft de entry die Linux Mint heeft aangemaakt. Die kun je dan nu via de Grub van Ubuntu opstarten.
Mocht het lscommando een fout opleveren, dan start je pc op de klassieke manier op, ook wel Legacy BIOS modus genoemd. Op de meeste systemen is de Grub van Ubuntu dan door het invoeren van sudo grub-install /dev/sda weer in te stellen als standaard bootmanager. Let wel op als je meer dan één disk in je systeem hebt zitten: dan moet je het commando aanpassen. Kijk in je BIOS setup na vanaf welke disk Linux standaard opstart. Start dan Linux op om via het schijfbeheer ( gnome-disks) de Linuxaanduidingen voor de disks uit te voegen. Deze moet je aan het commando grub-install toevoegen. Let hier weer op dat de aanduiding geen getal bevat, de bootcode moet in de eerste sector van de disk belanden en niet op een van de partities.
ONVEILIGE KERNEL
?
Ik start Fedora op via de Grub van Ubuntu. Hoewel ik bij Ubuntu sudo update-grub heb uitgevoerd (zoals jullie mij aanraden) start Fedora op met een antieke kernel vol met veiligheidsgaten. Hoe komt dat?
!
Bij Mint en Ubuntu herkent grub-mkconfig de nieuwste kernel van Fedora vaak niet en valt dan terug op de oudste. De genoemde Linuxdistributies zijn maar een voorbeeld, want je komt bij andere configuraties hetzelfde probleem tegen.
Bij pc’s die besturingssystemen via UEFI opstarten, is het probleem makkelijk te omzeilen. Start Fedora via zijn eigen UEFIentry die je in het bootmenu van je BIOS (Bios Boot Select oftewel BBS) of in de bootvolgorde van je BIOS setup kunt vinden. Deze komt uit bij de eigen Grub van Fedora. Via die route boot Fedora dan op dezelfde manier als bij pc’s waarbij geen Linux Mint paral
lel staat geïnstalleerd. Deze manier van werken vermijdt alle problemen die bij het parallel installeren van meerdere distributies op kunnen duiken.
Voor pc’s die nog op de klassieke manier opstarten bestaat geen vergelijkbare truc. De beste oplossing die niet al te veel moeite kost is bij een versie van Linux die met de standaard Grub werkt een script in /etc/grub.d/ aanmaken dat grub.cfg aanvult. Daarin laad je met het commando configfile een parallel geïnstalleerde Linux.
Voorheen hebben ervaren Linuxgebruikers het probleem opgelost door bij de tweede of als derde geinstalleerde distributie wat code voor het aanroepen van Grub aan het begin van de bewuste bootpartitie te maken. De Grub van de als eerste geïnstalleerde Linuxdistributie kan deze dan via chainloading laden. De documentatie en grubinstall van de huidige versie van Grub raden echter sterk af om aan het begin van een partitie te installeren. Grub 2 kan hier namelijk niet betrouwbaar mee omgaan. De installers van veel Linuxdistributies kunnen zo’n samengestelde mix van Linuxversies dan ook niet meer instellen.
STRIKT GESCHEIDEN PARALLEL
? Ik wil dezelfde distributie een tweede keer installeren. Daarbij wil ik geen last krijgen van problemen zoals in het voorbeeld van Linux Mint en Ubuntu worden beschreven. Kan ik niet elke installatie compleet onafhankelijk van elkaar starten, zoals dat bij een parallelle installatie van Fedora en Ubuntu op pc’s met UEFI ook kan? Ik bedoel dus via eigen UEFIbootentry’s?
! Dat is inderdaad mogelijk, maar daarvoor moet je wel een aantal dingen aanpassen. In het volgende voorbeeld gaat het om een naast Ubuntu geïnstalleerde Linux Mint. Op zo’n manier kun je ook deze twee zeer sterk aan elkaar verwante distributies volledig onafhankelijk van elkaar dan naast elkaar gebruiken.
Bij het installeren van Mint moet je manueel partitioneren en een tweede ESP (EFI system partition) aanmaken, zodat de Grub van Mint niet de Grub van Ubuntu overschrijft. Na de installatie moet je dan voor allebei de distributies een eigen UEFI bootentry aanmaken. Dit is nodig omdat ze allebei een entry met als label ‘Ubuntu’ aanmaken. Dit zorgt niet alleen dat de ene distributie de andere overschrijft bij het installatie, maar later herhaalt dit proces zichzelf ook weer als er updates zijn.
Met het onderstaande commando maak je bijvoorbeeld een UEFIbootentry aan voor Ubuntu waarbij de ESP onder /dev/sda2 is te vinden: sudo efibootmgr --create
--label 'Mijn Ubuntu'
--disk /dev/sda --part 2
--loader '\EFI\ubuntu\shimx64.efi'
Roep het commando met kleine aanpassing nog een keer aan voor de tweede bootentry voor Linux Mint. Verander het label in iets als ‘Mijn Mint’ en verwissel het achter --part aangegeven partitienummer met de ESP van Linux Mint.
WELKE BOOTMANAGER
? Ik heb meerdere Linuxdistributies naast elkaar geïnstalleerd. Hoe kan ik zien uit welke distributie de Grub komt die mij het bootmenu toont?
! Een vuistregel is dat de Grub hoort bij de distributie die in het bootmenu helemaal bovenaan staat vermeld. Meestal is dat de bootmanager van de distributie die je als laatste hebt geïnstalleerd of die je als laatste hebt bijgewerkt. Als je alle twijfel wilt wegnemen, kun je via de commandline van Grub erbij pakken. De commandline open je door op het moment dat Grub het menu toont op ‘c’ te drukken. Voer dan het commando echo $root in. Grub geeft dan de partitie aan waar hij bij het booten standaard naar zijn eigen onderdelen zoekt, die na het booten van Linux onder /boot/grub/ staan. Bij een input van hd0,gpt7 hoort bijvoorbeeld de Grub een een versie van Linux die op de zevende partitie van de disk staat die het BIOS als eerste (hd0) instelt. Bij Linux is dat vaak (maar niet verplicht) /dev/sda.
BOOTMANAGER WISSELT HEEN EN TERUG
? Soms staat Ubuntu helemaal bovenaan in het menu van mijn bootmanager, daarna weer Linux Mint dat er parallel naast draait en ik af en toe gebruik. Hoe komt dat en hoe kan ik het voorkomen?
! Een aantal distributies installeren Grub via grubinstall opnieuw zodra ze bij het installeren een nieuwer Grubpakket krijgen. Dit is een risico, maar het is de enige manier om bij klassiek booten zeker te weten dat de Grubcode in de eerste sectors van de disk met de bootdata wordt bijgewerkt. Het kan dus gebeuren
dat als Mint een update krijgt en zijn Grub de rol als bootmanager overneemt, totdat er door een update van Ubuntu weer van stuivertje wordt gewisseld. Daardoor wisselt ook de volgorde in het menu (zie de eerdere vraag), omdat elke Grub een eigen configuratiebestand gebruikt. De stappen om dit te voorkomen verschillende tussen de verschillende families binnen de distributies. In de Ubuntuwereld regel je dit door bij een van de distributies sudo dpkg-reconfigure grub-pc op te roepen en op die manier het opnieuw instellen van Grub bij updates voorkomt.
PARAMETER WORDT GENEGEERD
?
Ik heb wat zitten knutselen aan de grub.cfg van Fedora. Dit om de kernel altijd op te starten met een parameter die de performance van mijn systeem een boost moet geven. Volgens cat /proc/cmdline wordt deze kernelparameter echter bij het starten niet meegegeven. Ik begrijp niet wat ik verkeerd gedaan heb, want bij een parallel geïnstalleerde Ubuntu heeft diezelfde truc vanaf het begin af aan prima gewerkt.
! Je start Fedora vermoedelijk via de Grub van Ubuntu. Die merkt helemaal niet dat jij aan de Grubconfiguratie van Fedora aan het sleutelen bent geweest. Het probleem lijkt erg sterk op het geval dat we in de eerste vraag van deze FAQ hebben uitgelegd. Maar dezelfde workaround werkt hier niet. Want als je via update-grub of grub-mkconfig een nieuw configuratiebestand aanmaakt, wordt er vaak niet herkend welke kernelparameter bij aan Grub parallel geïnstalleerde distributies staat ingesteld. Je moet om die reden de in antwoord twee, drie en vier van deze FAQ beschreven wegen gebruiken of de in /etc/grub.d/ aanwezige scripts voor het aanmaken van grub.cfg aanpassen.
NVIDIA-INSTALLATIE WIL NIET
? Ik krijg het bij Fedora maar niet voor elkaar om de propriëtaire driver van Nvidia geïnstalleerd te krijgen. Ik snap totaal niet waarom het niet wil lukken. Bij een parallel geïnstalleerde Linux Mint (ik start Fedora via Linux Mints Grub) is het zonder problemen gelukt.
! Het ziet er naar uit dat de veroorzaker niet Fedora is, maar de dualbootsetup, want die heeft twee valkuilen. De eerste is dat de Grub van Mint Fedora vermoedelijk opstart met een oude kernel (zie de eerste en derde vraag in deze FAQ). Hierdoor kan Fedora de kernelmodule die voor de Nvidiadriver nodig is waarschijnlijk niet aanmaken, bijvoorbeeld omdat de compiler of ontwikkelaarsbestanden alleen bij een recente versie van de Fedorakernel werken. Een tweede oorzaak kan zijn dat de installatie afbreekt, omdat installatieof RPMscripts via de Grubconfiguratie van Fedora een kernelparameter instellen die bepalend is voor Nvidia’s driver. De bootmanager van Mint heeft daar echter niks van meegekregen (zie de vorige vraag) en daardoor stort alles als een kaartenhuis ineen. Ook in dit geval zijn de antwoorden op de vragen twee tot en met vier de beste remedie. Dit komt overigens niet alleen voor bij Fedora, maar ook bij veel andere distributies.
VOORZICHTIG WISSEN
? Ik heb recent naast mijn Ubuntu bij wijze van test Linux Mint geïnstalleerd. Ik wil toch liever bij Ubuntu blijven en Linux Mint weer de deur uit gooien. Kan ik simpelweg de partitie waar Linux Mint op staat weggooien en is het dan geregeld?
! Dit moet je in ieder geval niet doen zolang je Ubuntu via de bootmanager van Mint opstart. Die valt namelijk zeer waarschijnlijk om als je de Mintpartitie wist. Dat komt omdat bij veel distributies en bootconfiguraties Grub van daaruit het configuratiebestand laadt of een aantal delen vandaan haalt. Als hij ze niet kan bereiken, laat Grub in plaats van een bootmenu alleen nog maar de commandline zien. Als je hier handig me bent, kun je via die route veel bootconfiguraties de parallel geïnstalleerde Ubuntu opstarten. Het is verstandiger om dit soort drama compleet te voorkomen, door naar Grub voor Ubuntu te wisselen (zie het tweede item), voordat je de partitie met Mint naar de digitale eeuwige jachtvelden stuurt.
VERBETERING IN ZICHT?
? Wat is eigenlijk de reden dat bij het parallel installeren van meerdere Linux distributies er zo veel struikelblokken zijn? Wordt er wel aan gewerkt om dit te gaan verbeteren?
! Uiteindelijk zijn de ontwikkelaars van Grub en alle distributies er schuldig aan. Dit omdat ze al decennia bekende problemen half en niet echt consequent proberen te tackelen. Er is verbetering in zicht via het door het Systemdproject ontwikkelde Boot Loader Specification (BLS) die systemd-boot (eerder nog Gummiboot) ondersteunt. Er is echter wat onenigheid over een aantal eigenschappen van BLS, waardoor er inmiddels implementaties zijn die afwijken van de specificaties.
Onder de specificaties valt een code met een BLSmodule voor Grub, waarmee het eind april uitgebrachte Fedora 30 de menuentry’s voor het starten van Fedora ad hoc aanmaakt. Als andere distributies ook deze manier van werken gaan gebruiken, gaat de toekomst er rooskleuriger uitzien. Maar daar moet nog veel werk voor verzet worden, want de Grubontwikkelaars hebben de BLSmodule nog niet eens geïmplementeerd.
Ook de ontwikkelaars van Systemd zijn nog actief bezig met de problematiek. Ze hebben recent de Extended BLS aangekondigd, die een aantal onduidelijkheden wegneemt en meerdere probleemgebieden aanpakt.