Debian updaten, cryptsetup en lvm2

Na een tijdje van alles geupdate te hebben, had ik nog maar 1 pakket over; lvm2. In mijn achterhoofd rinkelde de bel nog over de versleutelde partitie, maar ging er van uit dat het wel goed zou gaan. Dus ik tikte het commando in om ook dit pakket te installeren.

root@pc:~# aptitude install lvm2

Het pakket werd netjes geinstalleerd en daarmee was de kous af. Omdat de updates eigenlijk invloed op het gehele systeem en er ook een nieuwe kernel was geinstalleerd wou ik wel even rebooten om alles netjes opnieuw gestart te hebben. Nadat ik op enter drukte na het invoeren van het reboot commando, keek ik toe hoe het systeem zichzelf resette, door de POST worstelde en vervolgens de nieuwe kernel laade. Maar dan kwam het op het punt dat het vroeg om de passphrase voor het activeren van de versleutelde partitie.


Enter passphrase to unlock the disk /dev/hda5 (hda5_crypt):
key slot 0 unlocked.
Command successful.
File descriptor 3 left open
Volume group "sunshine" not found
cryptsetup: failed to setup lvm device
done.
Begin: Waiting for root file system ... done.
Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/sunshine-root does not exist. Dropping to a shell!
(initramfs)

Uh, oh… Wat is hier mis? De passphrase was goed, anders zou daar gewoon weer om vragen. Het was de melding van cryptsetup, die aangaf waar het mis ging. De updates waren allemaal netjes verlopen en er was ook niks opgevallen. Geen rare dingen gezien en ik had toch zeker wel opgelet. Op dat moment begon ik te balen dat ik mijn laptop niet bij me had en tot overmaat van ramp zaten mijn handige live-cd’s niet in mijn ‘helpdesk-cd-map’. Gelukkig wel mijn Debian netboot cd en die heeft ook de handige boot optie ‘rescue‘.

Maak je gebruik van deze optie, dan laad de debian-installer alle benodigheden om het systeem bruikbaar te maken en het netwerk te starten. In dit geval vraagt het eerst ook nog om de passpharse om de versleutelde partitie te kunnen aanspreken. Vervolgens vraagt het welke partitie het moet gebruiken om het als root schijf in /target te mounten. Wanneer je de juiste partitie hebt gekozen, krijg je een aantal opties. Dit ging allemaal nog goed, dus ik concludeerde dat in principe alles nog zou moeten werken.

Omdat het systeem naar mijn weten verder in orde was, koos ik voor de optie om een shell te starten in de omgeving van de door mij zojuist gekozen partitie. Je kunt dit ook zelf doen je schijven zijn herkend en de versleutelde partitie geactiveerd is. Open een console door op ALT+F2 te drukken en op enter om de console te activeren. Je bent dan ook direct al root! Vervolgens kan je de benodigde partities mounten, maak wel eerst de directory /target aan als deze nog niet bestaat.


mkdir /target
mount /dev/mapper/sunshine-root /target/
mount /dev/hda1 /target/boot/
mount /dev/mapper/sunshine-usr /target/usr/
mount /dev/mapper/sunshine-var /target/var/
chroot /target

Je mount dus alles wat je nodig bent (daarom heb ik home niet gemount, die heb je niet nodig) en vervolgens chroot je naar /target. Dan heb je je vertrouwde omgeving in ieder geval om in te werken.

Omdat ik zelf niet bekend was met deze manier van setup, ging ik eerst maar eens Google raadplegen. Meestal wordt er in Debian een console browser geinstalleerd, vroeger was dit links of lynx, maar tegenwoordig is het w3m. Deze browser kan ook erg goed met tables en frames overweg en ook IPv6 aan. Mocht je deze browser nou nog niet hebben, kan je deze gewoon met aptitude installeren!

Zoeken op de melding van cryptsetup maakte het al gauw duidelijk. In het pakket van lvm2 was een verandering doorgevoerd, waardoor een commando dat cryptsetup aanriep niet meer werkte. Dit hebben ze opgelost door dit commando weer terug te zetten in het pakket. Maar waarom ging het dan juist na alle updates niet goed? Het eerste wat ik daarom dus deed was de versies controleren, om te zien of er misschien iets was blijven steken. Het klopte allemaal en dus ging ik verder kijken. Na enig lezen en diverse testen die ik heb uitgeprobeerd, begon het ineens bij me te dagen. Bij het updaten van het pakket lvm2, was er zover ik mij kon herinneren geen update van het initramfs gemaakt. Hierdoor zou het wel eens kunnen dat er dus miscommunicatie tussen de pakketten was.

Let er op dat als je je initramfs gaat updaten, dat je wel in chroot van je eigen syteem zit en niet die van de Debian installer. Ook is het belangrijk dat je in ieder geval de boot, root en usr gemount hebt. Om te updaten en te zien wat daarbij gebeurd, heb je het commando update-initramfs:

update-initramfs -v -u

Als dat gedaan is en je hebt gekeken of het allemaal goed is gegaan, kan je rebooten. Je kunt ook nog documentatie lezen over initramfs met betrekking op cryptsetup.

zless /usr/share/doc/cryptsetup/README.initramfs.gz

Nadat ik het initramfs had geupdate en de machine reboote ging het na het invoeren van de passphrase vlekkeloos over in het booten van de rest van het systeem.

Het heeft me wel even wat uurtjes gekost om het allemaal uit te zoeken, maar als je geduldig blijft en niet bang bent om de boel te slopen, komen je een heel eind. Ik hoop dat ik met deze post misschien nog mensen de goeie richting in kan helpen. Vragen en opmerkingen kan je uiteraard in de comments kwijt.

Artikelen: 1 2

Geef een reactie