Construirea de NVR-uri bazate pe Linux

Overview

Acest articol descrie pașii obișnuiți pentru un partener care dorește să realizeze un produs hardware de tip NVR – un computer încorporat (numit aici „NVR”) cu o aplicație Server preinstalată. În mod obișnuit, un astfel de NVR este un computer bazat pe Linux cu un procesor ARM.

Etapele de bază pentru a realiza un astfel de produs includ următoarele:

  • Alegeți hardware
    • Platforma
    • Stocare
  • Alegeți aroma Linux
  • Instalați aplicația Server
  • Implementați caracteristici suplimentare
  • Stabiliți o politică de asistență

Aceste etape sunt descrise mai jos în detaliu.

Alegerea hardware-ului

Pentru ca un produs să aibă succes, acesta trebuie să fie eficient din punct de vedere al costurilor și să ofere performanța necesară – să suporte numărul dorit de camere cu bitrate/rezoluția dorită. Hardware-ul utilizat trebuie să aibă cel puțin 1GB de RAM și un chipset ARM Cortex A7 sau mai mare.

Se recomandă să studiați mai întâi performanțele platformelor ARM suportate (consultați Politica de asistență ARM pentru lista acestor platforme), apoi să alegeți o platformă cât mai apropiată de cerințele dumneavoastră.

Platforma

Platforma ARM suportată aleasă poate fi utilizată ca una dintre următoarele:

  • un calculator gata de cumpărare (de ex. o placă de bază standard Raspberry Pi), eventual cu o carcasă și o sursă de alimentare personalizate;
  • o referință pentru proiectarea unui calculator personalizat cu placa de bază care poate găzdui componente hardware suplimentare, cum ar fi interfețe periferice sau controlere de hard disk.

Dacă se preconizează că NVR-ul va avea la bord un software suplimentar în afară de aplicația Server, cum ar fi un server web care oferă o interfață web pentru utilizator, un software de analiză video (de exemplu, un plugin VMS și/sau backend-ul acestuia) sau altele asemenea, asigurați-vă că adăugați suficientă memorie RAM și putere de procesare CPU pentru a acoperi acest lucru.

Transcodarea video nu este suportată pe dispozitivele ARM din cauza puterii de calcul limitate. În plus, unele dependențe, cum ar fi OpenSSL, pot avea probleme de compatibilitate. Dacă analiza inițială arată că o platformă tipică bazată pe ARM nu va oferi performanța necesară, poate fi luată în considerare o platformă x64.

Performanțele de stocare ale platformei ar trebui să fie suficient de bune pentru sarcina planificată. De exemplu, se știe că soluții precum SATA-over-USB pot duce la o performanță slabă a HDD, insuficientă pentru înregistrarea numărului necesar de camere.

Performanța de rețea a platformei ar trebui să fie suficient de bună pentru sarcina planificată. De exemplu, se știe că astfel de soluții, cum ar fi implementarea Ethernet bazată pe software, necesită multe resurse CPU și, prin urmare, pot duce la căderi de cadre în timpul înregistrării camerelor sau al transmiterii către Clienți, sau la alte probleme. În plus, modelele hardware care implementează ethernet prin intermediul unui hub USB pot avea o lățime de bandă de rețea mai mică decât cea anunțată.

Platforma ar trebui să fie echipată cu un hardware Real-Time Clock (RTC) și/sau ar trebui să fie activată sincronizarea timpului prin rețea (de exemplu, folosind protocolul NTP) – pentru ca VMS să funcționeze corect, data și ora sistemului de operare trebuie să fie corecte. În cazul în care nu există un RTC hardware, iar singura sursă de dată/oră este planificată să fie rețeaua, se recomandă ca dispozitivul să refuze să pornească deloc în cazul în care nu poate sincroniza data/oră.

Stocare

Asigurați-vă că există suficient spațiu în sistemul de fișiere pentru ca VMS să funcționeze corect. Serverul utilizează următoarele locații de stocare:

  • Instalarea VMS – binare și biblioteci dinamice (fișiere .so)
    • Localizat la /opt/<vendor>/mediaserver/
    • Spațiu necesar: poate fi calculat măsurând dimensiunea totală a fișierelor respective din distribuție cu o anumită marjă adăugată; cu cât marja este mai mare – cu atât sunt mai puține șanse de probleme la actualizarea la versiunile viitoare. În general, se recomandă o marjă de 30%.
    • În cazul în care nu există spațiu de stocare suficient la /opt, fișierele .so pot fi mutate prin legături simbolice în altă locație, inclusiv în spațiul de stocare FAT32 (dar în acest caz pot fi mutate doar fișierele care nu sunt legături simbolice).
  • Fișiere de baze de date ale serverului – stochează informații despre camere și alte servere, jurnale de evenimente etc.
    • În mod normal, se află la /opt/<vendor>/mediaserver/var/; poate fi modificat în fișierul de configurare a serverului.
    • Necesită un sistem de fișiere ext4
    • Spațiu necesar: depinde de numărul de camere și Servere din sistemul VMS, dar în general se recomandă cel puțin 500 MB.
  • Baza de date de analiză a serverului – stochează metadatele de analiză video generate de plugin-urile de analiză
    • De obicei, se află la /opt/<vendor>/mediaserver/var/data; poate fi modificată în fișierul de configurare a serverului.
    • Spațiu necesar: depinde dacă sunt utilizate Plugin-uri Analytics pe acest Server și cât de multe metadate vor trimite Plugin-urile. În general, se recomandă 20% din dimensiunea spațiului de stocare a arhivei video dacă se utilizează Plugin-uri de analiză pe acest server.
  • Registrările serverului
    • Situate la /opt/<vendor>/mediaserver/var/log/
      • Pot fi relocate prin intermediul mediaserverului.conf.
    • Logurile sunt suprascrise automat într-o buclă.
    • Spațiu necesar: se recomandă cel puțin 260 MB.
    • NOTA: Am observat că pe anumite dispozitive ARM (de ex, Raspberry Pi 3), memoria flash internă (Micro SD în acest caz) nu era suficient de bună pentru a accepta jurnalele. Sistemul se bloca timp de până la 4 secunde. Am recomandat redirecționarea jurnalelor către aceeași locație ca și arhiva video pentru astfel de dispozitive.
  • Arhiva video – stochează înregistrările video de la camere
    • De obicei, se află la /opt/<vendor>/mediaserver; poate fi modificată în fișierul de configurare a serverului.
    • Partiția de sistem va fi probabil restricționată de la înregistrare în mod implicit, cu excepția cazului în care există cel puțin 10 GB de spațiu liber.
    • Memorie flash internă (eMMC) sau card SD
        • Estimați câte cicluri de scriere poate accepta memoria. Arhiva video se suprascrie automat într-o buclă, astfel, durata unui singur ciclu de scriere poate fi calculată prin împărțirea spațiului liber la bitrate-ul combinat al tuturor camerelor care sunt înregistrate pe server.
        • Asigurați-vă că debitul de memorie este suficient pentru bitrate-ul combinat al tuturor camerelor care sunt înregistrate pe server, cu o marjă de siguranță de 30%.
    • HDD intern sau SSD
        • Asigurați-vă că debitul de disc este suficient pentru bitrate-ul combinat al tuturor camerelor care sunt înregistrate pe server, cu o marjă de siguranță de 30%.
    • NAS extern
        • Asigurați-vă că lățimea de bandă reală a adaptorului de rețea este suficientă pentru bitrate-ul combinat al tuturor camerelor care sunt înregistrate pe server înmulțit cu 2 (deoarece camerele își trimit probabil fluxurile către server folosind același adaptor de rețea), cu o marjă de siguranță de 30%.

  • Filele de actualizare a aplicației Server
    • Pentru a se putea actualiza, aplicația Server trebuie să descarce versiunea sa mai nouă și să o despacheteze.
    • Localizate la /tmp/
    • Spațiu necesar: dimensiunea totală a fișierului de distribuție Server împachetat înmulțită cu 2,6; aceasta include marja. Se poate recomanda mai mult spațiu pentru a minimiza șansele de apariție a unor probleme la actualizarea la versiunile viitoare.
    • Filele temporare ale sistemului de operare
      • În mod obișnuit localizate la /tmp/
      • Spațiu necesar: se recomandă cel puțin 100 MB, fără a include spațiul necesar pentru fișierele de actualizare a aplicației Server (a se vedea mai sus).

    Majoritatea lucrurilor enumerate mai sus pot fi alocate pentru a fi stocate într-o locație diferită în fișierul de configurare Server: /opt/<vendor>/mediaserver/etc/mediaserver.conf

    Din moment ce stocarea tipică a cardului SD nu este fiabilă și se știe că se defectează în timpul operațiilor intensive de citire-scriere, recomandăm instalarea sistemului de operare și stocarea arhivei video pe un hard disk(s). Dacă se ia în considerare un SSD/un hard disk sau un card SD pentru stocarea arhivei video, evaluați capacitatea acestuia pentru mai multe operații de rescriere folosind bitrate-ul tipic al unei camere suportate dorite înmulțit cu numărul dorit de camere suportate.

    De exemplu, pentru Raspberry Pi 3 B+:

      • Utilizați un adaptor USB-SATA și un hard disk extern pentru arhivă.
      • Instalați sistemul de operare (Raspbian) pe un hard disk extern. Consultați articolul Cum să vă porniți Raspberry Pi de pe un dispozitiv de stocare în masă USB pentru detalii. Acest proces ar trebui să fie automatizat în funcție de modul în care dispozitivele ARM vor fi distribuite: cu sau fără hard disk:
        • Cu hard disk – faceți o imagine preconfigurată cu VMS instalat și clonați-o pe hard disk.
        • Fără hard disk – va trebui să creați un set de scripturi care să formateze HDD-ul, să copieze sistemul de operare și să facă toate ajustările necesare. Aceasta este o sarcină destul de complexă și consumatoare de timp.

    Alegeți aroma Linux

    Există, de obicei, mai multe opțiuni pentru sistemul de operare Linux pe un anumit NVR:

    • „Busybox” – doar nucleul Linux și setul de bază de instrumente de linie de comandă; utilizat pe NVR-uri cu performanțe relativ scăzute, cum ar fi camerele „edge” (camere cu serverul VMS care rulează pe ele).
    • Debet standard, sau una dintre variantele sale, cum ar fi Ubuntu.
    • Versiune modificată a Debian sau a unei alte distribuții Linux, de obicei modificată de către furnizorul dispozitivului (de ex, Raspbian pentru Raspberry Pi).

    În general, se recomandă să se aleagă o variantă de Linux care este alegerea nativă pentru platforma pe care se bazează NVR-ul. De exemplu, atunci când se dezvoltă un NVR similar din punct de vedere hardware cu Raspberry Pi (sau chiar folosind exact placa de bază Raspberry Pi), este recomandat să se aleagă Raspbian.

    Dacă pentru dispozitiv sunt disponibile mai multe distribuții Linux cu seturi diferite de pachete, se recomandă cea mai puțin grea. De exemplu, dacă nu se intenționează să se afișeze o interfață grafică pe NVR, nu este nevoie de sistemul X Window.

    Asigurați-vă că versiunea Linux și setul său de pachete satisfac cerințele VMS. Pentru dispozitivele bazate pe ARM, consultați detaliile sistemului de operare specificate în Politica de asistență ARM.

    Instalați aplicația Server

    După ce NVR-ul este încărcat cu un sistem de operare Linux adecvat, aplicația Server trebuie instalată pe NVR. Există în principiu două opțiuni:

    1. Pentru sistemele de operare bazate pe Debian: instalați pachetul oficial .deb din distribuția VMS folosind dpkg.
    • Consultați instrucțiunile detaliate pentru instalarea VMS pe un dispozitiv: Instrucțiuni de instalare ARM SBC
  • Pentru sistemele de operare bazate pe Busybox: extrageți fișierele necesare din pachetul .deb al VMS în directorul dorit și aveți grijă manual de următoarele aspecte:
    • Cum va fi pornit serverul la pornire și dacă suportul system.d din distribuție nu este adecvat?
    • De unde va lua serverul bibliotecile .so care lipsesc din Linux-ul instalat?
    • Va fi activat sistemul standard de actualizare automată VMS?

    Pentru configurații mai puțin tipice ale sistemului de operare, poate fi necesară o combinație a opțiunilor 1 și 2.

    Implementarea unor caracteristici suplimentare

    În mod obișnuit, un NVR nu este doar un calculator Linux standard cu aplicația Server instalată – acesta oferă adesea caracteristici suplimentare utilizatorului:

    • Butoane hardware, LED-uri sau chiar afișaje încorporate.
    • O interfață web care vă permite să personalizați NVR-ul dincolo de simpla configurare a aplicației Server prin intermediul propriei interfețe web, cum ar fi
      • opțiuni de rețea: Adresă IP, subrețea, etc.;
      • oră de sistem și fus orar;
    • Stație video (de ex, HDMI) care afișează o interfață grafică sau cel puțin un ecran de întâmpinare cu valori de configurare de bază, cum ar fi adresa IP a NVR;
    • Software suplimentar care rulează în paralel cu VMS, cum ar fi un daemon de configurare sau un backend de analiză video.
      • Dacă software-ul suplimentar are o autentificare bazată pe parolă pentru utilizatorul final, luați în considerare implementarea sincronizării parolelor, astfel încât parola serverului VMS să fie întotdeauna aceeași cu cea pentru software-ul suplimentar. Dacă utilizatorului i se oferă ssh pentru a accesa NVR, luați în considerare și sincronizarea parolei acestuia.
    • Modificări suplimentare, cum ar fi minimizarea memoriei video (GPU). De exemplu, pentru Raspberry Pi 3 B+, setați memoria GPU la 16 MB. Consultați documentația Raspberry Pi pentru detalii.

    Pentru a implementa astfel de caracteristici, poate fi necesar să scrieți sau să modificați scripturile care controlează aplicația Server sau să scrieți programe suplimentare în C/C++.

    Sincronizare temporală

    Asigurați-vă că NVR-ul are o baterie CMOS încorporată pentru a preveni resetarea ceasului său în cazul unei pierderi de energie. De exemplu, Raspberry Pi 3 B+ nu are o baterie CMOS încorporată. Dacă dispozitivul este repornit, ora se va reseta și aceasta va duce la scrierea incorectă a arhivei. Pentru a evita acest lucru, există câteva opțiuni:

    • Asigurați-vă că este conectat la internet pentru a sincroniza ora.
    • Dacă este o rețea închisă, va trebui să configurați un server NTP.
    • Adaugați un modul RTC (Real-Time Clock) la placă și pre-configurați-l. Consultați Adăugarea unui ceas în timp real la Raspberry Pi.

    Căutarea/construirea unei carcase pentru NVR-ul dvs.

    Este necesar să găsiți sau să proiectați o carcasă care să se potrivească cu tot hardware-ul menționat mai sus.

    Conducerea unui test extins de încărcare/solicitare

    Pentru a vă asigura că totul funcționează împreună, este necesar să planificați un test intensiv de solicitare pentru a vă asigura că nu există supraîncălzire sau funcționare defectuoasă a componentelor. Testul ar trebui să fie capabil să încarce toate componentele sistemului, cum ar fi procesorul, memoria, discul (discurile) dur(e), rețeaua și Wi-Fi (dacă este necesar) etc.

    Estabiliți politica de asistență

    VNVR-ul va fi furnizat utilizatorilor săi finali, iar aceștia vor avea cu siguranță nevoie de un anumit tip de asistență tehnică. Echipa de asistență a furnizorului de NVR nu poate oferi astfel de servicii utilizatorilor finali, prin urmare, ar trebui elaborată o politică de furnizare a unui astfel de suport, cum ar fi un birou de asistență online, un forum comunitar sau altele asemenea.

    Când echipa de asistență a furnizorului de NVR este sigură că problema respectivă nu este legată de specificul NVR în sine, ci mai degrabă este o problemă a VMS, aceasta poate solicita asistență din partea furnizorului de VMS în conformitate cu politica de asistență ARM menționată mai sus, iar apoi poate utiliza rezultatul acestui caz de asistență pentru a satisface cererea de asistență din partea unui utilizator final.

    Întrebări

    Dacă aveți întrebări legate de acest subiect sau doriți să împărtășiți experiența dvs. cu alți membri ai comunității sau cu echipa noastră, vă rugăm să vizitați și să vă implicați în comunitatea noastră de asistență sau să contactați distribuitorul dvs. local.

    Lasă un răspuns

    Adresa ta de email nu va fi publicată.