Tema 2 Linux - Epic Clock Time

Motivație

Obiectivul temei 2 de Linux este să compuneți un sistem Linux complet, care să afișeze ceasul sau data pe un dispozitiv accesibil printr-un character device driver. Se vor pune în aplicare cunoștințele dobândite în timpul laboratorului, aplicate pe placa arm_versatile din Qemu. Sistemul va prezenta o interfață web prin care se poate configura ceasul (sursa de ceas, timezone-ul curent, server-ul de NTP etc. )

Se urmăresc consolidarea următoarelor aptitudini:

  • lucrul cu Yocto - generarea de distribuții pentru sisteme Linux
  • configurarea Yocto și adăugarea de pachete pentru un sistem anume
  • configurări de bază pentru lucrul în rețea
  • configurarea unui server cu o interfață simplă web

În plus, se dorește explorarea unor subiecte care nu au fost tratate în laborator decât la nivel de concept

  • optimizări de spațiu pentru întregul sistem (opțional)
  • logging în sisteme cu spațiu de stocare limitat (opțional)

Componenta principală a temei

  • Aplicația/Scriptul userspace care modifică ora/data afișată pe dispozitiv
  • Server-ul de HTTP cu interfața de configurare
  • Imaginea de Linux necesară pentru task-urile de mai sus

Pentru acest lucru aveți nevoie de:

  • Un server HTTP (oricare dintre cele prezente în Yocto)
  • Interfață web cu comportament dinamic (PHP, dar puteți folosi CGI simplu, framework-uri Python, Ruby, Java etc.)
  • Sistem de logare a acțiunilor din interfață

:!: Tema se va dezvolta în Qemu (> v1.0.1), pentru placa arm_versatile. Se va folosi Yocto pentru generarea imaginii, așa cum este descris în laboratorul de Yocto.

Afișarea pe dispozitiv

Dispozitivul de afișare este un 7-segment display cu 6 cifre (ca și ceasul din laborator) și are un driver încărcat care apare ca un device driver de tip caracter. Calea completă se va găsi în /etc/epicclockpath și va fi inițial /dev/epicclock, apoi se va putea modifica din interfața web (interfața web va updata și fișierul /etc/epicclockpath atunci când este nevoie).

Device driver-ul nu este scris de voi, tot ce știți despre el este interfața lui: trebuie scrise 6 caractere între '0' și '9' pentru ca acesta să le afișeze în ordine, urmate obligatoriu de '\n'. Nerespectarea acestei interfețe (6 caractere între '0' și '9' urmate de '\n') va duce la distrugerea universului și la depunctarea temei.

Puteți face această scriere către dispozitiv atât dintr-o aplicație userspace, cât și dintr-un script (fără restricții).

Interfața web

Interfața web trebuie să aibă următoarele funcționalități:

  • Activarea/dezactivarea serviciului NTP
  • Setarea ceasului de sistem
  • Setarea timezone-ului
  • Setarea căii pentru device node-ului ceasului (default: /dev/epicclock)
  • Setarea căii fișierului de log
  • Configurarea afișării, selecție între trei moduri:
    • se afișează doar ora
    • se afișează doar data
    • se ciclează între afișarea datei și a orei cu interval configurabil (default: 5 secunde)

Fișierul de log

Fișierul de log trebuie să conțină intrări de forma:

  User-ul cu IP-ul X a modificat timezone-ul din Y în Z
  User-ul cu IP-ul X a modificat ora curentă din Y în Z

Serviciile din sistem

  • ssh pe portul 22
  • http pe portul 80
  • avahi/mDNS

Alte trăsături ale sistemului

  • Login folosind user-ul 'root' cu parola 'roota'
  • IP luat automat prin dhcp la pornire
  • Sistemul se va prezenta ca temasi.local (hostname temasi, serviciu Avahi/mDNS)
  • Login automat pe serială (fără să ceară parolă) - seriala este ceea ce apare în consolă la rularea Qemu

Trimiterea temei

Tema va fi trimisă separat, metainformații pe moodle și arhiva propriu-zisă pe orice platformă de hosting doriți voi (Dropbox, transfer.ro, Google Drive etc)

Pe Moodle trebuie pus:

  • un fișier care să conțină:
    • link către arhiva .zip cu imaginile
    • hash-ul md5 al arhivei (obținut cu md5sum) :!: ATENȚIE :!: Nu vor fi punctate temele care nu au acest hash sau cele al caror hash nu corespunde cu arhiva downloadata de pe platforma de hosting la momentul corectării.

Arhiva (hostată oriunde, accesibilă din ziua deadline-ului, valabil măcar o săptămână) trebuie să conțină:

  • partiția de ext3 a sistemului (sau de alt tip, dacă aveți motive solide)
  • imaginea kernel-ului
  • script de rulare Qemu - launch.sh
  • sursele aplicației web/userspace folosite pentru controlul ceasului
  • fișier readme cu explicații referitoare la probleme întâmpinate, opțiuni speciale de configurare/optimizare folosite, etc.

Notare

Din 100p total, aveți:

  • (15p) Configurări de bază
    • User, parolă (root, roota)
    • IP luat la pornirea sistemului prin DHCP
    • Hostname temasi
    • Login automat pe serială
    • Configurare Avahi/mDNS
    • Sistemul trebuie să răspundă din exterior la ping temasi.local
  • (5p) Configurare HTTP+PHP(or equivalent)
    • Se va puncta rularea phpinfo în lipsa altei pagini, sau echivalentul pentru alt sistem de pagini dinamice
  • (10p) Scrierea datei corecte în fișierul ceasului
  • (50p) Interfața web
  • (5p) Fișierul de log
  • (10p) Eficiența implementării, atât din punct de vedere spațiu ocupat, cât și timp de procesor ocupat
  • (5p) Readme scris clar și cu toate informațiile necesare

Bonus

  • (5p) Optimizări deosebite de spațiu ale imaginii finale
  • (5p) Se folosește logrotate pentru a ne asigura că nu va rămâne sistemul fără spațiu de stocare
  • (5p) Pretty factor
si/teme/2013/tema2linux.txt · Last modified: 2020/05/19 22:10 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0