Raspberry PI

Yleistä

Raspberry Pi (jatkossa RasPi) on suunnilleen luottokortin kokoinen yhden piirikortin tietokone.

RasPistä on useita eri sukupolvia:

  • Raspberry Pi Model A: ARM11, USB 1kpl
  • Raspberry Pi Model B: ARM11, USB 2kpl, Ethernet 1kpl
  • Raspberry Pi 2: ARM Cortex-A7 / ARM Cortex-A53
  • Raspberry Pi 3: ARM Cortex-A53, WiFi, Bluetooth
  • Raspberry Pi 4: ARM Cortex-A72, GigE
  • Raspberry Pi Zero 2W: quad-core 64-bit ARM Cortex-A53, WiFi

Alkuperäinen kirjoitus pohjautuu ensimmäiseen RasPi-sukupolveen: Raspberry Pi Model B. Vuosien varrella kirjoitusta on päivitetty (hieman enemmän) ajantasalle.

Lisätietoja:
    Raspberry Pi wikipediassa, suomi
    Raspberry Pi wikipediassa, englanti
    Raspberry Pi kotisivut

Käyttöönotto

Käyttöjärjestelmä

Raspberry Pi Imager

Raspberry’n kotisivuilta löytyy nykyään ohjelma Raspberry Pi Imager, jolla SD-kortin tekeminen ja RasPin käyttöönotto on helpompaa kuin jäljempänä olevalla “perinteisellä” tavalla. Esimerkki asennuksesta löytyy vaikka RasPille tehdystä sähkönkulutuksen ohjauksesta.

Kun SD-kortti tehdään Raspberry Pi Imager-ohjelmalla, sille tulee valmiiksi monia asetuksia, jotka “perinteisellä” tavalla jouduttiin määrittämään erikseen, esim:

  • Käyttäjätunnus ja salasana,
  • RasPin nimi,
  • langaton verkko sekä
  • aikavyöhyke.

Huom. Ssh-yhteys pitää ottaa SD-korttia tehtäessä käyttöön Raspberry Pi Imager-ohjelman valinnoista. “Perinteisellä” tavalla se oli oletuksena käytössä.

“Perinteinen” tapa

RasPin aloituskäyttöjärjestelmäksi suositellaan Raspbiania, joka on RasPille optimoitu Debian-jakelu.

Raspbianin saa haettua Raspin ohjelmien lataussivulta.

Tarkista haetun tiedoston SHA-1-summa:

sha1sum 2013-02-09-wheezy-raspbian.zip

Vertaa saatua tulosta lataussivulla olevaan. Jos ne ovat samat, on tiedoston siirto onnistunut.

Pura haetusta tiedostosta SD-muistikortille kirjoitettava image-tiedosto:

unzip 2013-02-09-wheezy-raspbian.zip

Listaa tietokoneella olevat tiedostojärjestelmät:

df -h

Laita SD-muistikortti lukijaan. Huom! Kaikki muistikortilla olevat tiedot tuhoutuvat image-tiedoston kirjoituksen yhteydessä.
Listaa uudelleen tietokoneella olevat tiedostojärjestelmät:

df -h

Se tiedostojärjestelmä, joka on tullut lisää verrattuna edelliseen listaukseen on kortinlukijaan laitettu SD-muistikortti. Esim: /dev/sdd1

Jos muistikortilla on useita osioita, ne näkyvät omina tiedostojärjestelminä. Esim: /dev/sdd1, /dev/sdd2, /dev/sdd3,… Poista kaikki nämä muistikortin osiot tiedostojärjestelmästä yksitellen:

umount /dev/sdd1

Kun kaikki muistikortin osiot on poistettu tiedostojärjestelmästä, voidaan image-tiedosto kirjoittaa muistikortille:

sudo dd bs=4M if=2013-02-09-wheezy-raspbian.img of=/dev/sdd

Kirjoituksen jälkeen Raspbian-muistikortti on valmis käytettäväksi RasPissa.

Käynnistys ja tietoliikenneyhteys

Tyypillisessä kotiverkossa tietokone(et) kytketään reitittimeen, joka puolestaan on yhteydessä internet’tiin ADSL/VDSL-modemin tms. kautta. Reititin ja modemi ovat usein yhdistettynä samaan laitteeseen.

RasPin käyttöönotto em. kaltaisessa kotiverkossa.

Käynnistä RasPi:

  • Laita aikaisemmassa vaiheessa tehty Raspbian-muistikortti RasPin muistikorttipaikkaan.
  • Kytke RasPi reitittimeen ethernet-kaapelilla.
  • Kytke RasPiin käyttöjännite.

Käynnistyksen aikana RasPi hakee IP-osoitteen reitittimeltä. IP-osoitteen selvitys: Ota yhteys reitittimen hallintaan reitittimen ohjeiden mukaisesti.
RasPi löytynee reitittimen laitteistoluettelosta nimellä “raspberrypi”.
Katso raspberrypin IP-osoite. Esim. 192.168.10.1.

Ota SSH-yhteys RasPiin edellä selvitetyllä IP-osoitteella:

Käynnistä tietokoneen komentoriviterminaali.
Käynnistä SSH-yhteys: (oletuksena käyttäjätunnus: pi)

ssh -l pi 192.168.10.1

Anna salasana: (oletuksena salasana: raspberrypi)

raspberrypi

Näyttöön tulee ensin RasPin käynnistymisviesti ja sitten valmiusviesti: pi@raspberrypi ~ $

RasPi odottaa käyttäjän komentoja. Ensimmäisenä kannattaa muuttaa (ainakin muutamia) RasPin asetuksia. Asetusten muutos onnistuu helpoiten komennolla:

sudo raspi-config

Ota käyttöön kaikki SD-kortin muistitila:valinta: expand_rootfs

Vaihda salasana:valinta: change_pass

Lopeta raspi-config:valinta: Finish

Haetaan ja asennetaan päivitykset:

sudo apt-get update
sudo apt-get -y upgrade

Tästä sitten omatoimisesti ja oman maun mukaan eteenpäin.

RasPin nimen vaihto

(RasPin nimi voidaan määrittää tehtäessä SD-kortti Raspberry Pi Imager-ohjelmalla.)

Oletuksena RasPi asentuu nimellä raspberrypi, joka löytyy tiedostoista /etc/hostname ja /etc/hosts.  Nimimäärittelyn vaihtaminen:

sudo nano /etc/hostname
sudo nano /etc/hosts

Uusi nimi tulee käyttöön seuraavassa käynnistyksessä.

Langaton verkko

(Langaton verkko voidaan määrittää tehtäessä SD-kortti Raspberry Pi Imager-ohjelmalla.)

RasPiin saa langattoman verkon USB-wifi-adapterilla. Adapteria hankittaessa kannattaa tarkastaa, että siinä on kernel-tuki linuxille. Tällöin säästyy kernel-modulin kääntämiseltä. Adapteri maksaa halvimmillaan muutaman euron.

Kytketään USB-wifi-adapteri RasPiin ja katsotaan millä nimellä se asentui, yleensä wlan0:

ifconfig -a

Etsitään näkyvät langattomat verkot:

sudo iwlist wlan0 scan

Annetaan verkon tiedot RasPille lisäämällä tiedoston /etc/wpa_supplicant/wpa_supplicant.conf loppuun:

network{
    ssid="VerkonNimi"
    psk="VerkonSalasana"
}

Nyt verkkoyhteyden pitäisi muodostua automaattisesti seuraavassa (verkon) uudelleenkäynnistyksessä. Verkon voi sammuttaa ja käynnistää komennoilla:

sudo ifdown wlan0
sudo ifup wlan0

Ohjelmia

Boinc-palvelin

Boinc on hajautettuun laskentaan tarkoitettu ohjelmisto. Sen avulla voidaan raskasta laskentaa hajauttaa verkossa oleville tietokoneille. Myös RasPille löytyy Boinc-projekteja. RasPi ei pärjää laskentatehossa PC-tietokoneelle, mutta pienen tehonkulutuksen ja äänettömyyden ansiosta se voi olla käynnissä 24/7.

Asennetaan Boinc-palvelin:

sudo apt-get install boinc

Tehdään tili projektille <http://boinc_projekti.net>. Tilin sähköposti on <email>, haluttu käyttäjätunnus <username> ja salasana <password>:

boincmd --create_account <http://boinc_projekti.net> <email> <password> <username>

Jos tilin tekeminen onnistui, palauttaa komento tiliavaimen <account_key>. Sitä tarvitaan, kun projekti laitetaan laskentaan:

boincmd --project_attach <http://boinc_projekti.net> <account_key>

Nyt RasPi pyytää lasketatehtäviä projektilta ja alkaa ahkeroimaan.

Nfs-palvelin

Asennetaan Nfs-palvelin (rpcbind ja nfs-common ovat jo valmiina):

sudo apt-get install nfs-kernel-server

Estetään oletuksena jako kaikkiin osoitteisiin. Lisätään tiedostoon /etc/hosts.deny:

rpcbind: ALL

Sallitaan jako oman kotiverkon osoitteisiin. Lisätään tiedostoon /etc/hosts.allow:

rpcbind: 192.168.10.1/255.255.255.0

Määritetään verkossa jaettavat hakemistot. Lisätään tiedostoon /etc/exports (esim.):

/mnt/Seagate 192.168.10.1/255.255.255.0(rw,no_root_squash,no_subtree_check)

Määritellään nfs-palvelin käynnistymään automaattisesti käynnistyksessä. Lisätään tiedostoon /etc/rc.local:

/etc/init.d/rpcbind start
/etc/init.d/nfs-kernel-server start

Uudelleenkäynnistetään RasPi:

sudo shutdown -r now

Raspin uudelleenkäynnistyksen jälkeen jaettu hakemisto on mountattavissa kotiverkossa oleville koneille (esim.):

mount 192.168.10.37:/mnt/Seagate/ /home/Seagate

Ohjelmointi (C++)

Raspbianissa on mukana gcc (GNU Compiler Collection), joka sisältää mm. c++-kääntäjän.

Tehdään perinteinen “Hello world”-ohjelma:

Kirjoita ohjelmakoodi jollakin Raspbianin tekstieditorilla, esim. nano:

nano helloworld.cpp

Ohjelmakoodi:

#include <iostream>
using namespace std;
int main()
{
    int lkm=0;
    while (lkm < 10) //kirjoitetaan 10 kertaa
    {
        cout << "Hello world!" << endl;
        lkm++;
    }
    return 0;
}

Käännetään ohjelma:

g++ helloworld.cpp -o helloworld

Ajetaan ohjelma:

./helloworld

Tästä sitten omatoimisesti ja oman maun mukaan eteenpäin.

Nettiradio

RasPista saa helposti Volumio-nettiradion kirjoittamalla muistikortille valmiin RasPi-imagen, joka löytyy sivuilta: http://www.volumio.org

Kernelin kääntäminen

Asennetaan Git paketinhallinnasta. Haetaan lähdekoodit github’ista:

mkdir GitRaspbian   //Työhakemisto
cd GitRaspbian
git clone --depth 1 git://github.com/raspberrypi/linux.git
cd linux
git fetch git://github.com/raspberrypi/linux.git rpi-3.6.y:refs/remotes/origin/rpi-3.6.y
git checkout rpi-3.6.y

Asennetaan arm-ristikääntäjä Xubuntuun:

apt-get install gcc-arm-linux-gnueabi make ncurses-dev

Siivotaan kääntöhakemisto:   //GitRaspbian/linux

make mrproper

Haetaan toimiva konfiguraatio RasPista:

ssh -l pi 192.168.10.37
zcat /proc/config.gz > .config
exit

Kopioidaan RasPissa tehty .config kääntöhakemistoon.
Tehdään sen pohjalta uusi konfiguraatio:

export CCPREFIX=/usr/bin/arm-linux-gnueabi-
make ARCH=arm CROSS_COMPILE=${CCPREFIX} oldconfig

Käännetään kernel:

make ARCH=arm CROSS_COMPILE=${CCPREFIX}

Käännetään modulit:

make ARCH=arm CROSS_COMPILE=${CCPREFIX} modules

Asennetaan modulit väliaikaishakemistoon:

export MODULES_TEMP=~/modules
make ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=${MODULES_TEMP} modules_install

Siirretään käännös RasPiin:
Kopioidaan ./arch/arm/boot/Image -> /boot/kernel.img
Kopioidaan ~/modules/lib/modules -> /lib/modules