De Raspberry Pi aan de praat krijgen (Arch Linux)

Doel 

Het Doel van deze tutorial is om een werkende Raspberry Pi te hebben die zichzelf vanzelf aanmeld op je draadloze netwerk en toegangkelijk is via SSH.

Benodigdheden 
Tutorial 

Om met welk project dan ook te beginnen hebben we een werkende Raspberry Pi (RPi) nodig. In deze tutorial maken we een RPi die zichzelf na opstarten automatisch aanmeld op je draadloze netwerk en vervolgens toegankelijk is via secure shell (SSH).

Let op! Voor een beginner is deze tutorial vrij complex, de nieuwe methode met behulp van NOOBS is vele malen eenvoudiger, die tutorial vind je hier: "De simpelste manier om je RPi aan de praat te krijgen: NOOBS". Als je die tutorial al heb uitgevoerd en je hebt gekozen voor Arch Linux als OS kun je doorgaan met " Python installeren", als je Raspbian hebt gekozen staat python er al op, je kunt dan bijvoorbeeld je draadloze netwerk instellen, een webserver installeren of temperaturen gaan meten.

Als harde schijf gebruikt de RPi een SD kaart, op de 8GB kaart die ik heb gekocht moet eerst een Operating Sytem (OS) worden gezet (Let op, niet alle SD kaarten werken met de RPi! Hier kun je controleren of een kaart werkt: http://elinux.org/RPi_VerifiedPeripherals, de kaart uit de bovenstaande lijst werk sowieso).

Aan het eind van deze tutorial heb je een SD kaart die de RPi Arch Linux laat opstarten en werkt met de WiFi dongle uit de lijst hierboven. Je kunt in plaats van deze tutorial te volgen ook kijken onder images om direct het eindresultaat van deze tutorial als 4 GB image te downloaden. Deze image werkt ook op kaarten die groter zijn dan 4 GB echter je gebruikt dan niet de hele kaart. 4GB is wel ruim voldoende om later te kunnen spelen en dingen te installeren en eventueel kun je zelf de image nog uitbreiden naar de grote van je kaart op de manier die hieronder is beschreven.

De RPi draait alleen op het Linux OS. Zelf heb ik ervaring met 2 varianten, Raspbian en Arch Linux. Raspbian is wat de mensen die RPi ontwikkelen officieel aanraden maar toch geef ik de voorkeur aan Arch Linux. Arch Linux is een hele minimale Linux distributie en vereist wat meer werk om aan je eisen te laten voldoen maar als je zover bent weet je wel precies wat er voor nodig was en hoe je het kunt maken als er iets niet meer werkt.

Om Arch Linux op een SD kaart te zetten heb ik zelf een Linux laptop gebruikt, een oude Asus 1000HE met daarop ook Arch Linux om precies te zijn. Maar we kunnen de SD kaart ook onder Windows en osX maken op een vergelijkbare manier, zie verderop in het artikel.

Een bootable SD kaart maken

De Raspberry Pi kan alleen opstarten van een speciaal voorbereide SD kaart. Deze kunnen we op verschillende manieren maken of bestellen (let op dit is Raspbian, niet Arch Linux.)

Met behulp van een Linux PC

  • Download een image van Arch Linux, zie de "Installation" tab.
  • Stop de SD kaart in je Linux laptop, check met dmesg wat de naam is van de SD kaart (als je een laptop gebruikt met maar 1 harde schijf is het meestal /dev/sdb, daar ga ik verder vanuit maar het kan dus ook /dev/sdc zijn bijvoorbeeld).
  • Zorg ervoor dat er op de SD kaart maar 1 partitie staat door te typen sudo cfdisk /dev/sdb (of sda, of sdc) en te kiezen voor "[ delete ]" tot er alleen "Free space" over is. Maak een nieuwe partitie met [ new ], de maximale grootte is al geselecteerd dus bevestig alle defaults. Kies hierna [ Write ], bevestig door "yes" te typen en sluit af met [ Quit ] .
  • Unzip het gedownloade bestand, er komt een .img bestand te voorschijn. Geef het commando:
    sudo dd bs=1M if=archlinux-hf-2013-11-14.img of=/dev/sdb
    Let op, jouw .img bestand kan anders heten, pas dan het commando aan voor je enter drukt.

Op je kaart staat nu een 2GB image. Ook al is je kaart veel groter. Om de volledige grootte van de kaart te benutten moet je met een partitie editor aan de slag. Onder Linux gebruik ik Gparted. Dit dient met Root privileges gestart te worden, onder KDE:
kdesu gparted De interface spreekt voor zich, sleep de partitie "extended" en vervolgens "ext4" naar hun maximale grote, klik daarna op "Resize/Move" en bevestig alles. Wacht tot het proces afgelopen is en verwijder de SD kaart veilig.

De SD kaart is nu klaar voor gebruik in je RPi.

Met behulp van een Windows PC

  • Download een image van Arch Linux, zie de "Installation" tab. Pak de image uit zodat je een .img file hebt.
  • Download Win32 Disk imager en pak de zip file uit en open het programma (mogelijk moet je met de rechtermuisknop klikken en openen als administrator kiezen)
  • Als je het nog niet gedaan hebt, steek dan nu de SD kaart in je kaartlezer.
  • Kies onder Image File je uitgepakte .img file en kies rechts de letter die je SD kaart heeft in verkenner. Let op dat je de goede kiest, je kunt per ongeluk je eigen hardschijf overschrijven met dit programma.
  • Klik op "Write" en wacht tot het proces is afgelopen
  • Sluit het programma af en verwijder de SD kaart veilig

win32diskimager

De SD kaart is nu klaar voor gebruik in je RPi.
Bron: elinux.org.

Met behulp van een Mac

Een tutorial die gebruik maakt van een grafische interface staat op alltheware.wordpress.com, voor de methode hieronder heb je geen extra programma's nodig.
  • Download een image van Arch Linux, zie de "Installation" tab. Pak de image uit zodat je een .img file hebt.
  • Open een Terminal (bijvoorbeeld door cmd-space te drukken en dan terminal te typen, enter opent een terminal)
  • Steek je SD kaart in de SD gleuf en vind vervolgens de naam van je SD kaart door te typen: diskutil list. Je eigen harde schijf heet waarschijnlijk /dev/disk0, als je verder geen schijven in je Mac hebt zitten is de SD kaart /dev/disk1 maar je kunt het zien aan de grootte onder "SIZE"
  • Ik ga er van uit dat je kaart /dev/disk1 is. De kaart moet ge-unmount worden maar niet verwijderd, doe dit met het commando: diskutil unmountdisk /dev/disk1
  • Ga naar de map waar je image staat, bijvoorbeeld Downloads cd Downloads, kijk of je .img file er bij staat door ls te typen.
  • Geef het commando sudo dd if=archlinux-hf-2013-11-14.img of=/dev/disk1 bs=1M (voor je je paswoord geeft check je nog even of SD kaart /dev/disk1 heet, anders overschrijf je zo een andere schijf en verlies je data!) Dit proces kan heel lang duren...
  • Als dd klaar is, verwijder je de SD kaart veilig.

De SD kaart is nu klaar voor gebruik in je RPi.
Losjes overgenomen van: Computers.tutsplus.com

De RPi instellen

Als je de gemaakte SD kaart in de RPi steekt, je TV aansluit, de UTP kabel in de ethernet poort steekt en vervolgens de stroomkabel er in steekt start hij op. Op je scherm zie je allerlei informatie langs scrollen en uiteindelijk verschijnt er een Command Line Interface (CLI).

Log in met gebruikersnaam root en wachtwoord root. Om het gebeuren meteen veiliger te maken veranderen we als eerste dit standaard wachtwoord door passwd te typen; geef 2 keer je nieuwe wachtwoord op (als je bezig bent een image te maken om hier te delen kunnen je beter het standaard wachtwoord blijven gebruiken.)

Om te zorgen dat je meteen de nieuwste versie van alle aanwezige software hebt typ je:
pacman -Syu
(Pacman is de package manager van Arch Linux en regelt het installeren en updaten van de software op je systeem.) De software database wordt geüpdatet en eventuele updates worden geïnstalleerd. Start de RPi opnieuw op om de nieuwste kernel en software versies te laden:
reboot

Na de reboot is het ook handig om nu meteen de NTP daemon te activeren zodat de RPi de tijd vanzelf goed blijft zetten via internet (anders krijg je vreemde problemen in de toekomst weet ik uit ervaring), typ om te zorgen dat de tijd straks op de lokale tijd wordt ingesteld:
mv /etc/localtime /etc/localtime-backup
ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime
systemctl start ntpd om de daemon te starten en vervolgens: systemctl enable ntpd om de daemon in het vervolg automatisch op te starten na een reboot.
Reboot je RPi:
reboot

Je RPi is nu online en werkt. Als je de draadloze dongle hebt gekocht die in de lijst hierboven staat gaan we nog even door...

Via de WiFi dongle verbinding maken

Het draadloze internet doet het op dit moment helaas nog niet, vandaar dat we de kabel nodig hebben. Binnenkort zal een nieuwe kernel versie ervoor zorgen dat we wel meteen met de WiFi dongle aan de slag kunnen en dan zal ik deze tutorial aanpassen.

Om de WiFi dongle aan de praat te krijgen moeten we de drivers (kernel modules) installeren, steek eerste de dongle in een USB poort, typ vervolgens:
pacman -Sy dkms-8188eu
(Dit duurt heel lang.)
Als het proces is afgelopen starten we de daemon die de kernel modules laad:
systemctl start dkms en om dit na elke reboot opnieuw te laten gebeuren:
systemctl enable dkms

De driver werkt slecht met power management opties, die opties zetten we uit door een file te editen:
nano /etc/modprobe.d/8188eu.conf voeg de volgende tekst toe aan de file:
options 8188eu rtw_power_mgnt=0
Druk ctrl-X, dan Y en dan Enter.
reboot

De RPi vindt nu de WiFi dongle maar we moeten nog vertellen welk netwerk we willen gebruiken en wat de instellingen zijn. In Arch Linux is hier een handige tool voor, "wifi-menu", deel van netctl, het programma wat het netwerken verzorgt in Arch. Typ:
wifi-menu
Kies je netwerk met de pijltjes toetsen en enter. Vul een profielnaam in samen met de rest van de gegevens. Bevestig alles met enter.
Je kunt nu online via de Dongle maar we moeten Arch nog vertellen dit automatisch te doen bij het opstarten:
netctl enable profile-name

Zet de RPi uit, typ: poweroff
Trek de stroomkabel los, haal de UTP kabel uit je RPi maar houd de WiFi dongle in een USB poort. Sluit de stroomkabel weer aan.

Als je RPi nog aan je TV hangt zie je weer van alles langskomen. Log in en typ: ip addr je ziet iets als dit:

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
2: ifb0:  mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 7e:4a:10:a9:f6:b0 brd ff:ff:ff:ff:ff:ff
3: ifb1:  mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 32:72:d8:63:4c:e4 brd ff:ff:ff:ff:ff:ff
4: wlan0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c0:4a:00:10:b7:a6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global wlan0
    valid_lft forever preferred_lft forever
    inet6 fe80::c24a:ff:fe10:b7a6/64 scope link
    valid_lft forever preferred_lft forever

Het hier onderlijnd weergegeven deel is je IP adres (in mijn geval 192.168.1.4). Onthoudt dit of schrijf het op. Om in te kunnen loggen op je RPi met SSH via een andere computer heb je dit IP adres nodig. Het IP adres kan veranderen als je een keer reboot. Je kunt in sommige routers instellen dat je RPi altijd hetzelfde IP adres krijgt op basis van het mac-adres. Hier ga ik nu verder niet op in (ik kan wel helpen als je een berichtje achter laat). Je kunt je IP adres altijd controleren door je RPi aan de tv te hangen, in te loggen en ip addr te typen

Je RPi is nu online en je kunt inloggen vanaf een andere computer. Je RPi hoeft niet meer aan je tv te hangen, hij zal nu als je de stroom aansluit zichzelf aanmelden op je netwerk.

Inloggen op je RPi vanaf een andere computer

Via SSH kun je nu inloggen op je RPi, dit kan vanaf Linux, osX en Windows.

Linux en osX

Als je Linux of osX gebruikt heb is alles wat je nodig hebt al geïnstalleerd, open een terminal en typ: ssh -l root en voer je wachtwoord in.

Windows

Download Putty en vul onder Hostname het IP adres van je RPi in en klik "open". Vul je wachtwoord in.

Dat was het, je RPi kun je nu overal in huis neerzetten en je kunt er met een andere computer op inloggen.

Bronnen

http://archlinuxarm.org/platforms/armv6/raspberry-pi