Raspberry Pi … Headless

In cazul in care nu aveti la dispozitie un monitor, mouse, tastatura.

CE NE TREBUIE:

HARDWARE:

  1. Raspberry Pi, poate fi orice varianta/versiune/model
  2. Alimentator, capabil sa livreze de la 1A pt. Raspberry Pi 1, pîna la 2.5A pt. Raspberry Pi 3
  3. Card tip micro SD/SDHC, de capacitate ≥ 8GB, preferabil clasa 10 (ex: aici)
  4. Un Adaptor SD (ex: aici) sau un cititor, care poate citi/scrie carduri tip micro SD
  5. Un router/switch (acces la reteaua LAN), MUSAI prin ethernet (cablu)
  6. Cablu de retea (UTP)
  7. Un sistem PC (desktop/laptop), cu Windows/Linux

NOTA: Eu am folosit un Raspberry Pi 3, cu un card de 16Gb UHS si un PC cu Windows 10.

SOFTWARE:

  1. O imagine de Raspbian Jessie (cu sau fara interfata “Pixel”), download de aici
  2. Win32Disk Imager de aici sau Etcher de aici
  3. Putty, download x86 sau x64 de aici
  4. Nmap, download direct de aici (ver.: 7.40) sau alegeti ce varianta doriti de aici
  5. WinSCP, download direct de aici (ver.: 5.9.5) sau pagina dezvoltatorului aici

PROCEDURA:

1. Transferul imaginii Raspbian Jessie, pe cardul micro SD.

NOTA: Eu am folosit Win32Disk Imager.

  • Dezarhivati fisierul *raspbian*.zip intr-un director de pe hdd, pentru a obtine imaginea *raspbian*.iso
  • Introduceti cardul in calculator si apoi lansati Win32Disk Imager.
  • La Image File, alegeti imaginea *.iso de Raspbian Jessie, la Device alegeti cardul micro SD si apasati Write. Dureaza ceva timp scrierea imaginii pe card, mai ales daca ati ales varianta cu “Pixel”, dar nu mai mult de 5 minute, in cazul meu.
2. Important: Pregatire pentru activare SSH
  • La încheierea procedurii de scriere a imaginii pe card, deschideti o instanta de Windows Explorer.
  • Navigati / dati click pe numele cardului, pentru a citi continutul (ignorati eventualele erori de Windows cum ca, cardul nu este formatat sau “it needs to be repaired”), cel mult îl puteti scoate si reintroduce in calculator. (click “repair”)
  • In radacina (chiar acolo unde vedeti fisierele “fara de inteles pt. Windows”), creati un fisier text, atentie fara extensie, pe care il denumiti SSH, il lasati gol, fara continut.
  • Important: Ar fi bine sa verificati ca in Windows Explorer -> View -> Options -> Folder Options, Tab-ul 2 (View), la Advanced Settings, NU aveti bifat :  Hide extensions for known file types.
  • Extrageti cardul din calculator si … continuati cu incredere … 🙂
3. Urmeaza sa ne ocupam de Raspberry Pi
  • Conectati Raspberry Pi la router,
  • Introduceti cardul,
  • Conectati cablul de alimentare si introduceti in priza alimentatorul.
  • … si acum sa fugiiim !!! … 🙂

Raspberry Pi urmeaza sa-si faca treaba iar la sfarsit sa incarce interfata vizuala Pixel, (pe care oricum noi n-o vedem momentat pt. ca suntem “headless”), iar peste 25 … 38 sec. … pe numarate … sistemul va fi “up and running” ! … yey

4. Pregatiri pentru prima conexiune prin SSH

Pentru a ne putea conecta la Raspberry de pe calculator (prin SSH), avem nevoie de Putty (vedeti cerintele de mai sus: SOFTWARE, Pct.3) si mai ales avem nevoie sa stim adresa IP a dispozitivului pe care dorim sa-l accesam. Aici intra in actiune Nmap. S-o luam usor 🙂 :

  • Porniti instalarea Nmap
  • La “Select components to install”, bifam tot, in special Zenmap (sa fie bifat) … Next
  • La finalul instalarii se va deschide o noua fereastra “Installation Options”
  • Din cele 7 “bife”, de sus in jos, sa fie active 1,2,3,5,6 … Install
  • Next … Next … Finish … create desktop icon … Next …  si suntem gata
  • Cautati pictograma pe desktop si porniti Nmap Zenmap GUI
  • Target scrieti: adresa_ip_a_routerului/24, de ex. în cazul meu: 192.168.1.1/24
  • Profile alegeti: Ping Scan
  • La Command va scrie ceva de genul (în cazul meu): nmap -sn 192.168.1.1/24
  • PRESS —> SCAN (dreapta sus) … wait … wait, don’t go … wait a little more … and BINGO !

Nmap v-a oferit o lista cu adresele IP care au raspuns la “ping”. In functie de cate dispozitive aveti conectate in retea, actiunea a durat mai mult sau mai putin. Cautam prin rezultate ceva ce seamana cu:

Nmap scan report for 192.168.xxx.xxx
Host is up (0.0010s latency).
MAC Address: XF:2T:EB:EF:51:SA (Raspberry Pi Foundation)

Adresa IP a dispozitivului Raspberry Pi, este afisata 2 randuri deasupra campului MAC Address. Indiferent care este aceasta, nu va atasati de ea, pentru ca urmeaza sa o schimbam. Noua ne plac adresele IP statice, nuuu … resturile astea asignate automat … 🙂

5. Conectare la Raspberry Pi si cîteva setari obligatorii

Folosind protocolul SSH, ne vom conecta la Raspberry Pi printr-un terminal pus la dispozitie de aplicatia de Windows -> Putty. Rezultatul final va fi un dispozitiv Raspberry Pi gata de pus la treaba … In acest sens, asezati-va confortabil in fata PC-ului si sa incepem:

NOTA: In randurile care urmeaza, pe alocuri, va fi trebui sa introduceti comenzi specifice mediului Linux, in terminalul Putty. Este de ajuns sa le copiati de aici si apoi sa faceti “click-dreapta” in terminalul Putty pentru “paste”.

  • accesarea interfetei de configurare a sistemului de operare

Deschideti aplicatia Putty si in campul denumit “Host Name (or IP address)” introduceti adresa IP pe care am gasit-o cu utilitarul Nmap (vezi mai sus). Lasati portul 22 (SSH default), salvati configuratia daca doriti si apasati butonul “OPEN”.

La prima conectare, Putty va instala cîteva certificate de autentificare (va face asa pentru orice host nou la care va veti conecta), acceptati (apasati “YES”), iar aplicatia va deschide un terminal (o fereastra cu fundal negru) în care va trebui sa introduceti datele de autentificare ale dispozitivului pe care îl accesati: la promptul login as scrieti pi, la promptul pi@adresa_ip scrieti raspberry, apasati Enter.

  • schimbarea parolei userului curent (user = “pi”, pass = “raspberry”)

NOTA: Este recomandat, ca dupa o instalare noua a unei distributii de Linux, sa schimbam parola default, uneori chiar si userul sau drepturile acestuia. Comanda passwd, schimba parola userului curent. In cazul nostru “pi”. Deci, curaj si copy/paste in terminal comanda de mai jos (fara caracterul $).

$ passwd

Introduceti parola actuala a utilizatorului pi, adica raspberry iar cînd sistemul v-o va cere, introduceti noua parola. Tineti minte ca la acest pas modificati parola pentru user = pi.

  • asignarea unei adrese IP statice, pentru ambele interfete (eth0 & wlan0)

NOTA: Mediul Linux Raspbian precum si multe alte distributii, isi organizeaza informatia / setarile si posibilitatile de configurare, in diverse fisiere text care pot fi editate cu un simplu editor de texte. Mai peste tot unde va fi nevoie de un astfel de editor, eu voi folosi unul care vine preinstalat si se numeste nano. In majoritatea cazurilor il voi apela cu drepturi de administrator, deci comanda va fi sudo nano. Pentru atribuirea unor adrese IP fixe celor doua interfete hardware (ethernet si wifi), este de ajuns sa editam fisierul care pastreaza aceste informatii. Numele lui este dhcpd.conf si îl gasim in directorul etc.

sudo nano /etc/dhcpcd.conf

Navigati in editor cu combinatia de taste Ctrl+V (care inseamna Page Down) pina la sfarsitul fisierului, unde mai dam de cateva ori Enter, pentru estetica … 🙂 … apoi copy de aici si paste in terminalul Putty, urmatoarele randuri :

NOTA: Voi lasa adresele IP pe care le folosesc eu, tocmai pentru a va da seama ce si cum … bineinteles ca voi va trebui sa le schimbati dupa bunul plac, dar nu va atingeti de nimic altceva (cum ar fi grupul “/24”) … 🙂 … si asigurati-va ca sunt libere / neatribuite altui dispozitiv. Spor la copy / paste de aici in jos:

interface eth0

static ip_address=192.168.1.55/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

interface wlan0

static ip_address=192.168.1.56/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Parasim editorul si salvam folosind combinatia de taste Ctrl+X, apoi Y, apoi Enter.

  • update/upgrade distributie de Linux (sistemul de operare/dependinte/pluggin-uri)

NOTA: Distributia Raspbian vine cu o comanda care ofera posibilitatea configurarii intr-un mod usor si placut si care permite diverse setari pe care va recomand sa le exersati (ex. extinderea partitiei pentru a cuprinde toata capacitatea cardului SD, overclocking, regiunea geografica, activare/dezactivare servicii, start-up direct in interfata vizuala Pixel, etc). Numele comenzii este raspi-config, insa noi o vom lansa cu drepturi sudo pentru ca modifica unele fisiere la care utilizatorul “pi” nu are acces. Copy / paste cu incredere:

sudo raspi-config

Rezultatul este cel de aici. Jucati-va cu incredere, parcurgeti lista cu “exercitii” din exemplele aflate in nota de mai sus (cele din paranteze), iar la final, parasiti mica interfata si fiti gata de lucrari mai serioase.

NOTA: Urmeaza sa-i comandam sistemului sa caute cele mai noi versiuni ale tuturor pachetelor / dependintelor instalate odata cu distributia noastra de Linux a caror lista se gaseste in fisierul sources.list din directorul apt (calea completa: /etc/apt/sources.list). Vom folosi comanda apt-get update, in varianta “GOD-like”, adica sudo … 🙂 … copy / paste:

sudo apt-get update

NOTA: La terminarea comenzii de mai sus, va trebui sa si instalam noile versiuni gasite. Vom folosi comanda apt-get-upgrade, culmea, in varianta sudo … 🙂 … just do it, copy / paste:

sudo apt-get upgrade

… trust me, I’m an engineer, mai avem un pic … read on

  • instalare/configurare/activare protocol Samba, +parola

NOTA: Orice user serios de Linux, are vise erotice cu Windows … e valabil si invers. Ce ar fi daca ne-am putea plimba prin directoarele de pe Raspberry Pi, direct din Windows Explorer. Va spun eu … ar fi util ! … mai ales daca ati uitat sa instalati WinSCP (eu v-am spus de el mai sus, la cerinte Software, pct.5). Serviciul denumit intuitiv Samba (la fel cum “pause” pe Youtube nu e “space” … e “K” … da !, … K de la Pause … 🙂 … ) ne permite exact acest lucru. Sa-l instalam, copy / paste:

$ sudo apt-get install samba

Lasati sistemul sa rontaie, iar cand a terminat, trebuie sa si configuram putin un fisier, responsabil de  mai multe setari / atribute (ex. ce directoare are voie Windows sa “vada”, poate sa creeze alte directoare/fisiere sau nu, poate sa execute sau nu, ce useri au voie sa faca asta, parole, etc), fisier denumit sugestiv smb.conf, aflat in directorul samba (calea completa: /etc/samba/smb.conf) … copy/paste:

$ sudo nano /etc/samba/smb.conf

Navigam pina jos, la sfarsitul fisierului (am putea sterge tot cu Ctrl+K) Ctrl+V, Ctrl+V, Ctrl+V … iar acum va dau exemplu ce am trecut eu in fisierul meu smb.conf, urmand ca, daca aveti alte preferinte sa cautati voi mai departe … copy/paste:

[global]
netbios name = RASPBERRY_PI3
server string = Secret Base
workgroup = WORKGROUP
hosts allow =
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
remote announce =
remote browse sync =

[HOME ASSISTANT]
path = /home/homeassistant/.homeassistant
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =

[ROOT]
path = /
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =

Parasim editorul si salvam folosind combinatia de taste Ctrl+X, apoi Y, apoi Enter.

Schimbam/cream parola pt. user “pi”: $ sudo smbpasswd -a pi

Restart serviciul Samba: $ sudo service smbd restart

NOTA: Atentie, fisierul de configurare smb.conf permite setarea unor atribute foarte importante si cu impact puternic asupra posibilitatii de a “strica tot”, ulterior, din Windows Explorer … 🙂 … adica în cazul meu, drepturi de read/write/execute peste tot … va recomand cu caldura sa va documentati un pic asupra declaratiilor folosite mai sus (ex. atributul 0777, ce inseamna, de unde vine, cum se formeaza … etc.)

Un tutorial viitor, va trata comenzi de Linux, in detaliu, si va oferi explicatii si optiuni pentru fiecare din comenzile uzuale si interesante ale mediului. Bafta ! si nu uitati, fiecare tutorial de Linux citit ofera: Hacker lvl +1, Intelligence lvl +2, No-Life lvl +10 … 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s