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.
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
Heter inte UPS:en UPS Pico? Det står USB Pico.
Jo, det är klart. Tack, nu är det fixat.
//anders, Datormagazin
Tycker det ser ut som om backup.sh använder sig av dd och inte rsync.