RasPi Posts

Viritellään jälleen ”Vattukonetta”.

 

 

 

 

 

Itselläni Raspberry Pi on jo vuosia ollut etäkoneena ja testialustana. Korttikone toimii mm. SSH / VPN – vekotuksena, sekä varmistukseen, tiedostojemmana, IRC-alustana jne. Esittelen tässä muutamia virityksiä, joilla aparaatista voi rutistaa vielä pikkuisen enemmän irti. Vinkit ovat pääasiassa headless-käyttöön, mutta soveltuvat toki osittain vaikkapa normaaliin työpöytäkäyttöön.

 

Ylikellotus:

Vattukoneen kellotus on suht helppoa ja myös melko turvallista. Avaa tiedosto /boot/config.txt ja etsi sieltä tämän tyyppistä riviä:

##None

#arm_freq=700

#core_freq=250

#sdram_freq=400

#over_voltage=0

 

Poista kommenttimerkki (#) kunkin rivin edestä eli esimerkin mukaisesti:

 

##Turbo

arm_freq=1000

core_freq=500

sdram_freq=500

over_voltage=6

 

Tallenna tiedosto ja käynnistä RasPi uudelleen. Laite on nyt ylikellotettu ja toosan pitäisi toimia ripeämmin. Tutkaile silti koneen toimintaa, sekä laitteen lämpenemistä.

 

Lisää muistia vapaaksi ja muita pikku kikkoja:

 

Jos käytät RasPia kuten minä eli tekstipohjaisesti ilman turhia graafisia kikkareita voit huoletta muuttaa config.txt – tiedostosta gpu:lle varatun muistin. Etsi gpu_mem rivi ja muuta arvoksi 16 sen alle et voi mennä, sillä näyttikselle pitää varata minimissään tuon verran muistia.

 

Jos et käytä näyttöä koneen kanssa, voit säästää virrankulutusta poistamalla HDMI:n käytöstä. Tähän oiva lääke on komento: sudo /opt/vc/bin/tvservice -o Komennon joudut antamaan jokaisen uudelleen käynnistyksen jälkeen. Toki voit lisätä komennon suoritettavaks cron-avulla: crontab -e

Lisää rivi: @reboot at now +30 minutes -f /opt/vc/bin/tvservice -o

 

Raspbian dieetille:

 

Jos käytät RasPia ilman näyttöä voidaan monia tällaiseen käyttöön tarpeettomia osia poistaa huoletta kuten vaikkapa X11. Voit koostaa listan kaikesta asennetusta komennolla: dpkg –get-selections | grep -v deinstall

 

  • Aloitetaan laihis poistamalla X11 järjestelmästä: sudo apt-get –purge remove x11-*
  • Jos et tarvitse multimediakikkareita ne saa poistettua komennolla: sudo apt-get remove alsa-base alsa-utils gstreamer1.0-alsa:armhf gstreamer1.0-libav:armhf gstreamer1.0-omx gstreamer10-plugins-base:armhf gstreamer1.0-plugins-good:armhf gstreamer1.0-x:armhf
  • Tulostustuen voi poistaa komennolla: sudo apt-get remove cups-common
  • Ylläolevien komentojen jälkeen on hyödyllistä ajaa komennot: sudo apt-get –purge autoremove ja sudo apt-get clean;sudo apt-get autoclean

 

Värkätään RasPi:n kanssa

 

raspbmc-raspberry-pi

 

 

 

 

 

 

 

 

 

 

 

Tässäpä taasen muutama näppärä vinkki, jolla saat viritettyä enemmän irti pikkuisesta tietokoneestasi. Oletuksena Rasbianissa on kuusi virtuaalikonsolia, jotka ovat peruskäyttäjälle aivan liikaa, joten puolet niistä voidaan poistaa käytöstä editoimalla inittab-tiedostoa komennolla: sudo nano /etc/inittab – etsi tiedostosta kohta jossa on listattuna alekkain kutakuinkin tällaisia rivejä: 4:23:respawn:/sbin/getty 115200 tty4 – kommentoi rivit tty4, tty5 ja tty6 #-merkillä ja tallenna tiedosto painamalla ctrl ja o ja komenna sudo kill -1 1 

NTFS

Jos sinulla ei ole käyttöä NTFS-tuelle sen voit poistaa komentamalla: sudo apt-get purge fuse-utils && sudo apt-get purge libfuse2 && sudo apt-get purge libntfs10 Nämä komennot poistavat fuse-modulin ja vapauttavat jonkin verran RAM:a ja tilaa SD-kortilta.

Runlevel

Jos olet asentanut Raspbianista Jessie-version saattaa oletus ajotaso olla niin, että RasPi käynnistyy suoraan graafiseen tilaan. Jos käytät konettasi mieluummin CLI-tilassa muokkaa inittab-tiedostoa ja etsi sieltä kohta: # The default runlevel ja varmista, että id:3:initdefault: kohdassa on nimenomaan numero 3 eikä 2. Kakkonen käynnistää järjestelmän GUI-tilaan kun taas kolmonen CLI.

Swap

Swap-tiedosto kannattaa asettaa 512MB etenkin, jos SD-kortti on kyllin suuri ja on se suotavaa pienemmälläkin kortilla. Komenna: sudo echo ”CONF_SWAPSIZE=512” > /etc/dphys-swapfile ja alusta swap komennolla sudo dphysswapfile setup ja ota käyttöön sudo dphysswapfile swapon – Jos haluat tehostaa swap:n käyttöä SD-kortin eliniän kustannuksella muuta swappiness:n oletusarvo 1 arvoon 10 komennolla: sudo sed i ’s/vm.swappiness=1/vm.swappiness=10/g’  /etc/sysctl.conf ja nosta vfs cache pressure arvoon 50: sudo echo ’vm.vfs_cache_pressure=50’ >> /etc/sysctl.conf

Preload

GUI ympäristöä voi koettaa nopeuttaa hyödyntämällä preload:a. Tämä nopeuttaa näppärästi, mutta kuluttaa vastaavasti muistia, eikä ole näin olle suositeltavaa käyttää palvelimissa tai systeemeissä, joita käytetään pelkästään CLI:n kautta. Komento sudo aptget install y preload asentaa tarvittavat kalikat ja loppusilaus annetaan komennolla: sudo sed i ’s/sortstrategy = 3/sortstrategy = 0/g’  /etc/preload.conf

I/O Scheduler

Oletuksena on käytössä deadline-scheduler, mutta sitä parempi vaihtoehto SSD- ja SD-levyille on NOOP scheduler. Sen vaihto käy kätevästi komentamalla sudo sed i ’s/deadline/noop/g’ /boot/cmdline.txt

Rsyslog:n vaihto Syslog:n

Rsyslogd vaihto kevyempään, sekä turhien lokien poisto. Vapauttaa sekä arvokasta muistia että vähentää CPU:n kuormaa. Parempi on käyttää kevyempää syslogd:a ja dumpata ylimääräiset lokitukset /var/log/(cron/mail/messages). Poistetaan ensin rsyslog -> sudo aptget y remove purge rsyslog asennetaan syslog -> sudo aptget y install inetutilssyslogd -> sudo service inetutils-syslogd stop Poistetaan seuraavaksi vanhat loki komentamalla ensin sudo su ja sitten 

for file in /var/log/*.log /var/log/mail.* /var/log/debug /var/log/syslog; do [ -f ”$file” ] && rm -f ”$file”; done
for dir in fsck news; do [ -d ”/var/log/$dir” ] && rm -rf ”/var/log/$dir”; done

Luodaan syslogd.conf komentamalla echo e ”*.*;mail.none;cron.none\t -/var/log/messages\ncron.*\t -/var/log/cron\nmail.*\t -/var/log/mail” > /etc/syslog.conf  (et tarvitse komentoon tällä kertaa sudo:a, koska aiemmin komennettiin sudo su)

Konfiguroidaan logrotate komentamalla mkdir p /etc/logrotate.d ja echo -e ”/var/log/cron\n/var/log/mail\n/var/log/messages {\n\trotate 4\n\tweekly\n\tmissingok\n\tnotifempty\n\tcompress\n\tsharedscripts\n\tpostrotate\n\t/etc/init.d/inetutils-syslogd reload >/dev/null\n\tendscript\n}” > /etc/logrotate.d/inetutils-syslogd sekä lopuksi käynnistetään syslogd service inetutilssyslogd start

 

Tässäpä jokunen virittelyvinkki kokeiltavaksi. Näillä järjestelmästä saa mukavasti nipistettyä muutaman hippusen arvokasta RAM:a

 

 

 

SSH – No Matching Cipher Found

Terminal-Replacement_256x256

 

 

 

 

 

 

 

 

Törmäsinpä äskettäin tällaiseen merkilliseen ongelmaan yrittäessäni ottaa ssh-yhteyttä Mac Mini koneeltani Raspberry Pi:n. Eteen tuli virheilmoitus:

no matching cipher found: client blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc server aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

Onko sitten syynä viimeisin OS X Yosemiten Beta (10.10.2) vaiko sitten jokin RasPi:ssa hyrräävän Debian Jessie:n päivitys, mutta yhteyttä ei vain saanut syntymään.  Pikaisen tutkailun jälkeen yllä oleva kryptinen virheilmoitus näyttäisi liittyvän salaukseen. Palvelin puolelta näyttäisi puuttuvan tuki seuraaville chiphereille: blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc – Hämmentävää!

Ongelman voi kiertää pakottamalla käyttämään palvelimen tukemaa cipher:ä komentamalla ssh -c aes128-ctr tunnus@host – Jonka jälkeen pitäisi päästä kirjautumaan palvelinkoneelle. Seuraava vaihe on lisätä varmasti toimivat cipher:t sshd_config – tiedostoon. Komennetaan sudo nano /etc/ssh/sshd_config ja lisätään seuraavat rivit tiedoston loppuun:

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc

Käynnistetään sshd uudelleen: sudo service sshd restart ; sudo service sshd status ja seuraavaksi kokeillaan ottaa yhteys päätteen kautta komentamalla ssh tunnus@host – oletettavasti eteen tulee virheilmoitus: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! – ei huolta saati murhetta vaan komennetaan ssh-keygen -R hostname , jossa hostname on palvelinkoneen ip ja tämän jälkeen kaiken tulisi toimia kuten ennenkin.

Viritellään OwnCloud

RasPiCloud

 

Tässä merkinnässä valotan hieman kuinka saat viriteltyä RasPi:sta oman henkilökohtaisen pilvipalvelimen. Vaikka olisit tilanteessa, ettet saa nettiyhteytesi kautta pystytettyä julkista palvelinta löytyy omalle pilvipalvelimelle käyttökohteita ei-julkiseen kotiverkkoonkin. Asennamme siis NGINX-palvelinohjelmiston, OwnCloud:n, sekä tarvittavat palikat, jotta kaikki toimisi ongelmitta.

Esivalmistelut

Jos käytössäsi on riittävän kokoinen SD-kortti voit käyttää sitä owncloud:n tallennustilana, mutta kunnollinen ulkoinen levy lienee parempi vaihtoehto. On kuitenkin suotavaa käyttää sellaista ulkoista USB-levyä, jossa on oma virtalähde.

Aja ensin komento: sudo raspi-config jos sitä et ole kertaakaan vielä tehnyt ja valitse vaihtoehdot expand_rootfs ja memory_split  ”16” MB ja vastaa Yes kun Raspbian tarjoutuu käynnistymään uudelleen. Aja komennot sudo apt-get update && sudo apt-get upgrade

Asentaminen

Luodaan tarvittavat käyttäjät ja ryhmät komennolla: sudo groupadd www-data ja sudo usermod -a -G www-data www-data

Asennetaan tarvittavat paketit:

sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-curl php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd php5-fpm memcached php5-memcache varnish

Luodaan SSL-sertifikaatit (voimassa vuoden)

sudo openssl req $@ -new -x509 -days 365 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key

sudo chmod 600 /etc/nginx/cert.pem
sudo chmod 600 /etc/nginx/cert.key

Konfiguroidaan nginx-palvelin

sudo nano /etc/nginx/sites-available/default

Tyhjennä kokonaisuudessaan tiedoston sisältö, korvaa se alla olevalla ja varmista, että muutat IP-osion kohdalle oman Raspberryn IP-osoitteen, jonka löydät komentamalla päätteessä ifconfig

server {
listen 80;
server_name 192.168.XXX.XXX;
rewrite ^ https://$server_name$request_uri? permanent; # enforce https
}

server {
listen 443 ssl;
server_name 192.168.XXX.XXX;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/cert.key;
root /var/www/owncloud;
index index.php;
client_max_body_size 1000M; # set maximum upload size
fastcgi_buffers 64 4K;
location ~ ^/owncloud/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}

location / {
try_files $uri $uri/ index.php;
}

location @webdav {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
include fastcgi_params;
}

location ~ ^(?<script_name>.+?\.php)(?<path_info>/.*)?$ {
try_files $script_name = 404;
include fastcgi_params;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
}
}

Seuraavaksi asetetaan arvot ”upload_max_filesize” ja ”post_max_size” arvoon 1000M – PHP.ini tiedostossa komentamalla sudo nano /etc/php5/fpm/php.ini. Vinkkinä mainittakoon, että PHP.ini on suht suuri tiedosto, joten on järkevämpää etsiä yllä mainittuja kohtia nano:ssa painamalla näppäinyhdistelmää CTRL + W. Rivit tulisi näyttää tältä muokkaamisen jälkeen: upload_max_filesize = 1000M
post_max_size = 1000M.

Aivan tiedoston loppuun lisätään rivit:

upload_tmp_dir = /srv/http/owncloud/data
extension = apc.so
apc.enabled = 1
apc.include_once_override = 0
apc.shm_size = 256

Seuraavaksi luodaan tarvittavat hakemistot oikeuksilla:

sudo mkdir -p /srv/http/owncloud/data
sudo chown www-data:www-data /srv/http/owncloud/data

PHP:n konfigurointi

sudo nano /etc/php5/fpm/pool.d/www.conf
Muutetaan rivi: listen = /var/run/php5-fpm.sock mutoon listen = 127.0.0.1:9000

sudo nano /etc/dphys-swapfile
Muutetaan rivi: CONF_SWAPSIZE=100 muotoon CONF_SWAPSIZE=512

Uudelleenkäynnistetään palvelin ja PHP

sudo /etc/init.d/php5-fpm restart
sudo /etc/init.d/nginx restart

OwnCloud-asentaminen

Olemme edenneet vaiheeseen, jossa asennamme owncloud:n. Tätä kirjoittaessa viimeisin versio on 5.0.14a – Kannattaa varmistaa OwnCloud:n sivuilta viimeisin versio ennen latausta. Aja kukin alla oleva komento yksittäin:

sudo mkdir -p /var/www/owncloud
sudo wget http://download.owncloud.org/community/owncloud-5.0.14a.tar.bz2
sudo tar xvf owncloud-5.0.14a.tar.bz2
sudo mv owncloud/ /var/www/
sudo chown -R www-data:www-data /var/www
sudo rm -rf owncloud owncloud-5.0.14a.tar.bz2

Tämän jälkeen OwnCloud-asennus on valmis ja voit yhdistää palvelimelle selaimesi kautta osoitteella: https://192.RAS.PIn.IP/owncloud

Ulkoisen kiintolevyn liittäminen

Liitä ulkoinen levy RasPi:n. Kuten jo alussa mainistin tulisi se olla omalla virtalähteellään varustettu. Komentamalla tail -f /var/log/messages näet aseman tunnisteen järjestelmässä ”sda1” tai vastaavava. Luodaan hakemisto jonne asema liitetään, jonka jälkeen asema voidaan liittää ko. hakemistoon. Komennetaan:

sudo apt-get install ntfs-3g
sudo mkdir /media/USBHDD (Nimenä voi olla muukin kuin USBHDD)
sudo mount -t ntfs-3g /dev/sda1 /media/USBHDD

Ulkoisen levyn käyttäminen OwnCloud:ssa

Aluksi pysäytämme palvelimen ja luodaan ulkoiselle levylle data-hakemisto OwnCloud:a varten. Annetaan hakemistolle tarvittavat määreen ja siirretään olemassa oleva data-hakemisto ulkoiselle levylle:

sudo service nginx stop
sudo mkdir /media/USBHDD/OwnCloud5
sudo chown www-data:www-data /media/USBHDD/OwnCloud5
sudo mv /var/www/owncloud/data/ /media/USBHDD/OwnCloud5/

Muokataan OwnCloud:n config-tiedostoa
sudo nano /var/www/owncloud/config/config.php
Muutetaan rivi: ’datadirectory’ => ’/var/www/owncloud/data’ mutoon ’datadirectory’ => ’/media/USBHDD/OwnCloud5/data’

Käynnistetään palvelin komentamalla: sudo service nginx start

Jos törmäät OwnCloud:n kanssa virheilmoitukseen: ”This ownCloud server can’t set system locale to en_US.UTF-8/en_US.UTF8. This means that there might be problems with certain characters in file names. We strongly suggest to install the required packages on your system to support en_US.UTF-8/en_US.UTF8.” voi ongelman ratkaista komentamalla päätteessä: dpkg-reconfigure ja valitsemalla listalta en_US.UTF-8. Valinta tehdään välilyönti-näppäimellä.

Muutama Raspbian-vinkki

raspbian_os

 

RasPi on kokoisekseen häkellyttävän vekkuli tietokone ja ollut itselläni vuoden päivät testialustana ja pienenä kotipalvelimena. Jos koneesi on kuten minulla jemmassa hyllyssä ilman näyttöä ja näppäimistöä ja haluat päästä siihen käsiksi afp:n yli Mac-koneelta käsin helpoiten se onnistuu asentamalla netatalk eli komennetaan RasPi:ssa päätteessä (toki jos sinulla on toimiva SSH-palvelin asennetuna RasPi:n voit antaa asennuskomennon toiselta koneeltasi SSH:n yli – SSH-palvelimen asennus on selitetty hyvin vaikkapa tässä artikelissasudo apt-get install netatalk – Netatalk:n versiosta 2.2.3 eteen päin pitäisi RasPi:n ilmaantua automaattisesti pienen odottelun jälkeen OS X:n Finder:n valikkoon kohtaan ’Jaettu’. Jos näin kuitenkaan ei tapahdu valitse Finderista ’Siirry’ -> ’Yhdistä Palvelimelle’ ja anna osoitteeksi afp://RaspberrysiIPOsoite – IP-osoitteen voit selvittää komentamalla ip addr show. Nyt pitäisi RasPi ilmaantua Finderin osioon ’Jaettu’.

Entäpä jo haluat käyttää Rasbianin graafista käyttöliittymää etänä. Tämäkin onnistuu suht kivuttomasti asentamalla RasPi:n VNC palvelin. Vaihtoehtoja on toki muitakin, mutta itse olen toteuttanut sen asentamalla tight VNC:n eli komennetaan RasPi:ssa sudo apt-get install tightvncserver kun paketti on asenettu aja: tightvncserver ja avaa uusi VNC sessio komennolla: vncserver :1 -geometry 1024×728 -depth 24 – voit toki käyttää korkeampaakin resoluutiota, sillä RasPi kykenee jopa 1920 x 1080 – resoluutioon. Tämän jälkeen asenna koneeseen, jolta haluat pääsyn RasPi:n jokin VNC asiakasohjelma ja anna yhteysosoitteeksi RasPi:n IP, jonka jo aiemmin selvitit komennolla ip addr show – Esimerkin valossa: 192.168.1.10:590x , jossa x on VNC palvelinta käynnistäessäsi antamasi session numero. Jos haluat VNC:n ilmaantuvan samalla tavalla Finderin ’Jaettu’ osioon lisää uusi palvelu /etc/avahi/services – hakemistoon eli komenna sudo nano /etc/avahi/services/rfb.service ja liitä oheinen pätkä siihen:

<?xml version=”1.0″ standalone=’no’?>
<!DOCTYPE service-group SYSTEM ”avahi-service.dtd”>
<service-group>
<name replace-wildcards=”yes”>%h</name>
<service>
<type>_rfb._tcp</type>
<port>5901</port>
</service>
</service-group>

Varmista portin numeron olevan sama kuin minkä määrittelit VNC palvelinta käynnistäessäsi. Sen jälkeen tallenna luomasi tiedosto nanossa näppäinyhdistelmällä CTRL ja O, sekä poistu editorista näppäinyhdistelmällä CTRL ja X – Jos pienen odottelun jälkeen VNC ei ilmaannu OS X Finderin ’Jaettu’ osioon käynnistä RasPi:ssa avahi-daemon uudelleen komennolla: sudo /etc/init.d/avahi.deamon restart

Seuraavaksi on äärimmäisen suotavaa suojata pikkuinen aparaattisi. Ongelma ei ole suuren suuri jos olet kuten minä 4G liittymän varassa, jolloin liittymästä ulos päin ei annetta kuin yksi ei julkinen IP-osoite. Mainttakoon tässä yhteydessä, että tämän vuoksi allekirjoittaneella ei esimerkiksi ole mahdollista pitää julkista palvelinta littymässään. Poikkeuksena tähän on esim: Sonera, jolla on tarjolla Opengate APN, jonka kautta se on mahdollista. Jos olet kiinteän laajakaistan päässä on suotavaa (suosittelen sitä muutenkin vaikket olisikaan kiinteän yhteyden päässä) ainakin vaihtaa RasPi:n oletussalasana, joka on raspberry eli oletan, että olet kirajutunut oletustunnuksella: pi joten komennetaan passwd ja annetaan sekä nykyinen salasana, että valitsemasi uusi salasana. On myös tärkeää pitää järjestelmänsä päivitettynä eli aja säännöllisesti komennot sudo apt-get update ja sudo apt-get upgrade jos RasPi:ssa on asennettuna Raspbian Wheezya aiempi versio on suotavaa ajaa myös komento: sudo rpi-update, joka päivittää RasPi:n firmwaren. Wheezyssa komento ei enää toimi, mutta komennolla: sudo aptitude update && sudo aptitude full-upgrade pitäisi myös firmware päivittyä.

Jos koneellasi hyrrää SSH palvlein on hyödyllistä estää epäilyttävät SSH-yhteysyritykset. Tähän oiva työkalu on fail2ban. Oletuksena SSH on varsin hyvin konfiguroitu Raspbianissa ja kunhan järjestelmäsi salasana on riittävän vahva olet varsin hyvin turvassa, mutta toisaalta pieni lisäturva ei ole koskaan pahitteeksi. Yksi suosikkityökaluni on Linux:n fail2ban, joka on varsin tehokas työkalu estämään epämääräiset kirjautumisyritykset SSH:n yli. Oletuksena fail2ban pistää 10 minuutin jäähylle mistä tahansa IP-osoitteesta, josta yritetään lyhyellä ajalla kirjautua järjestelmääsi ja annetaan kolme kertaa virheellinen käyttäjätunnus tai salasana. Tämä ainakin hillitsee satunnaisia yrittäjiä palvelimellesi. Paketin voit asentaa komenolla: sudo apt-get install fail2ban

Tässäpä oli muutama pieni vinkki RasPi:n parissa puuhailuun. Kirjoittelen aiheesta lisää myöhemmin mm. kuinka virität pikkuiseen tehomyllyysi oman kotipalvelimen.