Raspberry Pi har förändrat världen i fler avseende än ett. För första gången kan vi köpa en relativt kraftfull dator för runt 400 kr. En Raspberry Pi version 3 har fyra kärnor på vardera 1,2 GHz och 1 GB i RAM. Jämför detta med datorn jag köpte när jag var 14 år, en Pentium 2 på 400 Mhz och 256 MB RAM. En monstermaskin för sin tid som gick lös på ca 20.000 kr. Jag sparade i många långa år till den datorn. Idag kan jag köpa en Raspberry Pi för en bråkdel av den pengen, som dessutom är i runda tal ca 12 gånger så snabb och har 4 gånger så mycket RAM. Bara det faktumet, att vi nu kan köpa så billiga datorer, har förändrat världen. Det andra avseendet som Raspberry Pi:en har förändrat världen är med sina GPIO-portar. Nu kan vi, helt vanliga människor och entusiaster, bygga våra egna produkter och prylar. Vi kan bygga alltifrån larmanläggningar och smarta hem, till motorstyrningar och robotar. Allt tack vare Raspberry Pi.

Raspberry Pi har också gjort att intresset för Linux har ökat. Linux är (var) det system som man alltid kör på sin Raspberry Pi. Version 3 har dock stöd för Window 10, men det är fortfarande Linux som ligger i topp. Det finns även andra opererativsystem som fungerar på Raspberry Pi, till exempel RISC OS. Men trots allt så är det Linux som ligger i topp på Raspberry Pi:en.

För att få ut det mesta av din Raspberry Pi finns det en del grundkunskaper du behöver för att komma igång att bygga saker. Dessa grundkunskaper är framförallt Linux och något programmeringsspråk som passar bra för denna typen av utveckling. Python är och har alltid varit ett populärt språk för Pi:en. Det underlättar också med en grundläggande förståelse för elektronik och komponenter, beroende på vad det är du vill bygga. Här kommer jag att gå igenom och lära dig de viktigaste delarna du behöver kunna för att komma igång.

Linux

Vi börjar med Linux då detta är operativsystemet som du förmodligen kommer att köra på din Pi. Lär du dig Linux har du dessutom lärt dig mycket om internet också, då Linux är det system som har den största servermarknaden på internet. Servrar, router mer mera över hela internet är byggda på Linux (eller andra UNIX-liknande system som FreeBSD, OpenBSD och Solaris för att bara nämna några).

Vad är Linux då?

Linux är ett operativsystem, alltså det systemet som hela tiden körs på din dator. Det är operativsystemet som kör alla program på datorn, håller ordning på inloggade användare och så vidare. Linux är ett UNIX-liknande system, och UNIX i sig är väldigt gammal. Redan 1969 började en första version av ett UNIX-liknande system ta form på en PDP-7 som ett projekt på MIT. 1971 släpptes version 1 av UNIX och sedan dess har det bara rullat på. Under årens lopp har det kommit massvis med avstickare till denna första UNIX-utgåva. I början av 1980-talet gjorde SUN sin egna version, SunOS, som senare blev Solaris. Den första BSD-versionen (från Berkeley universitetet) såg dagens ljus redan 1978. Ur denna BSD-version kom 386BSD som 1992 blev FreeBSD. Ett år innan, 1991 släppte Linus Torvalds den första versionen av Linux, version 0.0.1. Värt av nämnas här är att Linux inte bygger på kod från någon av de andra UNIX-varianterna, utan Linux är alltså ett helt nytt, fristående projekt. Däremot kommer alla verktygen i Linux från GNU-projektet, det är därför man ofta kallar Linux för just GNU/Linux. Även Mac OS X har starka rötter i UNIX-världen. 1988, när Steve Jobs inte längre arbetade för Apple startade han ett nytt företag där han utvecklade operativsystemet NeXTSTEP. När sedan Steve Jobs hittade tillbaks till Apple tog han med sig NeXTSTEP och ur detta kom Mac OS X Server, som 2001 blev till Mac OS X. Så att lära sig Linux är aldrig fel, kan du Linux kan du också många andra liknande system. Steget från Linux till FreeBSD, OpenBSD eller Mac OS X är inte långt. De påminner alla om varandra. För den som är mer intresserad av historien bakom UNIX så ta gärna en titt på den här kartan från Wikipedia. Jag är själv väldigt förtjust i UNIX-historia.

Installera Linux på din Raspberry Pi

Den version av Linux som vi kommer att använda i denna artikel kommer att vara Raspbian som är baserad på Debian. Detta är min personliga favorit av dem alla och den jag har använt mest. Du laddar hem Raspbian från Raspberry Pi’s webbsida direkt. Det finns två versioner av Raspian för tillfället. Den som heter Raspbian Jessie och den som heter Raspian Jessie Lite. Den som heter Raspbian Jessie är den vanligaste utgåvan som de flesta som är nya på Linux och Raspberry Pi vill använda sig av. Denna har ett grafiskt användargränssnitt installerat från start, medan Raspbian Jessie Lite kommer helt utan ett grafiskt användargränssnitt. Lite-versionen lämpar sig bäst när du känner dig bekväm med Linux och din Raspberry Pi bara ska stå som server, utan vare sig skärm eller tangentbord kopplat till sig.

När du har valt distribution och laddat hem den måste du först packa upp ISO-filen som finns inuti ZIP-filen. Under Linux gör du detta enklast med till exempel unzip 2016-05-27-raspbian-jessie.zip. Under Windows kan du packa upp filen det inbygga ZIP-programmet, likaså under Mac OS X.

Föra över ISO-filen till minneskortet

Nästa steg blir att “bränna ut” IMG-filen till SD-kortet. I Linux är detta väldigt enkelt. Börja med att ta reda på vilken enhet som är ditt SD-kort i datorn. Detta gör du med lsblk-kommandot. Kontrollera noga vilken enhet som är ditt minneskort, ofta kan du se på det storleken. När du väl vet vilken enhet det är (här antar att vi att det är /dev/sdc) så är bara att ange kommandot dd if=/home/jake/Downloads/2016-05-27-raspbian-jessie.img of=/dev/sdc. Anpassa sökvägarna och användarnamnet efter ditt system. Även under Mac OS X kan du använda dd-kommandot för att bränna ut IMG-filen till minneskortet. Tänk dock på att enheterna ser lite annorlunda ut i Mac OS X.

I Windows behöver du däremot ett tredjepartsprogram för att kunna få ut IMG-filen till minneskortet. Det finns ett bra program för detta, kallat Win32DiskImager. Hur du använder detta programmet kan du läsa om på Raspians egna webbsida på Install operating system images using Windows

När du är klar med minneskortet är det bara att stoppa i det i din Raspberry Pi och koppla in ström, skärm, tangentbord och mus.

Logga in och börja arbeta

På ett Linux-system kan i princip hur många användare som helst samtigit vara inloggade utan att de stör varandra. Det var just detta som var grundidén bakom UNIX redan på 70-talet och kalldes redan då för Time Sharing System, det vill säga att flera användare kan dela på datorns resurser. Det finns därför flera olika sätt som du kan logga in i Linux på. Det första är det mest uppenbara, den grafiska inloggningsskärmen som du ser när du kopplat in din Rasberry Pi till en fysisk skärm och ett fysiskt tangentbord. Men du kan även logga in direkt i konsolen. Dessa kommer du åt genom att hålla ner CTRL+ALT samtidigt som du trycker på någon av Fn-knapparna, till exempel F1 för första konsolen, F2 för andra och så vidare. F7 brukar vara den grafiska inloggningen. Du kan även logga in via SSH (över nätverket) till din Raspberry Pi. SSH är aktiverat som standard på din Raspberry Pi om du använder Raspbian (Debian). Om du vill logga in från en annan Linux-dator till din Raspberry Pi skriver du då ssh pi@192.168.0.55, förutsatt att din Raspberry Pi har IP-adress 192.168.0.55. För att få reda på IP-adressen till din Pi kan du logga in lokalt och skriva /sbin/ifconfig så kommer du att se vilken IP-adress din Pi har fått. Det rekommenderas att du sätter ett lösenord för din pi-användare. Detta gör du med kommandot passwd.

Filsystemet

För den som kommer från Windows-världen kan filsystemets uppbyggnad i Linux te sig något märkligt. Istället för enheter som C:\ och D:\ osv har man allting i en och samma kataloghierarki i Linux. I toppen av systemet har man roten, som symboliseras av ett snedstreck, eller slash (/). Under detta har man sedan sina filer och kataloger i systemet, allting på sin speciella plats. Katalogstrukturen ser ungefär ut som nedan på ett typsikt Linux-system. Detta är huvudkatalogerna direkt under roten (/) på ett typsikt Linux-system. Inom parenteserna visas en kort förklaring av vad katalogerna innehåller.

/
├── /bin         (vanliga binärfiler, t.ex. rm, ls, tar, lsblk)
├── /boot        (filer som behövs för att boota systemet)
├── /dev         ("device-files", alltså filer för enheter, t.ex. diskar)
├── /etc         (systemets alla konfigurationsfiler)
├── /home        (användarnas hemkataloger)
├── /lib         (biblioteksfiler, d.v.s. filer som behövs av olika program)
├── /lost+found  (om filsystemet blir korrupt läggs räddade filer här)
├── /media       (här monteras "auto-monterade" enheter sig, så som USB-stickor)
├── /mnt         (här monteras mer fasta monteringspunkter, t.ex. sekundära diskar)
├── /opt         (blandade programfiler)
├── /proc        (processfiler för hela systemet, även för systemets hårdvara)
├── /root        (root-användarens hemkatalog)
├── /run         (diverse run-filer)
├── /sbin        (binärfiler som har med systemadministration att göra)
├── /srv         (diverse tredjeparts servrar lägger sig här ibland)
├── /sys         (filer som rör kärnan i systemet)
├── /tmp         (temporära filer lagras här)
├── /usr         (innehåller alltifrån binärer och källkod till manualer och hjälp)
└── /var         (innehåller loggfiler, mailfiler, skrivar-köer m.m.)

Förflytta sig i filsystemet och hitta hjälp

För att förflytta sig i filsystemet finns en rad små program i konsolen vi kan använda oss av. För att byta katalog används cd, exempelvis cd /bin för att gå till /bin-katalogen. Du kan även förflytta dig relativt i katalogstrukturen, d.v.s. du behöver inte ange hela sökvägen. Lås oss anta att du står i din hemkatalog och vill gå in i Downloads-katalogen. Då behöver du bara skriva cd Downloads. För att ta reda på vart i filsystemet du befinner dig kan du använda pwd som står för print working directory. Du får då reda på den absoluta positionen i filsystemet där du befinner dig. Med kommandot ls listar du filerna i den aktuella katalogen. Vill du ha en detaljerad lista över filerna i katalogen skriver du istället ls -l. För att backa ett steg uppåt i hierarkin skriver du cd .. där .. är en nivå upp i filsystemet. Endast en punkt, d.v.s . betyder den aktuella katalogen där du befinner dig just nu.

Mycket mer än så här behövs inte för att kunna förflytta sig runt i filsystemet på en Linux-maskin. Om du behöver få reda på mer om ett speciellt kommando finns det inbygga manualer för samtliga kommandon. Vill du till exempel läsa mer om ls gör du det med man ls. Vet du inte det specifika kommandot du letar efter kan du söka efter alla manualsidor och kommandon som matchar det du letar efter. Låt oss säga att du vill veta hur man raderar en fil eller en katalog, då kan du skriva man -k remove. Du får då upp en lista över alla kommandon som har med remove att göra. Vill du få mer hjälp om hur du arbetar med just manualsidorna skriver du man man.

Rättigheter och användare

Linux är ett fleranvändarsystem och därför separeras också användarna och dessas filer åt. Varje fil i systemet har en rad rättigheter samt en ägare kopplade till sig. Du ser rättigheterna genom att använda ls -l. Låt oss ta ett exempel.

kalle@elektra:~$ ls -l test.jpg 
-rw-rw-r-- 1 kalle admins 34781 maj 11  2015 test.jpg

Vi börjar med -rw-rw-r--. Vi bryter ner fyra grupper, med första tecknet för sig i en egen grupp, resterande tecken i grupper om tre.

-      rw-      rw-      r--
Typ    Ägare    Grupp    Andra

Vi börjar med första gruppen, eller tecknet, som är typen fil. Ett streck här betyder att filen är en helt vanlig fil, alltså ingen katalog (d), lagringsenhet (b), länk (l) eller annan specialtyp.

Nästa grupp är ägarens rättigheter för filen. Just nu har ägaren av filen rättigheterna att läsa (r) och skriva (w) till filen. Skulle vi vilja köra filen, till exempel om det vore ett program, skulle vi behöva lägga till exekveringsrättigehter (x) på filen. Detta göra med kommandot chmod u+x. chmod står för CHange MODe. u står för user, alltså att vi vill ändra ägarens rättigheter, och +x betyder lägg till exekveringsrättigheter.

Alla användare på systemet är medlem i en eller flera grupper. Det är detta grupprättigheterna talar om, alltså vad medlemmarna av en gruppen får lov att göra med filen.

Och till sist har vi andra, som i princip betyder alla andra på systemet, som inte är ägaren eller någon medlem ur gruppen.

Härnäst står det kalle admins. Det första, kalle, är filens ägare och admins är gruppen som är kopplad till filen. Ofta i Linux-system användar man en specifik grupp till varje enskild användare. Här brukar det alltså stå till exempel kalle kalle. Vill man ändra användare och grupp för en fil använder man kommandot chown som står för CHange OWNer. För att till exempel ändra så att filen test.jpg ovan istället ska ägas av användaren lisa och gruppen ekonomi ser kommandot ut så här: chown lisa:ekonomi test.jpg.

Root

Det finns en användare i alla Unix- och Linuxsystem som heter root. Denna användare har fulla rättigheter till allting i systemet, även om filerna inte ägs av root. Root kan alltså komma åt hårdvaran, alla användares filer, ändra i alla konfigurationsfiler med mera. I Raspbian (och Ubuntu-system) så saknar root-användaren ett lösenord, vilket i sin tur har effekt att root inte kan logga in direkt i systemet. På så vis är root-användaren avaktiverad, även om den faktiskt går att använda ändå. Man har gjort så av flera olika skäl. Dels för att det inte ska gå att logga in som root över internet på systemet (eftersom root finns på alla system, är det just denna användaren som inkräktaren först testar). Men man har också avaktiverat root för att det ska bli mindre att hålla reda på för den nya användaren. Istället använder man kommandot sudo som sin vanliga användare på systemet (på Raspian heter denna vanliga användare pi). För att till exempel redigera en konfigurationsfil på systemet, exempelvis filen fstab, körs kommando sudo vi /etc/fstab. Detta startar textredigeraren vi med filen /etc/fstab, som just användaren root. Hade vi öppnat filen som användaren pi hade vi inte kunnat spara filen, eftersom filen ägs av root (eftersom det är en systemfil). Många program kräver att man kör dem som root, exempelvis för att installera program som påverkar hela systemet. Det är därför vi alltid måste ange sudo apt-get install ... för att installera program under Raspbian.

Textredigerare

Det finns en lång rad textredigerare i Linux, alla har sina för- och nackdelar. Men främst handlar valet om tycke och smak. Den enklaste av dem alla är nano och finns i de flesta Linux-system. Men vill man lära sig en textredigerare som defintivt finns i alla Unix-varianter ska man lära sig vi. Den finns förinstallerat på alla Unix-system. vi har dock en ganska hög inlärningströskel för den som är ovan, eller bara har använt sig utav grafiska editorer tidigare. Sen har vi emacs som är en mycket avancerad editor som går att bygga ut till i princip vad som helst. Emacs finns dock sällan förinstallerat och måste installeras i Debian och Raspian med sudo apt-get install emacs24. För den som endast vill använda sig av grafiska editorer finns geany som är en mycket bra editor, men måste också installeras separat. Geany installeras med sudo apt-get install geany.

Sist men inte minst får vi inte glömma att nämna IDLE, Pythons egna editor. Denna är bra om du bara ska skriva Python-kod.

Nano

Nano är den enklaste av dem alla. Du öppnar upp en fil genom att ange filens namn som argument, till exempel nano test.txt. Du sparar filen med CTRL-O och avslutar Nano med CTRL-X. Det är i princip det enda du behöver veta om Nano.

Vi

Som sagt så kan vi vara lite svår att bemästra i början, men jag tycker ändå det är värt mödan att lära sig den, just eftersom den finns förinstallerad på i princip alla Unix- och Linuxvarianter. Däremot rekommenderar jag dig att installera vim istället, en förbättring av den gamla vi. Denna installeras med sudo apt-get install vim. När du väl installerat Vim i Debian, kommer den att ersätta vi-kommandot. Så när du skriver vi så körs egentligen vim.

En fil öppnas enklast i vi genom att skriva filnamnet direkt vid kommandoraden, exempelvis vi test.txt. För att kunna börja skriva något, måste du trycka på i, då kommer du in i insert-mode. För att radera text, tryck på ESC för att komma ur insert-mode och sedan x på det tecknet du vill radera. Vill du ta bort en hel rad, ställ dig på rätt rad på tryck på dd, alltså två styck d. När du sedan ska ska spara filen måste du första trycka på ESC, och sedan kolon. Nu får du upp en kommandorad längst ned i Vi. För att bara spara filen, skriv w och tryck på enter. Vill du både spara och avsluta, skriv wq. Vill du bara avsluta, utan att spara filen, skriv q!. Detta är de absolut grundläggande i Vi. För att lära dig mer om Vi så läs gärna manualsidan i Linux genom att skriva man vi. Har du installerat vim kan du även köra ett program som heter vimtutor som är en interaktiv guide till vim som hjälper dig att lära nästan allt om editorn.

Emacs

Emacs är skiljer sig mycket från Vi. Har du loggat in på din Raspberry Pi i det grafiska skalet kommer Emacs att startas grafiskt. Härifrån kan du göra det mesta via menyer utan att behöva lära dig speciellt många kortkommandon. Om du däremot kör emacs via konsolen kommer här några saker som kan vara bra att kunna.

För att öppna en fil i Emacs kan du göra precis som i Vi, det vill säga ange filnamnet som argument till Emacs, till exempel emacs test.txt. Nu kan du börja skriva och redigera direkt. För att spara filen, trycker du på CTRL-X och sedan CTRL-S. I Emacs används mycket CTRL-kommandon. För att avsluta Emacs, tryck CTRL-X och sedan CTRL-C. Man kan om man vill även använda menyn i konsolen. Tryck på F10 och använd sedan piltangenterna för att förflytta dig i menyn.