Linux-alapú NVR-ek építése

Áttekintés

Ez a cikk a szokásos lépéseket írja le egy olyan partner számára, aki egy NVR-szerű hardverterméket – egy beágyazott számítógépet (itt “NVR”-nek nevezzük) egy előre telepített Server alkalmazással. Tipikusan egy ilyen NVR egy Linux-alapú számítógép ARM CPU-val.

Egy ilyen termék elkészítésének alapvető lépései a következők:

  • Hardver kiválasztása
    • Platform
    • Tároló
  • Linux íz kiválasztása
  • Kiszolgáló alkalmazás telepítése
  • Extrafunkciók implementálása
  • Támogatási politika kialakítása

Az alábbiakban ezeket a lépéseket részletezzük.

Hardver kiválasztása

A termék sikeréhez költséghatékonynak kell lennie, és biztosítania kell a szükséges teljesítményt – támogatnia kell a kívánt számú kamerát a kívánt bitrátával/felbontással. A használt hardver legalább 1 GB RAM-mal és ARM Cortex A7 vagy magasabb szintű lapkakészlettel kell rendelkeznie.

Először ajánlott tanulmányozni a támogatott ARM platformok teljesítményét (az ilyen platformok listáját lásd az ARM támogatási szabályzatában), majd kiválasztani a követelményekhez legközelebb álló platformot.

Platform

A kiválasztott támogatott ARM platform a következők egyikeként használható:

  • egy készen vásárolható számítógép (pl. egy szabványos Raspberry Pi alaplap), esetleg egyedi tokkal és tápegységgel;
  • referenciaként az alaplapot tartalmazó egyedi számítógép tervezéséhez, amely további hardverkomponenseket, például perifériás interfészeket vagy merevlemez-vezérlőket tartalmazhat.

Ha az NVR várhatóan a kiszolgáló alkalmazáson kívül további szoftvereket is tartalmaz majd a fedélzeten, például a felhasználó számára webes felületet biztosító webszerver, videóelemző szoftver (pl. egy VMS plugin és/vagy annak backendje) vagy hasonló, gondoskodjon arról, hogy elegendő RAM és CPU feldolgozási teljesítmény álljon rendelkezésre ennek fedezésére.

A videó átkódolása a korlátozott számítási teljesítmény miatt nem támogatott ARM-eszközökön. Emellett egyes függőségek, mint például az OpenSSL, kompatibilitási problémákat okozhatnak. Ha a kezdeti elemzés azt mutatja, hogy egy tipikus ARM-alapú platform nem biztosítja a szükséges teljesítményt, akkor egy x64 platform is szóba jöhet.

A platform tárolási teljesítményének elég jónak kell lennie a tervezett terheléshez. Például ismert, hogy az olyan megoldások, mint a SATA-over-USB, gyenge HDD-teljesítményt eredményezhetnek, ami nem elegendő a szükséges számú kamera rögzítéséhez.

A platform hálózati teljesítményének elég jónak kell lennie a tervezett terheléshez. Ismert például, hogy az olyan megoldások, mint a szoftveralapú Ethernet implementáció sok CPU-erőforrást vesz igénybe, és így a kamerák rögzítése vagy az Ügyfelek felé történő streamelés során képkocka-kiesésekhez vagy egyéb problémákhoz vezethet. Emellett az USB hubon keresztül Ethernet-et megvalósító hardvermodellek a meghirdetettnél kisebb hálózati sávszélességgel rendelkezhetnek.

A platformnak rendelkeznie kell valós idejű óra (RTC) hardverrel, és/vagy engedélyezni kell a hálózaton keresztüli időszinkronizálást (pl. az NTP protokoll segítségével) – a VMS helyes működéséhez az operációs rendszer dátumának és idejének helyesnek kell lennie. Ha nincs hardveres RTC, és az egyetlen dátum/időforrás a tervek szerint a hálózat lesz, ajánlott, hogy az eszköz egyáltalán ne induljon el, ha nem tudja szinkronizálni a dátumot/időt.

Tárolás

Győződjön meg arról, hogy a fájlrendszeren elegendő hely van a VMS megfelelő működéséhez. A szerver a következő tárolóhelyeket használja:

  • VMS telepítés – binárisok és dinamikus könyvtárak (.so fájlok)
    • A /opt/<vendor>/mediaserver/
    • Szükséges hely: kiszámítható a disztribúcióban lévő megfelelő fájlok teljes méretének mérésével, némi hozzáadott tartalékkal; minél nagyobb a tartalék – annál kisebb az esélye a későbbi verziókra való frissítéssel kapcsolatos problémáknak. Általában 30%-os tartalék ajánlott.
    • Ha nincs elég tárhely a /opt-on, a .so fájlok szimlinkeken keresztül áthelyezhetők egy másik helyre, beleértve a FAT32 tárolót is (de ebben az esetben csak azok a fájlok helyezhetők át, amelyek nem szimlinkek).
  • Szerver adatbázis fájlok – tárolja a kamerák és más szerverek adatait, eseménynaplókat stb.
    • Tipikusan a /opt/<vendor>/mediaserver/var/ címen található; a Szerver konfigurációs fájlban módosítható.
    • Ext4 fájlrendszert igényel
    • Szükséges hely: a VMS rendszerben lévő kamerák és Szerverek számától függ, de általában legalább 500 MB ajánlott.
  • Szerver Analytics adatbázis – az Analytics pluginek által generált Video Analytics metaadatokat tárolja
    • Általában a /opt/<vendor>/mediaserver/var/data címen található; a Szerver konfigurációs fájlban módosítható.
    • Szükséges hely: attól függ, hogy az Analytics Pluginok használatban vannak-e ezen a kiszolgálón, és hogy a Pluginok mennyi metaadatot küldenek. Általában a videóarchívum tárolási méretének 20%-a ajánlott, ha ezen a kiszolgálón Analytics Plugins használatban van.
  • Szerver naplók
    • A /opt/<vendor>/mediaserver/var/log/
      • A mediaserver segítségével áthelyezhető.conf.
    • A naplók automatikusan felülíródnak egy ciklusban.
    • Szükséges hely: legalább 260 MB ajánlott.
    • MEGJEGYZÉS: Azt vettük észre, hogy bizonyos ARM eszközökön (pl., Raspberry Pi 3), a belső flash memória (ebben az esetben a Micro SD) nem volt elég jó a naplók befogadására. A rendszer akár 4 másodpercre is lefagyott. Az ilyen eszközök esetében javasoltuk a naplók átirányítását a videoarchívummal azonos helyre.
  • Videoarchívum – a kamerák által rögzített videót tárolja
    • Általában a /opt/<vendor>/mediaserver alatt található; a szerver konfigurációs fájlban módosítható.
    • A rendszerpartíciót valószínűleg alapértelmezés szerint korlátozzák a rögzítésben, hacsak nincs legalább 10 GB szabad hely.
    • Belső flashmemória (eMMC) vagy SD-kártya
        • Becsülje meg, hogy hány írási ciklust bír el a memória. A videoarchívum automatikusan felülírja önmagát egy ciklusban, ezért egy írási ciklus időtartamát úgy lehet kiszámítani, hogy a szabad helyet elosztjuk a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájával.
        • Győződjön meg arról, hogy a memória áteresztőképessége elegendő a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájához, 30%-os biztonsági tartalékkal.
    • Belső HDD vagy SSD
          • Győződjön meg arról, hogy a lemez áteresztőképessége elegendő a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájához, 30%-os biztonsági tartalékkal.
    • Külső NAS
          • Győződjön meg arról, hogy a hálózati adapter tényleges sávszélessége elegendő a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájának 2-vel való szorzatához (mivel a kamerák feltehetően ugyanazon a hálózati adapteren keresztül küldik streamjeiket a kiszolgálóra), 30%-os biztonsági tartalékkal.
  • Kiszolgáló alkalmazás frissítőfájljai
    • A frissítéshez a Kiszolgáló alkalmazásnak le kell töltenie az újabb verzióját, és azt ki kell csomagolni.
    • A /tmp/
    • Szükséges hely: a csomagolt Kiszolgáló elosztási fájl teljes mérete szorozva 2,6-tal; ez tartalmazza a tartalékot. Több hely ajánlott, hogy minimalizálja a jövőbeli verziókra való frissítéssel kapcsolatos problémák esélyét.

  • OS ideiglenes fájlok
    • Tipikusan a /tmp/
    • Szükséges hely: legalább 100 MB ajánlott, nem számítva a Server alkalmazás frissítési fájljaihoz szükséges helyet (lásd fent).

A fent felsorolt dolgok többsége a Server konfigurációs fájlban más helyre is beállítható: /opt/<vendor>/mediaserver/etc/mediaserver.conf

Mivel a tipikus SD-kártya tároló nem megbízható és közismerten meghibásodik intenzív írási-olvasási műveletek során, javasoljuk, hogy az operációs rendszert telepítse és a videóarchívumot merevlemez(ek)re tárolja. Ha SSD/merevlemez vagy SD-kártya jöhet szóba a videoarchívum tárolására, mérje fel annak többszörös újraírási műveletekre való képességét a kívánt támogatott kamera tipikus bitrátájának és a támogatott kamerák kívánt számának szorzatával.

Egy Raspberry Pi 3 B+ esetében például:

    • Használjon USB-SATA adaptert és külső merevlemezt az archívumhoz.
    • Telepítse az operációs rendszert (Raspbian) egy külső merevlemezre. A részletekért lásd a Hogyan indítsuk el a Raspberry Pi-t USB-s tömegtárolóról című cikket. Ezt a folyamatot attól függően kell automatizálni, hogy az ARM eszközöket hogyan fogjuk forgalmazni: merevlemezzel vagy merevlemez nélkül:
      • Keménylemezzel – készíts egy előre konfigurált képet a telepített VMS-szel és klónozd a merevlemezekre.
      • Keménylemez nélkül – létre kell hoznod egy sor szkriptet, amely formázza a HDD-t, másolja az OS-t és elvégzi az összes szükséges finomítást. Ez egy meglehetősen összetett és időigényes feladat.

Válassza ki a Linux ízét

Egy adott NVR-hez általában többféle Linux operációs rendszer választható:

  • “Busybox” – csak Linux kernel és a parancssori eszközök alapvető készlete; viszonylag alacsony teljesítményű NVR-eken, például “edge” kamerákon (kamerák, amelyeken a VMS Server fut) használják.
  • Szokásos Debian, vagy annak valamelyik változata, mint például az Ubuntu.
  • A Debian vagy egy másik Linux-disztribúció módosított változata, amelyet általában az eszközgyártó módosít (pl, Raspbian a Raspberry Pi számára).

Általában ajánlott olyan Linux-változatot választani, amely az NVR alapjául szolgáló platform natív választása. Például, ha egy, a Raspberry Pi hardveréhez hasonló NVR-t fejlesztünk (vagy akár pontosan a Raspberry Pi alaplapját használjuk), ajánlott a Raspbian-t választani.

Ha több, különböző csomagkészletekkel rendelkező Linux-disztribúció áll rendelkezésre az eszközhöz, akkor a legkevésbé nehézkes ajánlott. Ha például nem tervezünk GUI-t megjeleníteni az NVR-en, akkor nincs szükség az X Window Systemre.

Győződjön meg arról, hogy a Linux verzió és a hozzá tartozó csomagkészlet megfelel-e a VMS követelményeinek. ARM-alapú eszközök esetén tekintse meg az ARM támogatási irányelvben megadott operációs rendszerre vonatkozó részleteket.

Kiszolgáló alkalmazás telepítése

Az NVR megfelelő Linux operációs rendszerrel történő betöltése után a kiszolgáló alkalmazást kell telepíteni az NVR-re. Alapvetően két lehetőség van:

  1. Debian alapú operációs rendszer esetén: telepítse a hivatalos .deb csomagot a VMS disztribúcióból a dpkg segítségével.
  • Lásd a VMS eszközre történő telepítésének részletes útmutatóját: ARM SBC telepítési útmutató
  • Busybox-alapú OS esetén: a VMS .deb csomagból a szükséges fájlokat a kívánt könyvtárba kell kicsomagolni, és manuálisan gondoskodni kell a következő szempontokról:
    • Hogyan fog elindulni a szerver indításkor, és ha a disztribúció system.d támogatása nem megfelelő?
    • Hová veszi a szerver a telepített Linuxból hiányzó .so könyvtárakat?
    • A szabványos VMS automatikus frissítési rendszer engedélyezve lesz?

    A kevésbé tipikus operációs rendszer beállításoknál az 1. és 2. lehetőség valamilyen kombinációjára lehet szükség.

    Extra funkciók megvalósítása

    Az NVR tipikusan nem csak egy szabványos Linux számítógép a telepített Server alkalmazással – gyakran további funkciókat biztosít a felhasználó számára:

    • Hardveres gombok, LED-ek vagy akár beágyazott kijelzők.
    • Egy webes felület, amely lehetővé teszi az NVR testreszabását a Server alkalmazás saját webes felületén keresztül történő beállításán túl, például
      • hálózati beállítások:
      • rendszeridő és időzóna;
    • Videokimenet (pl., HDMI), amely megjelenít egy GUI-t vagy legalább egy üdvözlő képernyőt az alapvető konfigurációs értékekkel, például az NVR IP-címével;
    • a VMS-szel párhuzamosan futó kiegészítő szoftver, például egy konfigurációs démon vagy egy videóelemző backend.
      • Ha a kiegészítő szoftver jelszóalapú hitelesítéssel rendelkezik a végfelhasználó számára, fontolja meg a jelszószinkronizáció megvalósítását, hogy a VMS-szerver jelszava mindig ugyanaz legyen, mint a kiegészítő szoftver jelszava. Ha a felhasználónak ssh-t kínálnak az NVR eléréséhez, fontolja meg annak jelszavának szinkronizálását is.
    • További finomítások, például a videó (GPU) memória minimalizálása. Például a Raspberry Pi 3 B+ esetében állítsa a GPU memóriáját 16 MB-ra. A részletekért lásd a Raspberry Pi dokumentációját.

    Az ilyen funkciók megvalósításához szükség lehet a Server alkalmazást vezérlő szkriptek írására vagy módosítására, vagy további programok írására C/C++ nyelven.

    Időszinkronizálás

    Győződjön meg arról, hogy az NVR rendelkezik beépített CMOS akkumulátorral, hogy áramkimaradás esetén ne álljon vissza az órája. A Raspberry Pi 3 B+ például nem rendelkezik beépített CMOS akkumulátorral. Ha az eszköz újraindul, az idő visszaáll, és ez hibás archívumírást eredményez. Ennek elkerülésére van néhány lehetőség:

    • Győződjön meg róla, hogy az idő szinkronizálásához csatlakozik az internetre.
    • Ha zárt hálózatról van szó, akkor be kell állítania egy NTP-kiszolgálót.
    • Adjunk hozzá egy valós idejű óra (RTC) modult a kártyához, és konfiguráljuk előzetesen. Lásd: Valós idejű óra hozzáadása a Raspberry Pi-hez.

    Ház keresése/építése az NVR-hez

    Szükséges egy olyan ház keresése vagy tervezése, amely az összes fent említett hardverhez illeszkedik.

    Kiterjedt terhelés/stresszteszt elvégzése

    Azért, hogy minden együtt működjön, meg kell tervezni egy intenzív stressztesztet, amely biztosítja, hogy nincs túlmelegedés vagy az alkatrészek meghibásodása. A tesztnek képesnek kell lennie az összes rendszerkomponens, például a CPU, a memória, a merevlemez(ek), a hálózat és a Wi-Fi (ha szükséges) stb. terhelésére.

    Támogatási politika kialakítása

    Az NVR-t a végfelhasználóknak fogják szállítani, és nekik mindenképpen szükségük lesz valamilyen technikai támogatásra. A VMS-szállító támogató csapata nem tud ilyen szolgáltatásokat nyújtani a végfelhasználóknak, ezért ki kell dolgozni egy ilyen támogatás nyújtására vonatkozó szabályzatot, például egy online ügyfélszolgálatot, egy közösségi fórumot vagy hasonlót.

    Ha az NVR-szállító támogatási csapata biztos abban, hogy az adott probléma nem magának az NVR-nek a sajátosságaihoz kapcsolódik, hanem inkább a VMS-ben jelentkező probléma, akkor a fent említett ARM támogatási politikának megfelelően kérhet támogatást a VMS-szállítótól, majd ennek a támogatási ügynek az eredményét felhasználhatja a végfelhasználó támogatási kérésének kielégítésére.

    Kérdések

    Ha bármilyen kérdése van ezzel a témával kapcsolatban, vagy szeretné megosztani tapasztalatait a közösség többi tagjával vagy csapatunkkal, kérjük, látogasson el és vegyen részt a támogatási közösségünkben, vagy forduljon helyi viszonteladójához.

    Vélemény, hozzászólás?

    Az e-mail-címet nem tesszük közzé.