Foutje, bedankt!

Iedereen maakt weleens een foutje. En soms is dat een enorme stommiteit. Zoals het bij vergissing verwijderen van de bootpartitie van je laptop. Het lukte mij na ruim drie decennia computeren voor het eerst. Geen slechte score, maar wel een genante blunder. Gelukkig kwam het goed.

Wat gebeurde er?

Mijn laptop draait op Kubuntu 20.04. Die distro heeft een eigen partitiemanager, maar ik werk liefst met GParted. Een harde schijf uit mijn oude computer wilde ik voortaan als externe harde schijf gebruiken en daarvoor netjes schoonvegen. Toevallig is de harde schijf in mijn laptop precies even groot als die uit mijn oude PC en hebben beide een EFI bootpartitie. De oude schijf had die nog omdat die oorspronkelijk geconfigureerd was voor een draaiend besturingssysteem, de nieuwe schijf heeft die gewoon nodig om te kunnen draaien. De EFI is bedoeld als toekomstige vervanger van het aloude BIOS en zonder dat kan een computer gewoon niet meer starten.

De oude schijf heeft die bootpartitie uiteraard niet meer nodig, omdat die schijf nu alleen voor gegevensopslag dient. Dus verwijderde ik die… om direct daarna te concluderen dat ik de verkeerde schijf had geselecteerd. Dus had mijn laptop nu geen bootpartitie meer. Bij GParted moet je – dat wist ik allang – goed opletten welk device je rechtsboven selecteert. De vergissing was niet helemaal onlogisch, want beide schijven zagen er hetzelfde uit qua indeling.

…de fat32-partitie op deze harde schijf had het dus NIET moeten zijn…

Gelukkig draaide de laptop nog, dus ik had een werkend besturingssysteem. En dankzij Garikai Dzoma uit Zimbabwe, die mij reeds was voorgegaan in deze domheid, kon ik de zaak eenvoudig redden.

Hoe kwam het weer goed?

Dzoma geeft een handleiding voor wie de fout pas ontdekt bij het herstarten. Preciezer: het niet meer herstarten. In mijn geval was het eenvoudiger, want de laptop draaide nog. Ik vat samen (voor Ubuntu-systemen, maar bij andere distro’s zal het niet wezenlijk anders zijn).

  • Controleer eerst of de computer opstart in ‘EFI mode’ of in ‘Legacy mode’.

Uitleg. Dat laatste betekent namelijk, dat bij het opstarten het BIOS nog gewoon het stokje overdraagt aan de bootmanager, ofwel grub, die op dezelfde partitie staat als het besturingssysteem en die dat dan vervolgens opstart. Eigenlijk een omweg voor wie nog niet de EFI-methode gebruikt.  Bij ‘EFI mode’ gaat alles vanuit EFI bootpartitie zelf, dus als die weg is, is alles weg en kan het besturingssysteem niet meer gevonden worden.

Je controleert dit in een terminal met het volgende commando:

[ -d /sys/firmware/efi ] && echo “EFI boot on HDD” || echo “Legacy boot on HDD”

Uitleg. Het commando tussen rechte haken [ ] is voorwaardelijk. Als (‘IF’) het bestand ‘efi’ wordt gevonden, wordt de optie -d (‘Toon de harde schijf met de bootloader’) uitgevoerd. Dat geeft als output (‘IF YES THEN’) “EFI boot on HDD”. Is ‘efi’ er niet, dan wordt de output (‘IF NO THEN’) “Legacy boot on HDD”. (Met dank aan Maarten van Sonad voor de uitleg.)

Bij mij gaf dat de geruststellende uitkomst: “Legacy boot on HDD”. Zegt het bij jou “EFI boot on HDD”, helaas, dan helpt het volgende je niet verder.

  • Maak een nieuwe EFI bootpartitie aan met je partitiemanager, GParted bijvoorbeeld. Controleer tweemaal of je nu echt op de juiste schijf werkt, zoek de open ruimte aan het begin van de schijf en vul die met een nieuwe partitie van ongeveer 512 MB, met filesystem fat32.

Vink de flag ‘boot’ aan.

Kijk ook even bij de details van de nieuwe partitie en noteer de UUID ervan. Controleer tevens op welke ‘/dev’ je nu gaat booten. Dat zal ‘/dev/sda’ zijn, maar soms ook niet. Je kunt dat ook in een terminal doen met het commando:

sudo blkid

Je zoekt dan naar een regel als deze:

/dev/sda1: UUID="262E-43FA" TYPE="vfat" PARTUUID="8a022f9a-01"

Hier is het UUID van de bootpartitie dus ‘262E-43FA’ en type ‘vfat’ verwijst naar het fat32 filesystem.

  • Installeer grub opnieuw:

sudo grub-install /dev/sda

En werk grub bij:

sudo update-grub

  • Pas in fstab het UUID van de EFI bootpartitie aan. Open fstab in de terminal met een editor:

sudo nano /etc/fstab

Opmerking: nano is standaard geïnstalleerd, maar eigenlijk werkt mcedit prettiger, vind ik. Die installeert met Midnight Commander mee, de onverslaanbare grafische bestandsbeheerder voor de terminal. Merkwaardig genoeg zit die nooit bij de standaardinstallatie van Linux. Installeer die zelf met:

sudo apt install mc

Er moet een regel in fstab staan van dit soort (resp. <file system> <mount point> <type> <options> <dump>  <pass>):

UUID=262E-43FA    /boot/efi   vfat   umask=0077   0   1

Dat is het dan. Je hebt nu handmatig de bootpartitie hersteld, grub weer op orde gebracht en fstab bijgewerkt. Nu moet je systeem weer gewoon kunnen starten. Het mijne deed het.