Bij mijn twee Raspberry Pi’s heb ik soms het probleem dat ze na een nette shutdown niet meer willen opstarten.
Antoon van Dongen
Op de ene draai ik Domoticz op een 16GB micro-sd-kaartje. Dit kaartje was meegeleverd, inclusief Domoticz met “Slimme Meter”. Eerst dacht ik dat het een incident was, maar na een nieuw geleverd kaartje gebeurde dit weer. Gelukkig had ik een 16GB image gemaakt, maar op een gegeven moment lukte terugzetten niet meer.
Tegelijkertijd was ik bezig om op de andere Pi Smart-Home, Node-Red en Mosquitto te implementeren. Dit deed ik op een 8GB micro-sd-kaartje. Na veelvuldige aanpassingen in Node-Red bleef de Pi hangen. Opnieuw starten ging net als bij de Domoticz-Pi lang niet altijd goed. Ik maakte (achteraf gelukkig) de domme fout om het micro-sd-kaartje opnieuw te formatteren. En niet met de snelle, maar de volledige formatmethode. Pech: terugzetten van de image ging niet meer, het kaartje bleek een kleinere capaciteit gekregen te hebben.
Speurend op internet bleek al snel dat sd-kaartjes niet per definitie even groot zijn, zelfs niet van dezelfde uitvoering en fabrikant (?). Geheugenlocaties blijken na fabricage niet altijd (allemaal) te werken. Aha, dus gaan er op het kaartje locaties stuk bij (intensief?) gebruik. Mijn voorlopige conclusie: Raspbian doet iets niet helemaal fijn, althans, dat veronderstel ik. Hoe los ik dit op, want de data van de laatste goede image wil ik niet kwijt. Ook hier verzuip je op internet in de verschillende soorten informatie, maar gelukkig is er ook zinvolle documentatie.
Op raspberrypi.org/forums/viewtopic. php?f=29&t=247568 vind ik een script dat van de Pi een bootable image maakt, van zowel het OS als de data. Installatie van gdisk is wel vereist. Ongebruikte ruimte wordt niet (nutteloos) opgeslagen. Fijn is dat na het starten met deze verkleinde image de Pi bij de eerstvolgende start er zelf voor gaat zorgen dat de resterende ruimte van de sd-kaart ook in gebruik genomen wordt. Hoera, nu kan ik de volledig geformatteerde sd-kaartjes, ook al hebben ze een kleinere capaciteit gekregen, toch weer gebruiken.
Voor de Domoticz Pi had ik een nieuw sd-kaartje besteld van 16 GB en hier liep ik dus tegen het probleem aan dat dit kaartje een kleinere capaciteit had dan het vorige. Dus voor het terugzetten was hij onbruikbaar. Ik kocht daarom alsnog een duurdere 32 GB, maar de oplossing werkte hier helaas nog steeds niet. Het script concludeerde dat er te weinig diskruimte zou zijn om de image te kunnen plaatsen. Dat was niet zo, maar toch heb ik met raspi-config, Advanced Options en Expand Filesystem het fs vergroot. Ook dit bood geen soelaas. Wat doet Windows na een crash, zeker bij XP? chkdsk natuurlijk. Leve internet, hoe werkt dat bij een Pi? Ergens vond ik de tip om in ‘/boot/cmdline.txt’ de volgende regel op te nemen: fsck.mode=force fsck.repair=yes
Dus intoetsen: sudo nano /boot/cmdline.txt
en de file aanvullen met fsck.mode=force fsck.repair=yes
. Herstarten en… het werkte! Gelukkig lukte het nu wel om een gecomprimeerde image te maken. Het 32GB-kaartje kan voorlopig weer de kast in.
Samenvatting van alle handelingen:
Heb je nog een draaiende Pi, installeer de Image-backup-scripts zoals beschreven op raspberrypi.org/forums/viewtopic.php?f=29&t=247568. Ik gebruik FileZilla FTP Client om de bestanden op de Pi te plaatsen. Voer in de directory ‘/home/pi/ Image’ het commando chmod 755 ima*
uit, zodat de scripts executabel worden. Installeer gdisk door sudo apt-get install gdisk
in te toetsen.
Toets daarna het commando sudo ./image-backup
in (in ‘/home/pi/Image’). Hierdoor wordt het script gestart. De image moet in ‘/media’ geplaatst worden. Vul dus bijvoorbeeld in ‘/media/20210124. img’. Initial image ROOT filesystem
kun je default laten. Wel heb ik 500 MB extra ruimte toegevoegd. Is misschien niet noodzakelijk, maar het zou jammer zijn als de Pi wat extra ruimte nodig heeft en die bij opstart nog niet beschikbaar heeft. Na de bevestiging met Y is de Pi wel even bezig. We gaan nu verder met de micro-sd-kaart. Stop die in je Windows-computer en kies Beheren. Zie eventueel de instructie op youtube.com/ watch?v=Os0X-F9K4l8. Verwijder op de sd-kaart alle partities en formatteer hem met FAT32 met check (dus vinkje uit).
Volledige format
Nadat de image-back-up klaar is, haal je die (.img) naar je computer. Flash de image zoals je dat eerder met het OS gedaan hebt op de micro-sd-kaart, ik gebruik daar USB Image Tool voor. Voor uitwisseling van bestanden tussen de pc en de Pi, voor flashen en formatteren zijn vele andere opties. Welke gebruikt wordt, is niet relevant. Wel belangrijk is dat je bij eerder gebruikte micro-sd-kaarten een volledige format doet.
Tijdens de zoektocht heb ik verschillende usbsticks als bootable devices gebruikt. Ze vertonen hetzelfde probleem, ze gaan ook na verloop van tijd stuk. Ik heb zelf gemerkt dat de goedkoopste kaartjes en stickjes het langer volhouden dan de duurdere micro-sd-kaarten. Wel is het zaak dat de kaartjes en usb-sticks snel genoeg zijn. Langzamere versies werken gewoon helemaal niet. Verrassende bijkomstigheid is dat de Pi niet in staat is om loze ruimte op een usb-stick in gebruik te nemen. Maar met de beschreven imaging wordt na het starten van de verkleinde image wel de gehele ruimte op de stick benut, rara. Hopelijk kan ik met mijn ervaringen en zoekwerk anderen veel tijd, onnodige sd-kaartkosten en opslag van image-back-ups besparen.