Kom igång med Raspberry Pi och Linux, del 1
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.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Relaterade artiklar
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
-
Jenkins som ett alternativ till Ansible Tower
Ansible Tower kommer med en stor prislapp, speciellt för ett mindre företag eller en privatperson. AWX å andra sidan är helt fritt, men kräver numera Kubernetes. För den som vill automatisera sina Ansible Playbooks går det dock bra att använda Jenkins som en ersättning för Tower och AWX.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.