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