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/.
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.
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.
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
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.
Ključne besede: Raspberry Pi