Objavljeno:

Raspberry Pi - priprava

Raspberry Pi je mini računalnik, ki ga je mogoče kupiti za slabih 40 EUR. Računalnik je v osnovi sicer namenjen učenju in “igranju”, ga je pa mogoče koristno uporabiti tudi za kakšne bolj praktične namene. V tokratnem prispevku si bomo pogledali kako RPi, kot te računalnike tudi imenujemo, pripravimo za uporabo, v kasnejših prispevkih pa, kako ga spremenimo v orodje za nadzor spletnih, poštnih in drugih strežnikov, videonadzorni sistem, itd.

Osnovna namestitev

Na RaspberryPi 3 (vsebuje 64-bitni ARMv7 procesor, ki teče v taktu 1,2 GHz in 1 Gb RAM-a) smo namestili operacijski sistem Raspbian Jessie. Gre za na Debian Linuxu temelječ operacijski sistem. Uporabljena različica je bila Raspbian Jessie (2015-11-21), prenesli pa smo jo iz spletišča https://www.raspberrypi.org/downloads/raspbian/.

Raspberry Pi 1 in 3.

Raspberry Pi 1 (desno) in 3 (levo).

Preneseno datoteko (v sistemu Ubuntu) najprej razpakiramo, nato pa jo prekopiramo na SD kartico (POZOR: v našem primeru smo kopirali na napravo /dev/sdb, kar ugotovimo s pomočjo ukaza sfdisk)

unzip 2016-03-18-raspbian-jessie.zip
sudo sfdisk -l
sudo dd bs=4M if=2016-03-18-raspbian-jessie.img of=/dev/sdb

Ko podatke prekopiramo na SD kartico, jo vstavimo v RPi in ga zaženemo. Privzeto uporabniško ime je pi, geslo pa raspberry. Zato geslo kar takoj spremenimo z ukazom:

passwd

Nato na napravo namestimo najnovejše posodobitve:

sudo apt-get update
sudo apt-get upgrade

Sledi razširitev prostora na SD kartici ter še nekaj nujnih začetnih administrativnih opravil:

sudo raspi-config

Izberemo možnost Expand space. Nato nastavimo še časovni pas, katere Wi-fi kanale smemo uporabljati ter nastavitve tipkovnice (pod Internationalisation Options). POZOR: lokalne nastavitve (jezik,…) pustimo angleške, saj se bodo sicer pričele pojavljati čudne napake v Pythonu in nekaterih drugih aplikacijah.

Meni orodja raspi-config.

Meni orodja raspi-config.

Na tej točki je potreben ponovni zagon računalnika.

Posodobitev strojne programske opreme

V naslednjem koraku posodobimo strojno programsko opremo (ang. firmware). To storimo z ukazom:

sudo rpi-update

Aplikacija posodobi strojno programsko opremo, jedrne module, video podsistem, itd.:

 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** Performing self-update
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10670  100 10670    0     0  74032      0 --:--:-- --:--:-- --:--:-- 74615
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** We're running for the first time
 *** Backing up files (this will take a few minutes)
 *** Backing up firmware
 *** Backing up modules 4.1.19-v7+
#############################################################
This update bumps to rpi-4.1.y linux tree
Be aware there could be compatibility issues with some drivers
Discussion here:
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=113753
##############################################################
 *** Downloading specific firmware revision (this will take a few minutes)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168    0   168    0     0    344      0 --:--:-- --:--:-- --:--:--   344
100 49.3M  100 49.3M    0     0  2196k      0  0:00:23  0:00:23 --:--:-- 7571k
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 4.1.20+
 *** depmod 4.1.20-v7+
 *** Updating VideoCore libraries
 *** Using HardFP libraries
 *** Updating SDK
 *** Running ldconfig
 *** Storing current firmware revision
 *** Deleting downloaded files
 *** Syncing changes to disk
 *** If no errors appeared, your firmware was successfully updated to a4e931df906344085f00657429f9d9ef7c1a308b
 *** A reboot is needed to activate the new firmware

Po posodobitvi je potreben ponovni fizični zagon računalnika. Najprej sistem ugasnemo oz. zaustavimo vse CPU funkcije:

sudo shutdown -h now

Nato pa Raspberry Pi fizično izključimo iz napajanja in ga nato ponovno zaženemo.

Različico nameščene strojne programske opreme preverimo z ukazom:

/opt/vc/bin/vcgencmd version

Različico nameščenega operacijskega sistema in Linux jedra pa z:

cat /etc/debian_version
uname -a

Nastavitev požarnega zidu

Naslednja pomembna stvar je nastavitev požarnega zidu. Uporabimo lahko UFW:

sudo apt-get install ufw

Sledi nastavitev pravil (dohodne povezave privzeto blokiramo, odhodne privzeto dovolimo):

sudo ufw default deny incoming
sudo ufw default allow outgoing

Lahko dovolimo SSH povezave iz vseh IP naslovov:

sudo ufw allow 22/tcp

…ali pa samo iz določenega IP naslova (npr. 192.168.1.10):

sudo ufw allow from 192.168.1.10 to any port 22 proto tcp

…ali pa iz določenega omrežja (npr. 192.168.1.0/24 (CIDR zapis), kar je enako kot vsi IP naslovi v območju 192.168.1.1 – 192.168.1.254):

sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp

POZOR: Pazimo, da se ne zaklenemo ven iz računalnika!

Pravila brišemo s parametrom delete. Primer:

sudo ufw delete allow 80/tcp

Sedaj požarni zid še zaženemo:

sudo ufw enable

Nastavitev VNC konzole

Če želimo, nastavimo še VNC konzolo, ki nam omogoča, da vidimo namizje RPi-ja na oddaljenem računalniku:

sudo apt-get install tightvncserver

Zaženemo aplikacijo…

tightvncserver

…in nastavimo geslo za dostop do VNC konzole:

You will require a password to access your desktops.
Password: 
Warning: password truncated to the length of 8.
Verify: 
Would you like to enter a view-only password (y/n)? n
New 'X' desktop is raspberrypi:1
Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspberrypi:1.log

Pozor: ne pozabimo odpreti požarnega zidu za VNC povezave (TCP/5901+), npr.:

sudo ufw allow 5901/tcp

Če želimo zagnati VNC strežnik ročno, to storimo z ukazom:

vncserver :1 -geometry 1024x728 -depth 24

Ugasnemo pa ga z ukazom:

vncserver -kill :1

Na RPi se sedaj lahko iz Ubuntu računalnika povežemo npr. z aplikacijo Remmina (med nastavitve strežnika vnesemo podatke v obliki strežnik:vrata, npr. 192.168.1.20:5901 ali rpi.streznik.si:5901). V Windows okolju uporabimo VNC Viewer ali TightVNC.

Povezava na VNC konzolo s pomočjo aplikacije Remmina.

Povezava na VNC konzolo s pomočjo aplikacije Remmina.

Povečanje izmenjalnega prostora (swap file)

Raspbian ima privzeto velikost izmenjalnega prostora nastavljeno na 100 znakov. Včasih je to premalo, zlasti še, če na računalniku prevajamo kakšne aplikacije. Če ga želimo povečati npr. na 1 Mb v datoteki:

sudo nano /etc/dphys-swapfile

nastavimo:

CONF_SWAPSIZE=1024

Nato ustavimo in ponovno zaženemo storitev, ki upravlja z izmenjalnim prostorom:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Velikost izmenjalnega prostora preverimo z ukazom:

free -m

Nastavitev točnega časa

Raspberry Pi nima RTC (Real-Time Clock) modula (lahko pa ga kupimo za nekaj EUR!), zato je pomembno, da si namestimo aplikacijo NTP, ki skrbi za sinhronizacijo našega računalnika s časovnimi strežniki.

Če nismo nastavili časovnega pasu, to storimo sedaj:

sudo dpkg-reconfigure tzdata
Nastavitev časovnega pasu.

Nastavitev časovnega pasu.

Sledi namestitev aplikacije za sinhronizacijo časa:

sudo apt-get install ntp

V nastavitveno datoteko lahko dodamo slovenske NTP strežnike:

sudo nano /etc/ntp.conf

Dodamo:

server goodtime.ijs.si iburst
server ntp1.arnes.si iburst
server ntp2.arnes.si iburst

Storitev ponovno zaženemo:

sudo service ntp restart

in sprožimo sinhronizacijo:

sudo ntpq -c lpeer

Preverimo ali se je NTP uspel sinhronizirati s časovnimi strežniki in kakšno je tim. trepetanje (neželeno odstopanje):

ntpq -p | egrep "^\*|jitter"

Čas na računalniku sedaj preverimo z ukazom:

date

Sprememba imena gostitelja

Če uporabljamo več RPi računalnikov, je smiselno, da vsakemu nastavimo svoje ime gostitelja. Gre za ime računalniškega sistema, ki omogoča njegovo identifikacijo. To storimo s spremembo vsebine datoteke /etc/hostname:

sudo nano /etc/hostname

Ime gostitelja (lahko je tudi domensko ime) sme vsebovati črke (angleške abecede), številke ter pomišljaj in pika (“-“, “.” – s tema dvema znakoma se ime ne sme začeti ali končati). Ne sme vsebovati presledkov ali podčrtajev (“”). Ime gostitelja mora biti od biti ena beseda (lahko ločena s pikami) velikosti največ 253 znakov. Posamezen del (med pikami) je lahko velik med 1 in 63 znaki. V našem primeru smo kot ime gostitelja zapisali _rpi3.

Nato v datoteko /etc/hosts:

sudo nano /etc/hosts

…zapišemo:

127.0.1.1 rpi3

Po spremembi je potrebno računalnik ponovno zagnati.

Nastavitev VPN odjemalca

Za varnost našega RPi-ja najbolje poskrbimo, če ga vključimo v VPN omrežje in dostop do njega omogočimo samo preko VPN omrežja.

POMEMBNO: navodila predpostavljajo, da imamo postavljen VPN strežnik. Naš VPN strežnik dodeljuje IP naslove v območju 10.10.5.0/24.

Namestimo OpenVPN odjemalca:

sudo apt-get install openvpn

Ustvarimo mapo za hrambo šifrirnih ključev:

sudo mkdir /etc/openvpn/keys

Iz strežnika prenesemo šifrirne ključe:

scp -P <vrata> <datoteke> pi@<IP_naslov>:/home/pi

Na RPi prenesemo datoteke na prva mesta in jim nastavimo ustrezna dovoljenja:

sudo mv VPN_streznik.conf /etc/openvpn/
sudo mv *.crt /etc/openvpn/keys/
sudo mv *.key /etc/openvpn/keys/
sudo chown root.root /etc/openvpn/keys/*

Nastavimo samodejen zagon OpenVPN odjemalca:

sudo nano /etc/default/openvpn

dodamo:

AUTOSTART="VPN_streznik"

Ne pozabimo nastaviti pravil za požarni zid (da se ne zaklenemo iz računalnika):

sudo ufw allow from 10.10.5.0/24 to any port 22 proto tcp

Računalnik ponovno zaženemo:

sudo reboot

In se povežemo nanj preko VPN omrežja:

ssh pi@10.10.5.100

Raspberry Pi je sedaj pripravljen na nove podvige.

Kategorije: Informacijska tehnologija, Odprta koda
Ključne besede: Raspberry Pi