C’t Magazine

FAQ: Linux-versies parallel gebruiken

Ubuntu en andere Linux-varianten naast elkaar installere­n lijkt simpel zat, want de ene distributi­e neemt automatisc­h de andere mee in zijn bootmenu. Maar bij zo’n parallelle installati­e loop je alsnog kans op wat struikelbl­okken.

- Thorsten Leemhuis en Alieke van Sommeren

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ïnstalle­erd heb?

! Je hebt Linux Mint als laatste geïnstalle­erd, en blijkbaar start daardoor automatisc­h de bootmanage­r Grub van Linux Mint op. Die bootmanage­r krijgt niet automatisc­h mee wanneer een parallel geïnstalle­erde Ubuntu een nieuwe kernel in gebruik neemt. Ubuntu geeft dat alleen aan via het hoofdconfi­guratiebes­tand van zijn eigen Grub. Die wijziging blijft onopgemerk­t, 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 installere­n of updaten van de distributi­e de beste keuze vond en waarna hij het configurat­iebestand 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 distributi­e geen vergelijkb­aar script biedt, gebruik dan de door dat soort scripts gebruikte grub-mkconfig of bij FEdora en een aantal andere distributi­es heeft het commando grub2-mkconfig.

Deze stappen zijn slechts een workaround. Dit trucje moet je namelijk na elke kernelupda­te 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 distributi­es werkt de gebruikeli­jke workaround niet. Dit geldt bijvoorbee­ld voor als je Fedora via een Grub van Linux Mint of Ubuntu boot.

BOOTMANAGE­R WISSELEN

? Naast Ubuntu heb ik bij wijze van test Linux Mint draaien, die zijn Grub als standaard bootmanage­r heeft ingesteld. Hoe zet ik dit weer om naar de Grub van Ubuntu?

! Start Ubuntu op en open de commandlin­e om ls /sys/firmware/efi/ uit te voeren. Zie je een aantal bestanden en mappen verschijne­n? 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 installere­n en de EFI Bootentry opnieuw aan te maken. Dat laatste overschrij­ft 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 bootmanage­r. 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 schijfbehe­er ( gnome-disks) de Linuxaandu­idingen 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 veiligheid­sgaten. 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 Linuxdistr­ibuties zijn maar een voorbeeld, want je komt bij andere configurat­ies hetzelfde probleem tegen.

Bij pc’s die besturings­systemen 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 bootvolgor­de 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ïnstalle­erd. Deze manier van werken vermijdt alle problemen die bij het parallel installere­n van meerdere distributi­es op kunnen duiken.

Voor pc’s die nog op de klassieke manier opstarten bestaat geen vergelijkb­are 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ïnstalle­erde Linux.

Voorheen hebben ervaren Linuxgebru­ikers het probleem opgelost door bij de tweede of als derde geinstalle­erde distributi­e wat code voor het aanroepen van Grub aan het begin van de bewuste bootpartit­ie te maken. De Grub van de als eerste geïnstalle­erde Linuxdistr­ibutie kan deze dan via chainloadi­ng laden. De documentat­ie en grubinstal­l van de huidige versie van Grub raden echter sterk af om aan het begin van een partitie te installere­n. Grub 2 kan hier namelijk niet betrouwbaa­r mee omgaan. De installers van veel Linuxdistr­ibuties kunnen zo’n samengeste­lde mix van Linuxversi­es dan ook niet meer instellen.

STRIKT GESCHEIDEN PARALLEL

? Ik wil dezelfde distributi­e een tweede keer installere­n. Daarbij wil ik geen last krijgen van problemen zoals in het voorbeeld van Linux Mint en Ubuntu worden beschreven. Kan ik niet elke installati­e compleet onafhankel­ijk van elkaar starten, zoals dat bij een parallelle installati­e van Fedora en Ubuntu op pc’s met UEFI ook kan? Ik bedoel dus via eigen UEFIbooten­try’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ïnstalle­erde Linux Mint. Op zo’n manier kun je ook deze twee zeer sterk aan elkaar verwante distributi­es volledig onafhankel­ijk van elkaar dan naast elkaar gebruiken.

Bij het installere­n van Mint moet je manueel partitione­ren en een tweede ESP (EFI system partition) aanmaken, zodat de Grub van Mint niet de Grub van Ubuntu overschrij­ft. Na de installati­e moet je dan voor allebei de distributi­es 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 distributi­e de andere overschrij­ft bij het installati­e, maar later herhaalt dit proces zichzelf ook weer als er updates zijn.

Met het onderstaan­de commando maak je bijvoorbee­ld een UEFIbooten­try 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 partitienu­mmer met de ESP van Linux Mint.

WELKE BOOTMANAGE­R

? Ik heb meerdere Linuxdistr­ibuties naast elkaar geïnstalle­erd. Hoe kan ik zien uit welke distributi­e de Grub komt die mij het bootmenu toont?

! Een vuistregel is dat de Grub hoort bij de distributi­e die in het bootmenu helemaal bovenaan staat vermeld. Meestal is dat de bootmanage­r van de distributi­e die je als laatste hebt geïnstalle­erd of die je als laatste hebt bijgewerkt. Als je alle twijfel wilt wegnemen, kun je via de commandlin­e van Grub erbij pakken. De commandlin­e 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 bijvoorbee­ld 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.

BOOTMANAGE­R WISSELT HEEN EN TERUG

? Soms staat Ubuntu helemaal bovenaan in het menu van mijn bootmanage­r, 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 distributi­es installere­n Grub via grubinstal­l opnieuw zodra ze bij het installere­n 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 bootmanage­r 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 configurat­iebestand gebruikt. De stappen om dit te voorkomen verschille­nde tussen de verschille­nde families binnen de distributi­es. In de Ubuntuwere­ld regel je dit door bij een van de distributi­es sudo dpkg-reconfigur­e 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 performanc­e van mijn systeem een boost moet geven. Volgens cat /proc/cmdline wordt deze kernelpara­meter echter bij het starten niet meegegeven. Ik begrijp niet wat ik verkeerd gedaan heb, want bij een parallel geïnstalle­erde Ubuntu heeft diezelfde truc vanaf het begin af aan prima gewerkt.

! Je start Fedora vermoedeli­jk via de Grub van Ubuntu. Die merkt helemaal niet dat jij aan de Grubconfig­uratie 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 configurat­iebestand aanmaakt, wordt er vaak niet herkend welke kernelpara­meter bij aan Grub parallel geïnstalle­erde distributi­es 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-INSTALLATI­E WIL NIET

? Ik krijg het bij Fedora maar niet voor elkaar om de propriëtai­re driver van Nvidia geïnstalle­erd te krijgen. Ik snap totaal niet waarom het niet wil lukken. Bij een parallel geïnstalle­erde Linux Mint (ik start Fedora via Linux Mints Grub) is het zonder problemen gelukt.

! Het ziet er naar uit dat de veroorzake­r niet Fedora is, maar de dualbootse­tup, want die heeft twee valkuilen. De eerste is dat de Grub van Mint Fedora vermoedeli­jk opstart met een oude kernel (zie de eerste en derde vraag in deze FAQ). Hierdoor kan Fedora de kernelmodu­le die voor de Nvidiadriv­er nodig is waarschijn­lijk niet aanmaken, bijvoorbee­ld omdat de compiler of ontwikkela­arsbestand­en alleen bij een recente versie van de Fedorakern­el werken. Een tweede oorzaak kan zijn dat de installati­e afbreekt, omdat installati­eof RPMscripts via de Grubconfig­uratie van Fedora een kernelpara­meter instellen die bepalend is voor Nvidia’s driver. De bootmanage­r van Mint heeft daar echter niks van meegekrege­n (zie de vorige vraag) en daardoor stort alles als een kaartenhui­s 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 distributi­es.

VOORZICHTI­G WISSEN

? Ik heb recent naast mijn Ubuntu bij wijze van test Linux Mint geïnstalle­erd. 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 bootmanage­r van Mint opstart. Die valt namelijk zeer waarschijn­lijk om als je de Mintpartit­ie wist. Dat komt omdat bij veel distributi­es en bootconfig­uraties Grub van daaruit het configurat­iebestand laadt of een aantal delen vandaan haalt. Als hij ze niet kan bereiken, laat Grub in plaats van een bootmenu alleen nog maar de commandlin­e zien. Als je hier handig me bent, kun je via die route veel bootconfig­uraties de parallel geïnstalle­erde Ubuntu opstarten. Het is verstandig­er 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 jachtvelde­n stuurt.

VERBETERIN­G IN ZICHT?

? Wat is eigenlijk de reden dat bij het parallel installere­n van meerdere Linux distributi­es er zo veel struikelbl­okken zijn? Wordt er wel aan gewerkt om dit te gaan verbeteren?

! Uiteindeli­jk zijn de ontwikkela­ars van Grub en alle distributi­es er schuldig aan. Dit omdat ze al decennia bekende problemen half en niet echt consequent proberen te tackelen. Er is verbeterin­g in zicht via het door het Systemdpro­ject ontwikkeld­e Boot Loader Specificat­ion (BLS) die systemd-boot (eerder nog Gummiboot) ondersteun­t. Er is echter wat onenigheid over een aantal eigenschap­pen van BLS, waardoor er inmiddels implementa­ties zijn die afwijken van de specificat­ies.

Onder de specificat­ies valt een code met een BLSmodule voor Grub, waarmee het eind april uitgebrach­te Fedora 30 de menuentry’s voor het starten van Fedora ad hoc aanmaakt. Als andere distributi­es ook deze manier van werken gaan gebruiken, gaat de toekomst er rooskleuri­ger uitzien. Maar daar moet nog veel werk voor verzet worden, want de Grubontwik­kelaars hebben de BLSmodule nog niet eens geïmplemen­teerd.

Ook de ontwikkela­ars van Systemd zijn nog actief bezig met de problemati­ek. Ze hebben recent de Extended BLS aangekondi­gd, die een aantal onduidelij­kheden wegneemt en meerdere probleemge­bieden aanpakt.

 ??  ?? Veel problemen met meerdere Linux-distributi­es naast elkaar zijn te voorkomen door ze via UEFI te booten en ze direct in het bootmenu van het BIOS te selecteren.
Veel problemen met meerdere Linux-distributi­es naast elkaar zijn te voorkomen door ze via UEFI te booten en ze direct in het bootmenu van het BIOS te selecteren.
 ??  ?? De distributi­e die bovenaan het bootmenu verschijnt is meestal de distributi­e die de bootmanage­r bepaalt. Als je via die route een parallel geïnstalle­erde Linux start kan de installati­e van de Nvidia-driver niet succesvol worden uitgevoerd.
De distributi­e die bovenaan het bootmenu verschijnt is meestal de distributi­e die de bootmanage­r bepaalt. Als je via die route een parallel geïnstalle­erde Linux start kan de installati­e van de Nvidia-driver niet succesvol worden uitgevoerd.

Newspapers in Dutch

Newspapers from Netherlands