Helt plötsligt kan du inte få kontakt med din Raspberry Pi. Det kan vara operativsystemet som har kraschat, ett korrupt minneskort eller liknande problem. Hur kan sådana fadäser undvikas?

Av Patrik Hermansson

Kompetent hårdvara med blygsam prislapp. Det är inte konstigt att detta lilla underverk har blivit populärt. Fast det är inte perfekt, en svag punkt är till exempel bruket av minneskort. Därför några tips på hur du skapar en stabil och driftsäker miljö.

 

Steg 1 – Säkerhetskopiera

För detta finns flera metoder. En variant är att stänga av enheten och flytta minneskortet till en annan dator. Där kan du sedan använda ett program för att skapa en avbild av innehållet på kortet. Det är dock en relativt klumpig lösning, som medför nedtid och innebär manuellt arbete.

En bättre lösning är att använda programmet Rsync. Detta program kan köras schemalagt via Cron. Det skapar inkrementella säkerhetskopior som kan lagras på till exempel ett USB-minne.

För att Rsync ska fungera bra krävs rätt inställningar och lite förberedelser, men som tur är finns det ett färdigt skript för detta. Skriptet återfinns på Github (https://github.com/aweijnitz/pi_backup). För att använda detta på en Raspberry Pi med Raspbian börjar vi med att hämta, packa upp och byta till den katalog som skapas:

wget https://github.com/aweijnitz/ pi_backup/archive/master.zip

unzip master.zip

cd pi_backup-master

 

Skriptet har en rad som anger var säkerhetskopian ska lagras. För vårt exempel används ett USB-minne som när det kopplas in får beteckningen /dev/sda.

Kommandot ”mount” visar att det har monterats i katalogen /media/pi/B829D41B. Detta är alltså sökvägen till minnet och ska anges i skriptet:

nano backup.sh

… MOUNTPOINT= /media/pi/B829-D41B”

 

Filen sparas sedan innan den görs körbar och kopieras till lämplig katalog:

chmod + x backup.sh

sudo cp backup.sh /usr/local/bin

 

Skriptet kan sedan testas:

backup.sh

 

Slutligen läggs skriptet till i schemaläggaren:

crontab –e

 

Följande rad läggs till längst ned för att köra skriptet varje halvtimme:

*/30 * * * * /usr/local/bin/backup.sh

 

Steg 2 – Använd bra SD-kort

Precis som andra produkter har minneskorten varierande kvalitet. Det är därför en bra idé att köpa ett märkeskort från en seriös handlare. Exempel på stora tillverkare är Sandisk, Lexar och Kingston. Du bör göra detta, då ett operativsystem skriver frekvent till SD-kortet, vilket påverkar livslängden.

 

Steg 3 – Använd bra nätadapter

Det finns undermåliga nätadaptrar på marknaden. Det är inte alltid billiga sådana kan lämna den effekt som uppges. Billiga adaptrar kan dessutom vara farliga. Det finns sådana där tillverkaren har kapat kostnader genom att utesluta skyddskomponenter eller genom att använda komponenter som precis klarar kraven men utan marginaler. Det finns även exempel där tillverkaren har gjort isolationsavstånden för små, något som ger risk för överslag och i värsta fall brand.

Problem med strömförsörjningen kanske inte resulterar i brand, men det kan också ge andra utslag. Din Raspberry Pi kan starta om oväntat eller krascha. Det kan även leda till korrupta data på minneskortet.

En liten UPS kan vara en bra investering. Foto från modmypi.com.

Med andra ord är det värt att lägga ut några extra kronor och köpa minneskort från en etablerad och välkänd butik. Det kan även vara bra med en UPS, till exempel UPS Pico. Denna UPS monteras ovanpå din Raspberry Pi.

 

Steg 4 – Uppdatera mjukvaran

För att systemet ska fungera så bra som möjligt är det viktigt att med jämna mellanrum uppdatera den installerade mjukvaran. Hur detta görs beror på vilket operativsystem som används.

För Raspbian används följande kommandon:

sudo apt update

sudo apt dist-upgrade

 

Överflödiga installationsfiler kan sedan  raderas:

sudo apt clean

 

Steg 5 – Skrivskydda minneskortet

Nästa steg är att skrivskydda, vilket minimerar användningen av minneskortet.

Först får du ta bort den vanliga loggfunktionen. Den är nämligen konstruerad för att skriva loggfiler till lagringsenheten, något som inte fungerar med ett skrivskyddat minneskort. För att ändå ha en loggfunktion för felsökning kan Syslog från Busybox användas. Detta program installeras med följande kommando, och i samma moment är det också lämpligt att ta bort det vanliga Rsyslog:

sudo apt-get install busybox syslogd

sudo dpkg –purge rsyslog

 

Ett annat program som måste bort är Fake-hwclock, ett program som hanterar systemklockan, då Raspberry Pi saknar en hårdvaruklocka. Tidshållningen sköts istället av Ntpdate, som till skillnad från Fake-hwclock inte behöver skriva till minneskortet.

sudo apt remove –purge fake hwclock

sudo apt install ntpdate

 

Sedan läggs följande rad till i /etc/ rc.local:

/usr/sbin/ntpdate -b pool.ntp.org

 

Nästa steg är att avaktivera swap-filer och filsystemskontroller. De sistnämnda kan ställa till problem med tidsangivelser när du har avinstallerat Fake-hwclock, problem som kan leda till att systemet inte kan starta.

Både swap och filsystemskontroller hanteras i filen /boot/cmdline.txt, där följande läggs till i slutet på den befintliga raden:

fastboot noswap

 

Näst ut är att hindra tjänster från att försöka skriva till minneskortet. Detta görs enklast genom att ta bort de kataloger tjänsterna skriver till. Istället ersätts de med en länk till /tmp:

sudo rm -rf /var/lib/dhcp/ /var/run /var/spool /var/lock

sudo ln -s /tmp /var/lib/dhcp

sudo ln -s /tmp /var/run

sudo ln -s /tmp /var/spool

sudo ln -s /tmp /var/lock

 

Slutligen avaktiveras ett antal startskript. Här får man välja lite efter behov:

sudo insserv -r bootlogs

 

Om ljud inte ska användas:

sudo insserv -r alsa-utils

 

Console-setup hanterar typsnitt i kon solen:

sudo insserv -r console-setup

 

Nu har du förberett allt för att kunna köra Raspbian med enbart ett läsbart filsystem. Det som återstår är att göra systemet enbart läsbart. Först justeras /etc/ fstab så att minneskortspartitionerna monteras som endast läsbara (ro, read only). Detta görs genom att lägga till ”ro” i de befintliga raderna:

/dev/mmcblk0p1   /boot    vfat   defaults,ro   0   2

/dev/mmcblk0p2   /       ext4    defaults,ro   0   1

 

Därefter redigeras /boot/cmdline.txt. Lägg till ”ro” (utan citationstecken) sist i raden. När detta är klart är också konfigureringen klar. Filsystemet kommer att vara enbart läsbart efter omstart och minneskortet är därmed skyddat mot onödiga skrivningar. Behöver du ändå skriva något, till exempel vid justering av inställningar, kan följande kommando användas:

sudo mount -o remount,rw /dev/ mmcblk0p2  /

 

För att sedan aktivera skrivskyddet på nytt körs samma kommando med argumentet ”ro”:

sudo mount -o remount,ro /dev/ mmcblk0p2  /

 

Säkrare paj

Bra komponenter är en nyckel till ett driftsäkert system, särskilt vad gäller nätadapter och minneskort. Förutom detta bör du även skapa en rutin för automatiska säkerhetskopior. Då frekvent skrivning till minneskortet sliter kan nästa steg även vara att blockera skrivningar.

Allt detta har vi gjort med syfte att förbättra systemets stabilitet och driftsäkerhet. En Raspberry Pi som har fått denna behandling kan förhoppningsvis vara igång konstant under många år framöver.

3 KOMMENTARER

Skriv ett svar

Skriv din kommentar
Ange ditt namn här