alkalmazásfejlesztés és teljesítmény optimalizálás linux

46
Szegedi Tudományegyetem Informatikai Tanszékcsoport Alkalmazásfejlesztés és teljesítmény- optimalizálás linux alapú routeren Szakdolgozat Készítette: Témavezető: Tóth Szabolcs Szépe Tamás mérnök informatikus BSc szakos hallgató egyetemi tanársegéd Szeged 2012

Upload: others

Post on 12-Nov-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Szegedi Tudományegyetem

Informatikai Tanszékcsoport

Alkalmazásfejlesztés és teljesítmény-

optimalizálás linux alapú routeren

Szakdolgozat

Készítette: Témavezető:

Tóth Szabolcs Szépe Tamás mérnök informatikus BSc

szakos hallgató

egyetemi tanársegéd

Szeged

2012

Page 2: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

2

Feladatkiírás

A feladat leírása, a munka célja:

A kereskedelmi forgalomban kapható routerekhez előtelepített operációs rendszerek

gyakran korlátozzák a hardver képességeit, ezért érdemes más (nyílt forrású) operációs

rendszereket használni, melyek lehetővé teszik a router szélesebb körű

alkalmazhatóságát. Ilyen kibővített funkció például a távlabor, ahol USB porton

keresztül kapcsolódnak a mérést vagy beavatkozást végző egységek a routerhez, ami

biztosítja a kommunikációt, és kezeli a felhasználói kéréseket is. A szakdolgozat célja a

Tp Link 1043nd router hardveres képességeinek felmérése és továbbfejlesztése jól

használható távlabor központ megvalósításához.

A munkavégzés fontosabb lépései:

A routerrel kompatibilis operációs rendszerek (firmware) összehasonlítása.

Routerre USB porton csatlakoztatott külső adattároló eszközök csatolásának

lehetséges módjai, teljesítményük összehasonlítása és optimalizálása.

A routerre implementálható DLNA szerverek összehasonlítása.

A routeren futó webes alkalmazás készítése USB porton csatlakoztatott Edaq530

12-bites adatgyűjtő műszerrel történő kommunikálásra.

A fejlesztéshez rendelkezésre álló fontosabb erőforrások:

Tp link 1043nd router

Edaq530

Page 3: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

3

Tartalmi összefoglaló

A téma megnevezése:

A téma a TP-Link WR1043ND típusú routerre telepíthető nyílt forráskódú operációs

rendszer képességeinek felmérése, és összeköttetés kiépítése az EDAQ530 nevű 12

bites adatgyűjtő interfésszel.

A megadott feladat megfogalmazása:

A routerre feltelepíthető Linux alapú operációs rendszer képességei korlátozottak a

hagyományos személyi számítógépre telepíthető Linuxokhoz képest. A feladat az router

funkcióinak megismerése és bővítése. A feladat része továbbá egy EDAQ530 nevezetű

kisméretű mérőeszköz rácsatlakoztatása, és program írása a kommunikációhoz.

A megoldási mód:

Az alapvető beállítások megismerése után megnézzük, hogy mire lehet felhasználni az

eszközön található USB portot. Ezek után megvizsgáljuk az EDA530 kommunikációját.

Alkalmazott eszközök, módszerek:

A feladat megoldása során felhasználtam az operációs rendszer által támogatott

programot, függvénykönyvtárat.

Elért eredmények:

A kifejlesztett szoftver segítségével lehetőségünk van távolról adatokat mérni (például

hőmérséklet) vagy kísérleteket végezni a router és az EDAQ530 segítségével.

Kulcsszavak:

OpenWrt, FTDI, távoli elérés, mérés

Page 4: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

4

1 Tartalom TARTALMI ÖSSZEFOGLALÓ ...................................................................................................................... 3

2 BEVEZETÉS .................................................................................................................................... 5

2.1 OPENWRT ................................................................................................................................... 5

2.2 ROUTER ...................................................................................................................................... 6

3 EGYÉB OPERÁCIÓS RENDSZEREK ................................................................................................... 7

3.1 GARGOYLE .................................................................................................................................. 8

4 OPENWRT TELEPÍTÉS, ALAP KONFIGURÁCIÓ ................................................................................. 8

4.1 A TP-LINK TL-WR1043ND, OPENWRT FRISSÍTÉS ..................................................................... 9

4.1.1 Flash réteg ............................................................................................................................. 9

4.1.2 Használt fájlrendszerek: ...................................................................................................... 10

4.1.3 TP-Link WR1043ND Flash réteg felépítése: ........................................................................ 11

4.2 USB TÁMOGATÁS ..................................................................................................................... 12

4.2.1 Információk az USB eszközökről. ......................................................................................... 13

4.3 USB TÁRHELY .......................................................................................................................... 14

4.3.1 Fájlrendszer. ........................................................................................................................ 14

4.3.2 Konfigurálás lépései. ........................................................................................................... 16

4.3.3 Fstab .................................................................................................................................... 17

4.3.4 Külső tárhely felcsatolása szkript segítségével. ................................................................... 17

4.4 FÁJLRENDSZEREK TESZTELÉSE.................................................................................................. 20

4.4.1 Fájlműveletet partíción belül. .............................................................................................. 21

4.4.2 Másolás távolról, Samba fájl- és nyomtató kiszolgáló segítségével. .................................... 23

4.5 CSOMAGKEZELŐ KONFIGURÁLÁS. ............................................................................................. 25

5 DLNA ........................................................................................................................................... 26

5.1 USHARE .................................................................................................................................... 26

5.2 SZÜKSÉGES ERŐFORRÁS. ........................................................................................................... 28

6 EDAQ530 ..................................................................................................................................... 28

7 FTDI PROGRAMKÖNYVTÁR (LIBFTDI) .......................................................................................... 31

7.1 FTDI OPENWRT-N .................................................................................................................... 31

8 KOMMUNIKÁCIÓS PROGRAM ..................................................................................................... 32

8.1 PROGRAM FUTTATÁSA TERMINÁLBÓL. ...................................................................................... 39

8.2 PROGRAM ELÉRÉSE BÖNGÉSZŐN KERESZTÜL. ........................................................................... 41

8.2.1 Webszerver konfigurálása és telepítése ............................................................................... 41

9 IRODALOMJEGYZÉK..................................................................................................................... 44

10 NYILATKOZAT .............................................................................................................................. 45

11 KÖSZÖNETNYILVÁNÍTÁS.............................................................................................................. 46

Page 5: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

5

2 Bevezetés

Ezen dolgozatban az OpenWrt Linux alapú beágyazott operációs rendszer lehetőségeit

vizsgálom meg TP-Link TL-WR1043ND routeren. A kereskedelmi forgalomban

kapható útválasztó eszközökben az előtelepített operációs rendszerek gyakran csak az

alap, legszükségesebb funkciókat támogatják így gátolva az eszköz nagyfokú

testreszabhatóságát. Ezért sok esetben a hardver képességeit nem lehet kihasználni teljes

mértékben. Más beágyazott operációs rendszereket használva bővíthetjük a funkciókat.

A nagyobb testreszabhatósággal bíró operációs rendszerek általában Linux alapúak,

mint például az OpenWrt. Mára ez a disztribúció kinőtte magát, és sokan használják így

lehetőség nyílik összetettebb funkciók megvalósítására egyszerű és olcsó módon,

SOHO (Small Office Home Office) eszközökön. A Soho, otthoni vagy kisebb irodai

környezetet jelent. Az első router, amire speciális operációs rendszerek készültek a

Linksys WRT54G típus volt. Az OpenWrt projekt fejlesztése 2004 januárjában

kezdődött a fent említett eszközre.

2.1 OpenWrt

Az OpenWrt egy széleskörűen kiterjeszthető GNU/Linux disztribúció beágyazott

rendszerekre. Ingyenes és nyílt forráskódú, GPL licencű. Az eszközön található gyári

szoftveren a legtöbb esetben nincs külső csomag telepítésére lehetőség. A Linksys

WRT54G, OpenWrt rendszerrel nagy siker lett, így egyre több embert vonzott. Ahogy

nőtt a fejlesztők és felhasználók száma, egyre több eszközre megjelent. Később, ahogy

bővültek a verziók, nőtt a perifériák támogatottsága. A verziók növekedésével nőtt a

problémák száma is. Sok esetben hiányos volt a dokumentáció, és komoly

szakértelemre volt szükség a problémamentes üzemeltetéshez. Ekkoriban más projektek

is indultak, amik a SOHO eszközöket célozták meg, viszont a legtöbb az eredeti

szoftver funkcióit próbálta másolni. Ezzel szemben az OpenWrt-nél számos csomag

elérhető, és egyszerűen lehet új csomagot vagy modult készíteni. A szoftverfejlesztés

során a különböző kiadásokat népszerű koktélokról nevezték el. Az első a WhiteRussian

nevet kapta. 2007 júniusában kijött a második kiadás, a Kamikaze, ezen a néven is több

verzió jelent meg. A jelenleg is használt kiadás a Backfire nevet viseli. Az első stabil

Backfire verzió (10.03) 2010 áprilisán jelent meg. A kezdeti verziókkal nagyon sok

problémát tapasztaltam, eleinte a dokumentáció nagyon hiányos, sok esetben hibás volt.

Számos drivert nem támogatott, és sok programcsomagot újra kellett fordítani a

Page 6: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

6

megfelelő működéshez. Sok tesztelés és várakozás után 2011 decemberében megjelent

az OpenWrt Backfire 10.03.1-es verziója. 2009-2011 körül terjedtek el a MIMO-s ,

IEEE 802.11n-es szabványú vezeték nélküli routerek. Az IEEE 802.11n–es szabvány

nagyobb adatátviteli sebességet biztosított elődjeinél, akár 300-600 Mbit/s sebességet is.

Az interneten található angol vagy akár magyar leírások az OpenWrt ezen korai

verziójára épül, ezért sok hiba található benne. A fejlesztők és a felhasználók a

szoftvert, amit feltelepítettek a routerre az OpenWrt leírása alapján saját maguk

fordították, és még az eredeti bináris fájlok is hibásak voltak, nem mindig működött

rajta a vezeték nélküli hálózat, vagy csak a korábbi szabványok voltak elérhetők. Az

újabb verziókon a hibákat folyamatosan javítják, és a Backfire 10.03.1 final verziójában

minden alap funkció tökéletesen működik.

2.2 Router

Ma már rengeteg háztartás, ahol van internet elérhetőség, rendelkezik egy

forgalomirányító számítógéppel, más néven routerrel. Ennek az eszköznek a fő feladata

a bejövő adatok kezelése. A bejövő vonalon érkező csomagokat a megfelelő címre

továbbítja. [1] Ahogy a technika fejlődött, nagyobb teljesítményű eszközök gyártására

nyílt lehetőség, egyszerű felhasználók számára is elérhető áron. Ha céltudatosan

szeretnék olyan routert vásárolni, amit támogat az OpenWrt, akkor a hivatalos oldalán

találunk egy listát a támogatott eszközökről. [2]

Miért érdemes olyan eszközt vásárolni, amit támogat az OpenWrt?

Részletesen testre szabható, rugalmas, folyamatosan frissülő operációs rendszer.

Pontosan nyomon követhető folyamatok.

Az alapvető funkciókon túl, további különleges funkciók elérhetők, például

különféle USB eszközök kezelése.

Egyszerű fejlesztés.

Érdemes megvizsgálni a felhasználó igényeit is ahhoz, hogy kiválasszuk a számunkra

megfelelő adottságú routert.

Mire lehet szüksége egy felhasználónak.

Nagysebességű és nagy hatótávolságú vezeték nélküli hálózat támogatása. IEEE

802.11n és korábbi szabványok.

Háromantennás MIMO (több kimenetes és több bemenetes) rendszer

Gigabites LAN portok.

Page 7: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

7

USB 2.0 port.

Alacsony ár.

Az általam bemutatott router az alábbi adottságokkal bír. Rendelkezésünkre áll 4 darab

10/100/1000Mbps LAN port és egy darab 10/100/1000Mpbs WAN Port, továbbá 1

darab USB 2.0-s port is. Az előlapon elérhető egy gomb (QSS), aminek a funkciója

gyorsan és hatékonyan beállítani a vezeték nélküli kapcsolatot biztonságos kódolással.

A QSS (Quick Setup Security) gomb OpenWrt rendszeren programozható.

IEEE 802.11n, IEEE 802.11g, IEEE 802.11b vezeték nélküli szabványokat támogat, 3

darab 3dBi-s antennával. Képes akár 300Mbps sávszélességre is. 400 Mhz-es Atheros

AR9132 típusú processzorral, 32MB RAM-mal és 8MB flash tárhellyel rendelkezik. A

router alacsony áron, (15000 Ft-ért) megvásárolható.

3 Egyéb operációs rendszerek

Az OpenWrt mellett számos beágyazott operációs rendszer elérhető.

Név Tp-link 1043ND,

támogatás Frissítés

OpenWrt igen évente 1

Gargoyle igen 3 havonta

X-Wrt nem nem fejlesztik

DD-WRT igen utolsó frissítés 2010.08.09

Tomato nem nem fejlesztik

FreeWrt nem nem fejlesztik

1. táblázat. Routerekre készülő operációs rendszerek

Az 1. táblázatban felsoroltam az ismertebb rendszereket. Sok szoftver ismert ami

OpenWrt alapú viszont már nem fejlesztik. Ezek közül az ismertebbek a FreeWrt,

Tomato és az X-Wrt. Ezek eredetileg a Linksys WRT54GL típusú routerre készültek, az

újabb eszközöket nem támogatják, a fejlesztésük véget ért. A DD-Wrt rendszer

támogatja az általunk kiválasztott routert, viszont fejlesztése akadozik. A Gargoyle

rendszer erősen fejlődik. Folyamatosan fejlesztik, és gyakrabban adnak ki frissítéseket,

mint az OpenWrt csapata. [3]

Page 8: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

8

3.1 Gargoyle

OpenWrt alapú rendszer, nagyon szorosan követi az OpenWrt koncepcióját. A Gargoyle

GPL licencű, viszont a weboldalukon vásárolható olyan router, amin már ez az

operációs rendszer található. Fő szempont a stabilitás és az áttekinthetőség. Az

áttekinthetőséget az Ajax felületű web interfészen keresztül biztosítják. Amikor az

OpenWrt-ből még nem volt stabil verzió, sok probléma volt, a Gargoyle már akkor

biztosított egy nagyon stabil rendszert. Minden alapvető funkció tökéletesen működött

mindig. A felmerülő problémákat gyorsan javítják, viszont a frissítésekre figyelni kell,

mert új verzióknál előfordul néha eddig nem ismert hiba, ami „brickelheti” a routert.

Ezért telepítés előtt érdemes elolvasni a verzióhoz tartozó információkat. A Gargoyle

tartalmaz olyan alapvető funkciókat, amiket az OpenWrt alapértelmezésben nem.

Például:

Jó megjelenésű monitoring rendszer, valós időben lehet nyomon követni a

hálózat sebességét.

Web-Usage, lementi a kliensek által látogatott oldalakat és a keresés során

használt kulcsszavakat.

Nagyon magas szinten konfigurálható QoS

USB storage opció, web interfészen keresztül konfigurálható tárhely

Automatikusan felismeri a rácsatlakoztatott eszközt, és felcsatolja.

USB printer, nyomtatószerver kezelése, 1.5.1 verziótól

TOR anonymizer, 32 MB RAM-nál nagyobb memóriával rendelkező routerek

esetén.

Az OpenWrt csomagjait használja. Minden script, ami azon működik, a Gargoyle

rendszeren is fut. Javaslom a használatát. Egyszerűbben kezelhető, stabilabb, mint az

OpenWrt és gyakoribbak a frissítések. A továbbiakban az alap OpenWrt rendszerrel

foglalkozunk, viszont a részletezett programok és scriptek működnek Gargoyle

rendszeren is. [4]

4 OpenWrt telepítés, alap konfiguráció

A következőkben a router frissítés utáni beállításairól, konfigurálásáról lesz szó. Leírom

az általam tapasztalt hibákat és javasolt beállításokat. Említeni fogok számos olyan

hibaforrást, amikkel a fejlesztés és tesztelés során találkoztam, viszont nem találtam a

dokumentációban vagy fórumban. A gyári szoftver frissítését OpenWrt-re és az alapvető

Page 9: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

9

beállításokat, mint például az internet beállítása, nem részletezem. Számos alapbeállítást

könnyedén el tudunk végezni böngészőn keresztül, és az OpenWrt hivatalos oldalán

bővebben olvashatunk a beállításokról. Ha a http://192.168.1.1 címet beírjuk egy

böngészőbe, akkor megjelenik egy login ablak, majd bejelentkezés után más

routerekhez hasonló módon tudjuk konfigurálni az eszközt. Az alap OpenWrt alatt ez a

felület a LuCI. Ezen interfész segítségével könnyedén lehet beállítani a helyi hálózatot

(LAN), megadhatjuk a WAN beállításokat, vezeték nélküli hálózat konfigurációját stb.

További LuCI modulok telepítésével lehetőségünk nyílik egyéb beállításokra

grafikusan, például USB eszközök és fájlmegosztások beállítása, QoS (Quality of

service). Viszont ezek használatát érdemes kerülni, mert nem frissítik rendszeresen. A

modulokban előfordulhat hiba, ezért érdemes a bonyolultabb beállításokat terminálon

keresztül elvégezni. Így biztosak lehetünk a helyes működésben. Számos eszköz közül

választhatunk, amelyeket az OpenWrt támogat. Ha megbizonyosodtunk az eszköz

pontos paramétereiről, akkor a hivatalos oldalon a letöltéseknél a Backfire mappából

kiválasztjuk a nekünk megfelelő konfigurációt. [2]

4.1 A TP-Link TL-WR1043ND, OpenWrt frissítés

Ha saját képfájlt készítünk, akkor AR71xx/AR240/AR931x platformot állítjuk be

fordításkor. Az előre lefordított stabil képfájlok erre a típusú processzorra az ar71xx

mappában találhatóak. Ebben a mappában már a lefordított bináris fájl található, aminek

a neve pontosan tartalmaz minden szükséges információt, ami a firmware

kiválasztásához szükséges.

openwrt-ar71xx-tl-wr1043nd-v1-squashfs-factory.bin

openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin

szoftvernév – processzortípus - router típus – router verziószáma-frissítés fajtája.

A „factory” végződésű bináris állományt csak a gyári szoftverre telepítsük, bármilyen

másik OpenWrt alapú szoftver frissítésekor a sysupgrade végződésű fájlt használjuk.

4.1.1 Flash réteg

A flashmemória egy nem felejtő (nonvolatile) adattároló technológia. Felépítés alapján

kettő típust különböztetünk meg. Az egyik a NOR, a másik a NAND típusú memória.

Az elnevezés az adatképzés módjából ered. A NOR típus egy fontos jellemzője a gyors

olvasási sebesség. Véletlenszerű memória hozzáféréssel rendelkezik. Ezen típusú

Page 10: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

10

memóriákat gyakran használják beágyazott alkalmazásoknál a gyors olvasási sebesség

miatt és támogatott a XIP (Execute-in-place) funckió. Az XIP funkció lehetővé teszi a

programok direkt futtatását közvetlenül a flash memóriáról, így rendszermemóriát

spórolunk. [5] A rajta tárolt adat közvetlenül futtatható, ezzel szemben a NAND típusú

memórián nem futtatható közvetlenül a program. Általában nagyobb méretűek, mint a

NOR típusú memóriák. Az olvasásuk lassú, viszont az írásuk és a törlésük gyors.

Ha a flash memóriát az Operációs rendszer közvetlenül tudja címezni, akkor „raw

flash”-nek hívjuk. Ezzel szemben, ha az operációs rendszer nem tudja direkt címezni,

„FTL (Flash Translation Layer) flash-nek” nevezzük. A beágyazott rendszerek

általában „raw flash” típust használnak, míg a pendriveok általában FTL flash-t. [6]

A tárhelyet nem a hagyományos módon partícionáljuk (ahogy személyi

számítógépeknél szokás). MTD (Memory Technology Device) eszközként kezeljük, és

különleges fájlrendszereket használunk. MTD alrendszer egy absztrakciós réteg raw-

flash típusú eszközökhöz [7]

4.1.2 Használt fájlrendszerek:

Mini_fo: Virtuális kernel fájlrendszer, ami a csak olvasható fájlrendszereket

„írhatóvá teszi”. Beágyazott rendszerekben, live-CD-ben, sandbox környezetben

szokták használni. [8]

SquashFs: Csak olvasható fájlrendszer, ami lehetőséget ad az egész fájlrendszer

1. ábra Flash réteg felépítés

Page 11: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

11

tömörítésére. Általában zlib, lzo, xz tömörítőket használ. Az OpenWrt Lempel–Ziv–

Markov veszteségmentes tömörítési algoritmust használ. Ennek a fájlrendszernek az

előnye, hogy kicsivel több hely elérhető, és implementálható a FailSafe mód (hiba

esetén visszaállítás). Hátránya, hogy csak olvasható [9]

JFFS2: Flash eszközökre kifejlesztett írható-olvasható tömörített naplózó

fájlrendszer.

4.1.3 TP-Link WR1043ND Flash réteg felépítése:

TP-Link WR-1043ND Flash elrendezés

0. réteg m25p80 Serial Peripheral Interface Bus0.0: m25p64 8192KiB

1. réteg mtd0 u-boot

128KiB mtd5 firmware 8000KiB

mtd4 art

64Kib

2. réteg mtd1 kernel

1280KiB mtd2 rootfs 6720KiB

csatolási

pont / (gyökérkönyvtár)

fájlrendszer mini_fo

3. réteg

mtd3

rootfs_data

5184KiB

Méret(KiB) 128KiB 1536KiB 5184KiB 64KiB

Név u-boot kernel rootfs_data art

csatolási

pont - - /rom /overlay -

fájlrendszer - - SquashFs JFFS2 -

2. táblázat TP-Link WR-1043ND Flash elrendezés

ART: Atheros Radio Test, tartalmazza a MAC (fizikai) címeket és a kalibrációs

adatokat a wifihez.

Csatolási pontok:

/ : Az egész root fájlrendszer, tartalmazza a /rom és /overlay

mappákat is.

/rom: Ez tartalmazza az alap fájlokat és csomagokat, mint például a

Page 12: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

12

busybox, dropbear, iptables, viszont nem tartalmazza a kernelt.

/overlay Írható rész a fájlrendszeren. [6]

A frissítés után a router alapértelmezett IP címe a 192.168.1.1 lesz, és az ehhez tartozó

felhasználónév-jelszó páros a root/(üres mező). Az egyik lehetséges bejelentkezési mód,

ha a böngészőbe beírjuk az IP címet, és ott belépünk az alapértelmezett felhasználónév,

jelszó párossal. Bejelentkezés után ajánlott a saját jelszó megadása. Ezután ha SSH-val

csatlakozunk akkor az előbb beállított jelszót kell megadni.

Első lépésként érdemes feltelepíteni a Nano szövegszerkesztőt. Ezt a kisméretű

programot sokkal egyszerűbb használni, mint az alapértelmezett vi, szövegszerkesztőt.

opkg update && opkg install nano

Ezzel a paranccsal a csomaglista frissítése után a nano a lokális tárhelyre installálódik.

Második lépésként érdemes beállítani az USB támogatást és a külső meghajtókat. A

sikeres konfigurálás után lehetőség van programokat telepíteni a külső tárhelyre is.

4.2 USB támogatás

Az USB támogatással rendelkező routerekre az OpenWrt bináris fájlja már tartalmazza

a szükséges drivereket, így a rendszer már felismeri USB 1.0 vagy akár USB 2.0-s

eszközöket is. Ha a használt verzió nem rendelkezik a megfelelő támogatással, az opkg

csomagkezelő segítségével könnyen telepíthetjük.

Az USB támogatáshoz szükséges kernel modulok

kmod-usb-core Szükséges telepíteni, kernel támogatás USB eszközökre

kmod-usb-ohci Specifikus driver, OHCI usb eszközöket támogatja

kmod-usb-uhci Specifikus driver, UHCI usb eszközöket támogatja

kmod-usb2 USB 2.0 eszköz támogatás, (EHCI)

Az opkg info <csomagnév> parancs segítségével lekérdezhetjük az információkat a

csomagról. Információt kapunk a csomag méretéről, az architektúráról. Jelzi azt is, hogy

telepítetve van-e és az időpontját.

Tp-link 1043ND routeren Openwrt backfire 10.03.1-es firmware alatt

alapértelmezésként a kmod-usb2, kmod-usb-ohci, kmod-usb-core csomagok vannak

telepítve.

USB 1.1 modul telepítése. UHCI driverek esetén:opkg update

opkg install kmod-usb-uhci

Page 13: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

13

insmod usbcore

insmod uhci

Ha a „No such device then your hardware is not an UHCI device.” üzenet jelenik meg,

akkor a hardverünk nem UHCI. Az opkg remove <csomagnév> paranccsal tudunk

eltávolítani egy csomagot. Távolítsuk el és telepítsük az OHCI drivercsomagot [10]

USB 2.0 modul telepítése

Az USB 1.1-es modul telepítése után az alábbi paranccsal [10]

opkg update Csomaglista frissítése

opkg install kmod-usb2 usb2-es kernelmodul telepítése

insmod usbcore az usbcore betöltése a kernelbe

insmod ehci-hcd az ehci-hcd modul betöltése a

kernelbe

4.2.1 Információk az USB eszközökről.

PC-re szánt linux alatt elérhető az lsusb nevezetű program, ami az USB eszközökről

nagyon sok információt nyújt. Ez a program az usbutils programcsomag telepítésével

érhető el.

opkg update && opkg install usbutils

Sikeres telepítés után az lsusb paranccsal tudjuk kilistázni a csatlakoztatott USB

eszközöket.

root@OpenWrt:/# lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0

root hub

Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc.

USB-2.0 4-Port HUB

Bus 001 Device 003: ID 0951:1642 Kingston Technology

Bus 001 Device 004: ID 04b4:6830 Cypress Semiconductor

Corp. CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI

Bus 001 Device 005: ID 046d:092b Logitech, Inc. Labtec

Webcam Plus

Ebben az esetben láthatjuk, hogy a Device 002 egy Genesys Logis típusú USB 2.0-s 4

portos HUB. A Tp-link 1043ND router 1 darab USB porttal rendelkezik. Ez problémát

okozhat abban az esetben, ha több USB eszközt szeretnénk csatlakoztatni. A megoldás

Page 14: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

14

USB elosztó, más néven USB-HUB. A többi eszköz ezen keresztül csatlakozik. Létezik

aktív és passzív HUB. Az USB port 5V-os és 500 mA-es. A passzív HUB azt jelenti,

hogy nem kap külön tápfeszültséget, és az 500mA áramerősség megoszlik a 4 porton.

Ez akkor fontos, ha olyan eszközöket használunk, amelyeknél az USB egyben az

áramforrás is. [11]

A listában még látható egy külső winchester rack, egy Kingston típusú pendrive és egy

webkamera.

A dmesg parancs a kernel ring puffert listázza ki. Megmutatja, hogy mi történik a

rendszerben az eszköz rácsatlakoztatásakor.

dmesg kimenete:

usb 1-1: new high speed USB device using ar71xx-ehci and address 5

usb 1-1: configuration #1 chosen from 1 choice

hub 1-1:1.0: USB hub found

hub 1-1:1.0: 4 ports detected

Amint látjuk, a rácsatlakoztatás után egyből felismerte. A dmesg parancs 4 USB portot

jelez.

4.3 USB tárhely

Ha a routeren megtalálható az alap USB támogatás, akkor nagyon sokféleképpen

használhatjuk fel. Egy lehetőség, ha egy külső merevlemezt vagy pendrive-ot csatolunk

fel, ezzel bővítve az elérhető tárhelyet. Régebbi routereknél, amik nem rendelkeztek

USB porttal, különböző trükkös megoldásokkal próbálták megnövelni az írható tárhely

méretét, ezzel bővítve az eszköz lehetőségeit. Egy lehetőség a belső hálózaton, egy

számítógépen megosztott mappát felcsatolni (mount). Felcsatolás után úgy

hivatkozhatunk rá mintha, a router saját mappája lenne.. Ennek a módszernek a

hátránya, hogy lassú, és a számítógépnek folyamatosan mennie kell. Több helyről is

hozzáférhetnek, módosíthatják az adatokat. A másik lehetőség az SD kártyával történő

bővítés, viszont ehhez elengedhetetlen volt belenyúlni a hardverbe.

4.3.1 Fájlrendszer.

Fontos kérdés, hogy milyen fájlrendszert használunk. A támogatott fájlrendszerek

kilistázhatók az alábbi paranccsal.

opkg update

Page 15: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

15

opkg list "kmod-fs*"

Kimenet a teljesség igénye nélkül.

kmod-fs-cifs - 2.6.32.27-1 - Kernel module for CIFS support

kmod-fs-exportfs - 2.6.32.27-1 - Kernel module for exportfs. Needed for some

other modules.

kmod-fs-ext2 - 2.6.32.27-1 - Kernel module for EXT2 filesystem support

kmod-fs-ext3 - 2.6.32.27-1 - Kernel module for EXT3 filesystem support

Már a lista is sok információt hordoz. Látható, hogy kernel modulról van szó.

Az ext2 egy népszerű linux alapú fájlrendszer. Gyors, nem naplózó fájlrendszer. Ideális

kisméretű pendrive-ok esetén. Kérjük le az információkat a csomagkezelő segítségével

root@OpenWrt:~# opkg info kmod-fs-ext2

Package: kmod-fs-ext2

Version: 2.6.32.27-1

Depends: kernel (= 2.6.32.27-1), kmod-fs-mbcache

Provides:

Status: install hold,user installed

Section: kernel

Architecture: ar71xx

Maintainer: OpenWrt Developers Team <[email protected]>

MD5Sum: 8fcba03200a90c80a056e9fa3cf605a4

Size: 31838

Filename: kmod-fs-ext2_2.6.32.27-1_ar71xx.ipk

Source: package/kernel

Description: Kernel module for EXT2 filesystem support

Installed-Time: 1331642478

Számos információ található a megjelenített listában. Csomagfüggőségek, méret,

architektúra. Sok esetben, más csomagoknál is nagyon hasznos információkat szolgáltat

az opkg info parancs.

A rendszer támogatja a Microsoft által kifejlesztett fájlrendszereket is, viszont ezek

használatát érdemes kerülni, helyette célszerű a Linux alapú fájlrendszerek használata.

Ha tárhelynek szeretnék használni, és megosztani az adatokat hálózaton, vagy

nagyméretű adatokat (videó, zene) szeretnénk tárolni, akkor érdemes ext3 vagy ext4

típusú fájlrendszert használni. Ezek a fájlrendszerek támogatják a naplózást, így

áramszünet esetén, vagy ha a rendszer összeomlik, és elkezdi vizsgálni, akkor gyorsan

Page 16: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

16

végez a vizsgálattal, ezzel szemben az ext2 nem támogat naplózást, nagy méret esetén

sokáig eltarthat a vizsgálat, és a fájlméret limitált (4Gb).

Ahová rendszerfájlokat fogunk telepíteni, oda elég egy kisméretű, naplózás nélküli,

gyors partíció, például ext2. Ha az eszközt csak a routeren használjuk, és csak ritkán

csatlakoztatjuk PC-re, akkor érdemes ext3 vagy ext4 fájlrendszert használni. Gyakran

használt pendrive-ok esetén használhatunk ntfs vagy fat32 partíciót.

Szükséges csomagok:

kmod-usb-storage kernel modul usb tárhely támogatására

kmod-usb-storage-extras további driverek

block-mount szkript csomag fájlrendszerek felcsatlakoztatását,

tárhely ellenőrzését, swap partíciók, azaz virtuális merevlemezek kezelésének

lehetőségét támogatja.

kmod-fs-XXX a fájlrendszer kernel modulja, amit fel akarunk csatolni.

kmod-scsi-generics SCSI eszközök

ntfs-3g NTFS partíciók kezelőséhez szükséges program.

4.3.2 Konfigurálás lépései.

1. lsusb –vel listázzuk ki a már csatlakoztatott eszközöket.

2. opkg install fdisk Segítségével kilistázhatjuk a felismert partíciókat(fdisk –l)

3. Szükséges csomagok feltelepítése. Ha az eszköz rácsatlakoztatása után az lsusb

kimenetében látjuk a csatlakoztatott eszközt, de az fdisk –l hatására nem jelenik

meg, akkor telepítsük a kmod-usb-storage-extras csomagot. Előfordulhat, hogy a

csatlakoztatott eszköz illesztőprogramja nem szerepel az alapértelmezett

eszközök között

4. Használjuk a dmesg parancsot A dmesg parancs kislistáz minden

információt a csatlakoztatás után történik a kernelben, így minden hibát is.

Például néhány fájlrendszernek (pl.: VFAT), szüksége lehet nyelvi támogatásra,

ha a megfelelő csomag nincs feltelepítve, a dmesg jelzi, és az opkg

csomagkezelő segítségével meg tudjuk keresni, majd feltelepíteni.

dmesg kimenet:

FAT: codepage cp437 not found

FAT: IO charset iso8859-1 not found

Ezek után opkg update && opkg list „kmod-nls*” majd megkeressük a

megfelelő kódlapot, és feltelepítjük.

Page 17: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

17

5. fstab konfigurálás vagy mountolás manuálisan szkript segítségével.

4.3.3 Fstab

Az fstab definiálja a statikus fájlrendszerek és a swap partíciók kezelését. A rendszer

indulásakor, bootoláskor hajtódik végre.

Telepítése opkg update && opkg install block-mount parancssal történik. Ahhoz hogy

rendszerinduláskor elinduljon, először aktiválni kell. Ezt könnyen meg tudjuk tenni a

/etc/init.d/fstab enable segítségével, vagy az /etc/init.d/fstab start –tal el tudjuk indítani.

A beállítást a /etc/fstab fájl módosításával tudjuk megtenni nano szövegszerkesztő

segítségével.

Egyszerű konfigurációs fájl példa:

config 'global' 'automount'

option 'from_fstab' '1'

option 'anon_mount' '1'

config 'global' 'autoswap'

option 'from_fstab' '1'

option 'anon_swap' '0'

config 'mount'

option 'target' '/home'

option 'device' '/dev/sda1'

option 'fstype' 'ext4'

option 'options' 'rw,sync'

option 'enabled' '0'

option 'enabled_fsck' '0'

A target opcióban megjelölt mappát minden esetben létre kell hozni. Ide fogja

becsatolni a /dev/sda1-es eszközt, ami ext4 típusú.

Hatékonyabb megoldás, ha egy szkript segítségével állítjuk be.

4.3.4 Külső tárhely felcsatolása szkript segítségével.

Hozzunk létre egy fájlt a /etc/init.d helyen

nano /etc/init.d/usb_mount

Másoljuk bele az alábbi kódot

1. #!/bin/sh /etc/rc.common

Page 18: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

18

2. START=98

3. STOP=98

4. start()

5. busybox mount -t ext2 /dev/sdb1 /mnt/winya_sys -o

rw,noatime

6. busybox mount -t ext4 /dev/sdb3 /mnt/winya_share -o

rw,noatime

7. ntfs-3g -o rw,noatime /dev/sda4 /mnt/ winya_ntfs

8. echo 1 > /sys/class/leds/tl-

wr1043nd\:green\:qss/brightness

9. echo "merevlemez felcsatolva.”

10. busybox logger "Harddrive mounted."

11.

12. stop()

13. busybox sync

14. busybox umount /dev/sdb3

15. echo 0 > /sys/class/leds/tl-

wr1043nd\:green\:qss/brightness

16. busybox sync

17. busybox umount /dev/sdb1

18. echo "merevlemez leválasztva.”

19. busybox logger "Harddrive unmounted."

20.

A 2. sorban a START=98-cal definiált érték, (0-99 közötti érték) a rendszer indulásakor

a prioritási sorrendet jelenti. A 4. sorban indul a start függvény. Ha beírjuk a

/etc/init.d/usb_mount start parancsot, akkor ez a függvény hívódik meg. Sok helyen a

busybox kulcsszót is kiírtuk a használandó kulcsszó elé. Erre akkor van szükség, ha

távolról akarunk futtatni olyan programot vagy szkriptet, ami SSH-n keresztül

rácsatlakozik a routerre, és távolról akar parancsokat végrehajtani. Ha ez hiányzik,

akkor a távoli program ismeretlen parancs hibaüzenetet dob. A BusyBox kisebb Linux

alapú programok gyűjteménye beágyazott rendszerekre. Ha beírjuk a terminálba a

busybox parancsot, kilistázza a parancsokat, amiket tartalmaz.

Az 5. 6. sorban csatlakoztatjuk a fájlrendszereket a mount parancs segítségével.

Page 19: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

19

Részletes leírást az OpenWrt operációs rendszeren a mount --help, paranccsal, vagy a

mount manuáljában találunk (man mount, PC-re szánt linux alatt).

Listázzuk ki a partíciós táblát!

root@OpenWrt:~# fdisk -l

Disk /dev/sdb: 164.6 GB, 164696555520 bytes

255 heads, 63 sectors/track, 20023 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x881445bb

Device Boot Start End Blocks Id System

/dev/sdb1 1 65 522081 83 Linux

/dev/sdb2 66 70 40162+ 82 Linux swap / Solaris

/dev/sdb3 71 20023 160272472+ 83 Linux

Ebből tisztán látjuk a csatlakoztatott eszköz méretét és még számos információt. Amire

szükségünk van, a Device Boot és a System oszlop. A system a fájlrendszer típusát jelzi

a Device Boot a helyét. A Device Bootban szereplő paramétert kell majd megadni a

mountnak paraméterként. A mount parancsban tehát a ’t’ paraméter után adjuk meg a

fájlrendszer típusát, utána a Device Node-ot, azaz az előbb említett fdiskből kiolvasott

partíció helyet. Ezt követően egy létező mappa, ahová becsatoljuk az eszközt. Végül ’o’

paraméter után az opciókat. Példuál ro/rw (read-only/read-write) csak írható vagy írható

olvasható. Az ntfs partíciókat az ntfs-3g programmal lehet felcsatolni. Paraméterezése

hasonló a mounthoz. A 8. és 15. sorban a QSS ledet kapcsoljuk be, ha 1-et küldünk el a

fájlnak, 0 esetén kikapcsol. A 10. és 19. sorban a logger parancssal a

rendszerüzenetként lehet jelölni, hogy mi történt. Nagyon hasznos funkció hibakeresés

során.

Mentés után a fájlt futtathatóvá kell tennünk a chmod +x /etc/init.d/usb_mount

paranccsal.

Ha mindent sikeresen végrehajtottunk, akkor /etc/init.d/usb_mount start paranccsal

csatoljuk fel a meghajtókat és a stoppal állítjuk le.. A felcsatolás után, a mount parancs

paraméter nélkül kiírja a felcsatolt eszközöket.

root@OpenWrt:~# mount

rootfs on / type rootfs (rw)

mini_fo:/overlay on / type mini_fo (rw,relatime)

debugfs on /sys/kernel/debug type debugfs (rw,relatime)

Page 20: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

20

/dev/sda2 on /mnt/usb_sys type ext2 (rw,sync,relatime,errors=continue)

/dev/sda1 on /mnt/usb_share type ext3 (rw,noatime,errors=continue,data=writeback)

/dev/sdb1 on /mnt/winya_sys type ext2 (rw,noatime,errors=continue)

/dev/sdb3 on /mnt/winya_share type ext4 (rw,noatime,barrier=1,data=ordered)

A végén látjuk az általunk felcsatolt meghajtókat. Látható, hogy melyik eszközt hova

csatoltolódott fel, és a hozzá tartozó beállítások. A dmesg parancs jelzi a felcsatolás

során lezajlott eseményeket és a hibákat. Felcsatolás boololáskor. Ha azt szeretnénk,

hogy rendszerinduláskor lefusson a szkript, akkor egy szimbolikus linket kell

készítenünk a /etc/rc.d mappába, és a fájl nevének az alábbi módon kell kinéznie.

S**fájlnév, ahol a ** 0-99-ig egy szám, ez a szám a szkript elején megadott

START=98-as szám. Induláskor a programok prioritási sorrendjét jelzi. A

rendszerfeladatok általában alacsony számok, míg az általunk definiált feladatoknak

adjunk nagy számot.

4.4 Fájlrendszerek tesztelése

A fájlrendszer kiválasztásában nagy segítséget nyújthat ez a fejezet. A következőkben

több szempontból vizsgáljuk a külső merevlemez tulajdonságait. Különféle másolások

során figyeltem a processzorhasználatot, és a másoláshoz szükséges időt. Minden típusú

mérést két féle „fájl típussal” végeztem el. A mindennapokban többször előfordul, hogy

egy nagyobb méretű vagy sok kis méretű fájlt kell mozgatnom, például egy filmet vagy

fotóalbumot. Kiválasztottam tehát egy fotóalbumot és egy azonos méretű filmet. A

fotóalbum 381 fájlból áll, és 733 MB a teljes album mérete. Elsőként azt vizsgáltam,

hogy a külső merevlemezen, egy partíción belül, mennyi idő alatt tudom átmásolni a

fájlokat. Írtam egy scriptet, ami a következő lépéseket hajtja végre.

1. String formátumban lekérem az aktuális dátumot a rendszertől.

2. Törlöm az összes állományt onnan, ahova szeretnék másolni.

3. String formátumban lekérem az aktuális időt ismét.

4. A 3. pontban lekért dátumból kivonom az 1. pontban lekért dátumot. Így

pontosan tudom, a fájlok törléséhez szükséges időt.

5. A kezdeti dátum lekérése egy változóba, normál formában.

6. Kezdeti dátum string formában.

7. Másolás

8. Másolás után közvetlenül a dátum lekérése string formátumban.

Page 21: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

21

9. 8. pontban feltöltött változó és a 6. pontban feltöltött változó különbsége. Így

megkaptuk pontosan a másoláshoz szükséges időt

10. Kiíratás fájlba.

11. Tíz másodperc alvás.

12. Ismétlés 10-szer.

A script futásával párhuzamosan a cpusage parancs kimenetét folyamatosan lementem.

A cpusage a processzorhasználatot kéri le, alapértelmezésként másodpercenként, pontos

dátummal. A mérés bejezése után a dátumokból pontosan tudom, hogy egy méréshez

melyik processzorhasználat tartozik. Az összes tesztet ugyanazon a merevlemezen

végeztem, ami egy Maxtor IDE csatlakozású HDD és USB 2.0-val rendelkező külső

mobil rack segítségével csatlakozik a routerhez.

4.4.1 Fájlműveletet partíción belül.

Ext2 fájlrendszeren, lemezen belül, egy nagyméretű fájl másolása. A CPU használat

mérésekor, ha egy másolás 80 másodpercig tart, akkor 80-szor nézi meg a processzor

kihasználtságot, másodpercenként egyszer. Ezért kiszámoltam a processzorhasználat

átlagát és a szórását minden méréshez. Ezen kívül az összes másolásra is kiszámoltam

az átlagot és a szórást.

Mérés 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Átlag Szórás

Másolás

[s] 82 83 83 83 84 84 83 85 83 84 83,4 0,84

Törlés

[s] 0 0 0 0 0 0 0 0 0 0 0 0

CPU,

átlag

[%]

29,58 29,67 29,27 29,29 28,23 28,42 29,39 29,90 28,35 29,47 29,16 0,59

3. táblázat Ext2 fájlrendszeren, lemezen belül, egy nagyméretű fájl másolása.

Mérés 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Átlag Szórás

Másolás

[s] 83 83 80 81 84 90 86 81 89 82 83,9 3,41

Törlés

[s] 2 0 0 1 0 0 0 0 1 0 0,4 0,69

CPU,

átlag

[%]

28,98 28,26 28,49 29,08 28,28 29,56 29,13 29,37 28,71 28,23 28,81 0,48

4. táblázat Ext2 fájlrendszeren, lemezen belül, több kisméretű fájl másolása.

Page 22: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

22

Mérés 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Átlag Szórás

Másolás

[s] 69 69 69 69 69 69 69 70 69 68 69 0,471

Törlés

[s] 2 0 0 1 0 0 0 0 0 1 0,4 0,699

CPU,

átlag

[%]

44,31 43,90 43,44 43,09 42,99 43,88 43,52 42,96 42,22 43,26 43,35 0,59

5. táblázat Ext3 fájlrendszeren, lemezen belül, egy nagy fájl másolása.

Mérés 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Átlag Szórás

Másolás

[s] 75 75 75 76 75 75 77 76 75 75 75,4 0,699

Törlés

[s] 3 1 1 0 0 1 0 0 0 0 0,6 0,966

CPU,

átlag

[%]

40,15 41,46 40,67 40,51 39,83 40,88 40,35 40,74 39,88 41,33 40,57 0,55

6. táblázat Ext3 fájlrendszeren, lemezen belül, több kis fájl másolása

Mérés 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Átlag Szórás

Másolás

[s] 65 66 66 66 67 65 66 66 66 68 66,1 0,88

Törlés

[s] 0 1 0 0 0 0 1 1 1 0 0,4 0,52

CPU,

átlag

[%]

40,35 40,14 40,51 40,80 40,47 40,68 40,22 39,79 40,60 40,14 40,37 0,30

7. táblázat Ext4 fájlrendszeren, lemezen belül, egy nagy fájl másolása

Mérés 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Átlag Szórás

Másolás

[s] 78 73 72 72 72 72 71 72 72 71 72,50 2,01

Törlés

[s] 0 0 0 0 0 1 0 1 0 1 0,30 0,48

CPU,

átlag

[%]

35,26 37,00 37,85 38,07 37,48 38,28 38,23 37,93 37,95 37,26 37,5307 0,89757

8. táblázat Ext4 fájlrendszeren, lemezen belül, több kis fájl másolása

Page 23: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

23

A táblázatokból látható, hogy az ext2 fájlrendszeren a másolás alacsonyabb

processzorhasználattal jár a többi vizsgált fájlrendszerhez képest, viszont a másolás több

időt vesz igénybe. A fájltörlés elhanyagolhatóan kis érték a fájlrendszereken, ha ekkora

méretű fájlt törlünk. Az ext4 fájlrendszeren az egy darab nagyméretű fájl másolása is, és

több kisebb méretű fájl másolása esetén is gyorsabb. A naplózó ext3 és ext4

fájlrendszerek esetén több kisméretű fájl, például fotóalbum másolása több időt vesz

igénybe.

4.4.2 Másolás távolról, Samba fájl- és nyomtató kiszolgáló segítségével.

A routerre csatlakoztatott merevlemezen ext3 partíciót használtam, és vezetékkel

csatlakoztam. A távoli gépen Windows 7 Ultimate Service Pack 1, operációs rendszer

volt, és a másolás Total Commander 7.56-os verziójával történt.

A hálózati adatforgalmat a Bandwidth Monitor 3.4-es trial verziójával figyeltem.

Másodpercenként figyeltem az adatforgalmat és a router a processzorhasználatát.

2. ábra Samba3, nagy méretű fálj olvasás

Processzorhasználat átlag: 20,04 %, szórás: 4,84

0

2

4

6

8

10

12

0

5

10

15

20

25

30

35

16

:27

:38

16

:27

:42

16

:27

:46

16

:27

:50

16

:27

:54

16

:27

:58

16

:28

:02

16

:28

:06

16

:28

:10

16

:28

:14

16

:28

:18

16

:28

:22

16

:28

:27

16

:28

:31

16

:28

:35

16

:28

:39

16

:28

:43

16

:28

:47

16

:28

:51

16

:28

:55

16

:28

:59

16

:29

:03

16

:29

:07

Ad

at [

MB

]

Cp

u [

%]

Samba3, nagy méretű fálj olvasás

CPU [%] Letöltött adat [MB]

Page 24: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

24

3. ábra Samba3, nagy méretű fálj írása

Processzorhasználat átlag: 47,12 %, szórás: 4,8

4. ábra Samba3, több kisméretű fájl olvasása

Processzorhasználat átlag: 17,07 %, szórás: 4,5

0

2

4

6

8

10

12

0

10

20

30

40

50

60

70

16

:42

:23

16

:42

:27

16

:42

:31

16

:42

:35

16

:42

:39

16

:42

:43

16

:42

:47

16

:42

:51

16

:42

:56

16

:43

:00

16

:43

:04

16

:43

:08

16

:43

:12

16

:43

:16

16

:43

:20

16

:43

:24

16

:43

:28

16

:43

:32

16

:43

:36

16

:43

:40

16

:43

:44

16

:43

:48

Ad

at [

MB

]

CP

U [

%]

Samba3, nagy méretű fálj írása

CPU [%] Feltöltött adat [MB]

024681012

05

1015202530

16

:32

:02

16

:32

:07

16

:32

:11

16

:32

:15

16

:32

:19

16

:32

:23

16

:32

:27

16

:32

:31

16

:32

:35

16

:32

:39

16

:32

:43

16

:32

:47

16

:32

:51

16

:32

:55

16

:32

:59

16

:33

:03

16

:33

:07

16

:33

:11

16

:33

:15

16

:33

:20

16

:33

:24

16

:33

:28

16

:33

:32

16

:33

:36

Ad

at [

MB

]

CP

U [

%]

Samba3, több kis méretű fájl olvasása

CPU [%] Letöltött adat [MB]

Page 25: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

25

5. ábra Samba3, több kis méretű fájl írása

Processzorhasználat átlag: 47,13 %, szórás: 4,5

A grafikonokon látható, hogy a processzorhasználat az adatátvitel indulásakor felugrik.

Adatok írása esetén a processzorhasználat magasabb, 47% körül mozog, míg olvasáskor

20% körüli érték. Az adatküldés minden esetben folyamatos 10 MB körüli érték.

A mérésekhez felhasznált adatokat Microsoft Excel táblázatban dolgoztam fel, és a

DVD mellékletben megtalálhatóak.

A processzorhasználat mérésére a cpusage nevű programot használtam fel, amit az opkg

csomagkezelő segítségével egyszerűen feltelepíthetünk. A cpusage meghatározott

időközönként (alapértelmezésként 1 másodperc) kiírja a processzor használtsági

állapotát és a hozzá tartozó dátumot. A program nem folyamatonként listázza ki az

értékeket, hanem a teljes processzorhasználatot mutatja, ezért a mérések során

törekedtem arra, hogy más művelet ne zavarja meg a mérést. Így a táblázatokban és

grafikonokban feltűntetett adatok az adott mérésnek a teljes használatát mutatják.

A cpusage által processzorhasználata elhanyagolhatóan kicsi. Ha elindítom, és a

kimenetét egy fájlba irányítom, majd közben figyelem a top program segítségével a

processzorhasználatát, 0%-ot jelez minden esetben, valamint 1% és 3% közötti

memóriaigényt.

4.5 Csomagkezelő konfigurálás.

A külső tárhely felcsatolása után, következő lépés az opkg csomagkezelő

konfigurációja. A konfiguráció után a csomagokat a külső tárhelyre is telepíthetjük. A

konfiguráció a /etc/opkg.conf fájlban található, ebbe kell beszúrni egy sort, például nano

0

2

4

6

8

10

12

010203040506070

16

:38

:25

16

:38

:29

16

:38

:33

16

:38

:37

16

:38

:41

16

:38

:45

16

:38

:49

16

:38

:53

16

:38

:57

16

:39

:01

16

:39

:05

16

:39

:09

16

:39

:13

16

:39

:17

16

:39

:22

16

:39

:26

16

:39

:30

16

:39

:34

16

:39

:38

16

:39

:42

16

:39

:46

16

:39

:50

Ad

at [

MB

]

CP

U [

%]

Samba3, több kis méretű fájl írása

CPU [%] Feltöltött adat [MB]

Page 26: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

26

szövegszerkesztővel.

A dest ram /tmp sort követően egy új sorba írjuk az alábbi sort.

dest hdd /mnt/usb_sys

dest kulcsszó a forrást jelöli, a hdd név, ahogy hivatkozunk rá, és a /mnt/usb_sys a

mappa helye, ahova telepítünk. Adott esetben a felcsatolt mappa.

Mentés után az opkg --dest hdd install mc paranccsal a midnight commandert telepítjük

a külső tárhelyre. Sikeres telepítés után mégsem tudjuk futtatni. Ha megnézzük a

telepítés helyét, láthatjuk, hogy létrejött egy a gyökér könyvtárral megegyező mappa

struktúra. (etc, bin, usr). Az itt található fájlokról kell szimbolikus linket létrehozni a

megfelelő helyre, majd ezt követően tudjuk futtatni bárhonnan. Viszont ez bonyolult és

hosszadalmas módszer. Az OpenWrt oldalán található scriptet fejlesztette tovább egy

felhasználó, és közzétette a hivatalos fórumon. [12]

Hozzunk létre egy futtatható scriptet opkg-link néven a /bin mappában! Ezek után az

opkg-link mount /mnt/usb_sys parancsot kiadva automatikusan létrehozza a szimbolikus

linkeket. A scriptet paraméter nélkül futtatva kiírja a használati utasítást. [13]

5 DLNA

A DLNA (Digital Living Network Alliance) szabvány segítségével különböző

multimédiás eszközöket kapcsolhatunk össze. A szabványt támogató eszközök között

multimédiás anyagokat továbbíthatunk. Például egy modern TV, ami támogatja a

DLNA szabványt, és rendelkezik beépített DLNA lejátszóval. Képesek vagyunk

rácsatlakozni egy szerverre távolról multimédiás anyagokat (filmet, zenét) lejátszani.

[14] OpenWrt-re feltelepíthetünk DLNA szervert, ami ellátja ezt a funkciót. Képesek

vagyunk például a routerről, egy modern tv segítségével filmet nézni vagy zenét

hallgatni.

OpenWrt-n két program elérhető, ami DLNA szerverként funkcionál. A MiniDLNA és

az uShare. A tesztelések során a miniDLNA sokszor lefagyott, és nagyon lefoglalta a

rendszer erőforrásait, nem jó választás DLNA szervernek. Az uShare programnál nem

tapasztaltam hasonló hibákat, a program megfelelően működött.

5.1 UShare

A program telepítése és konfigurálása nagyon egyszerű. A programot érdemes külső

tárhelyre telepíteni.

Page 27: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

27

1. opkg update

2. opkg --dest hdd install ushare

3. opkg-link mount /mnt/winya-sys/

A csomagok frissítése (1) után telepítjük a külső tárhelyre (2), majd ezek után az opkg-

link szkript segítségével a program fájljait a megfelelő helyre linkeljük(3??).

1. config 'ushare'

2. option 'username' 'nobody'

3. option 'servername' 'OpenWrt'

4. option 'interface' 'br-lan'

5. option 'options' ''

6. option 'content_directories' '/mnt/hdd/Share'

7. option 'disable_telnet' '1'

8. option 'disable_webif' '1'

9. option 'enabled' '1'

Az 1. sorban kezdődik az ushare konfigurációja. A 6. sorban adjuk meg azt a mappát,

ahol a multimédiás anyagok szerepelnek. A 9. sorban engedélyezzük a program futását.

Érdemes egy saját indító szkriptet írni. A multimédiás programoknak nagy az

erőforrásigényük, gyorsan megtelik a memória. Viszont amennyiben létrehozunk egy

virtuális memóriaterületet, a rácsatlakoztatott merevlemezt felhasználva, akkor

problémamentes lesz a lejátszás. A következő sorokat tartalmazó futtatható szkriptet

hozzuk létre a /bin mappában.

nano /bin/ushare-starter

1. #!/bin/sh /etc/rc.common

2. start()

3. busybox mkswap /dev/sda3

4. busybox swapon /dev/sda3

5. /mnt/winya/etc/init.d/ushare start

6.

7. stop()

8. busybox swapoff /dev/sda3

9. /mnt/winya/etc/init.d/ushare stop

10.

A virtuális memória bekapcsolásához a külső merevlemezen szükséges egy swap

Page 28: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

28

partíció. A 3. sorban hozzuk létre a virtuális memóriát, és a 4. sorban kapcsoljuk be.

Ezek után az ushare-starter start parancsot végrehajtva elindul a DLNA szerver. Ekkor a

routerre csatlakozott eszközök a belső hálózaton látják, ha rendelkeznek DLNA

lejátszóval. A Microsoft Windows Media Player a 10. verziójától támogatja a DLNA

szabványt. Az XBMC egy ingyenes és nagyon igényes DLNA lejátszó, amit akár önálló

operációs rendszerként is lehet használni. [15]

5.2 Szükséges erőforrás.

Érdemes figyelni az erőforrásra. A TP-LINK WR1043ND router képes full HD (1080p)

videó továbbítására vezeték nélküli hálózaton szaggatás nélkül, viszont több sok

erőforrást igénylő folyamat esetén az eszköz lefagy, és újraindul. Sok erőforrást igénylő

szolgáltatások például:

Adatmozgatás a routerre kötött külső merevlemezen.

Olvasás vagy írás a megosztott tárhelyről.

DLNA szerver (adatfolyam továbbítás)

Webszerver (speciális funckiók esetén, amik például fájlműveleteket hajtanak

végre)

Folyamatos töltés internetről, például torrentezés.

Tehát a sok erőforrást igénylő folyamatok közül érdemes mindig egyet futtatni, akkor

biztosak lehetünk benne, hogy a router hibátlanul ellátja az alap funkcióit. Előfordulhat,

hogy elfogy az erőforrás. Ekkor a rendszer újraindul, és betölti az alap rendszert, majd

pár perc múlva minden program tökéletesen újra működik (azok, amelyek induláskor

elindulnak).

6 EDAQ530

Az EDAQ 530 egy kisméretű (4cm*7.8cm*2cm), 12 bites adatgyűjtő interfész. 5V

feszültségről üzemel, így nem szükséges külső táplálás, az USB port biztosítja a

megfelelő tápfeszültséget. Az USB kommunikáció FTDI (Future Technology Devices

6. ábra EDAQ530 bemeneti csatlakozó

Page 29: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

29

International) chipen keresztül történik. Az eszköz csatlakoztatása után 5-10 másodperc

telik el, amíg az eszköz készenléti állapotba lép. Három csatornán van lehetőségem

feszültséget mérni. A 6. ábrán látható a szabványos csatoló.[16]

Látható, hogy van egy tápláló csatlakozás, aminek a névleges értéke 5V, valós értéke

3.3 V körüli értéknek felel meg. A 12 bites eszköz felbontása:

5V/212

=5 V/4096=1.22 mV

Az eszközzel feszültséget tudunk mérni, viszont így csak a feszültség alapú szenzorokat

tudnánk használni, ezért a készítők beleépítettek egy funkciót, aminek a segítségével

közvetetten lehet ellenállást mérni. Egy parancs elküldésével be lehet kapcsolni egy

felhúzó ellenállást, aminek ismert a pontos értéke, így ki lehet számolni az ellenállást a

mért feszültségből.

7. ábra Feszültségosztó kapcsolási rajza

(1)

(2)

Page 30: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

30

Ahogy a képen is látható, ha számítógépre csatlakoztatjuk az eszközünkrt, akkor

létrejön egy virtuális soros kommunikációs port (ha a megfelelő driverek telepítve

vannak). Linux alatt /dev/ttyUSB0 néven. Ezt a féle kommunikációt a Putty program

segítségével tudjuk kipróbálni.

8. ábra FTDI kommunikációs port az eszközkezelőben

A megfelelő paraméterek beállítása után képesek vagyunk kommunikálni az eszközzel.

Ez a féle kommunikáció nagyon hasznos a fejlesztés kezdeti szakaszában. Például, ha

elküldjük a @I parancsot, és utána többször elküldünk valamilyen karaktert, akkor a

következő üzenetet kapjuk vissza.

@IEDAQ530C (c) 30/06/2010 www.noise.physx.u-szeged.hu

Ez a parancs az eszközbe épített, azonosításra szolgáló karaktersorozatot adja vissza. A

parancs elküldése után minden elküldött karakter hatására kapunk egy darab karaktert.

Tehát ahhoz, hogy visszakapjuk a teljes karaktersorozatot, a @I után el kell még

küldenünk 53 karaktert.

Page 31: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

31

7 FTDI programkönyvtár (libFTDI)

Közvetlen tesztelésre hasznos ez a kommunikáció, viszont ha programot alapozunk

erre, számos hibába ütközünk. Problémák lehetnek a késleltetéssel, ezért a programot

tele kell tűzdelni milliszekundumos várakozásokkal. Ha újra csatlakoztatjuk az eszközt,

vagy ha több eszközt használunk, nem tudjuk pontosan, hogy melyik soros

kommunikációs porton van az általunk használt eszköz

Az FTDI többféle programkönyvtárat biztosít számunkra. Mi a libFTDI-t használjuk.

[13] Minden FTDI chip rendelkezik egy sorozatszámmal. Az FTDI programkönyvtár

biztosít számunkra olyan funkciót, amellyel a rácsatlakoztatott eszközöket

végigpásztázva, lekéri az sorozatszámokat. Képesek vagyunk adott sorozatszámú

eszközzel kommunikálni anélkül, hogy mindig meg kellene nézni a kommunikációs

port számát.

7.1 FTDI OpenWrt-n

Már tudjuk, hogy Windowson, Linuxon, MacOS X-en vagy BSD variánsokon

hatékonyan tudunk kommunikálni libFTDI vagy közvetlen soros portos kommunikáció

segítségével. Ha a routeren kérjük le az FTDI-jal kapcsolatos parancsokat.

opkg update && opkg list |grep ftdi

kmod-usb-serial-ftdi - 2.6.32.27-1 - Kernel support for FTDI USB-to-Serial

converters

libftdi - 0.18-1 - libFTDI - FTDI USB driver with bitbang mode

Két csomag látható. Az egyik egy kernel modul, a másik a libftdi könyvtár, amire

szükségünk van. A libFTDI csomagnak további csomagokat is igényel. A libusb, és a

libconfuse csomagot is használja.

OpenWrt-n libusb és confuse néven szerepelnek, ezeket a csomagokat kell telepíteni.

Az FTDI támogatás OpenWrt 10.03.1-rc4 és a Gargoyle 1.3.14 verzióknál, valamint a

korábbi verziók előtt nem elérhető. A modul elérhető, viszont telepíteni nem lehet. Ezt a

hibát a későbbi verzióknál kijavították. Csatlakoztassuk a műszerünket a routerre

rákötött USB-hubra, majd vizsgáljuk meg az lsusb kimenetét.

Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd

FT232 USB-Serial (UART) IC

Látható, hogy az FTDI chipet a rendszer felismeri, mint USB eszköz. Ha az FTDI

kernel modult is sikeresen feltelepítettünk, és csatlakoztattuk az eszközt, a dmesg

Page 32: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

32

parancs utolsó sorában látható, hogy az FTDI eszközt felismerte és csatolta a

/dev/ttyUSB0 helyre.

usb 1-1.1: FTDI USB Serial Device converter now attached to ttyUSB0

8 Kommunikációs program

Az általam készített program, stabil kommunikációt biztosít a mérőműszerrel. A C++

nyelven írt program, az FTDI library segítségével tartja fenn a kapcsolatot. A program

kezelése felhasználóbarát módon történik. A vezérlés a Linuxban megszokott

parancssori argumentumokon keresztül történik. Az EDAQ530-on található 8051-es

mikrovezérlő programja, a dokumentációban elérhető. A mikrovezérlő a következőképp

működik. Minden parancs a ’@’ jellel kezdődik. Ezt követően egy karakter a parancs,

majd még egy karakter a paraméter, ha szükséges. Minden elküldött karaktert azonnal

visszaküldd az eszköz. A visszaküldött karakterekkel „jelez” a program, hogy a

karaktereket sikeresen megkapta. A következő parancsok találhatók a mikrovezérlőn.

Parancs Visszaküldött adat [bájt] Leírás

I 51 Identifikációs karaktersorozat

M 6 Egy mérést hajt végre, 3 csatornán

S folyamatos folyamatos mérés, kilépés Escape

f - mintavételezési frekvencia

Q 3 paraméterek lekérdezése

P - felhúzó ellenállások

E - Infra led ki/bekapcsolása

9. táblázat EDAQ530 parancs táblázata

A fenti táblázatban a visszaküldött adat nem tartalmazza a visszaküldött parancsokat.

[17] A @M parancs egy mérést hajt végre mindhárom csatornán, majd eltolva az

adatokat, bájtonként küldi vissza. A hat bájt páronként tartalmazza a hasznos

információt. Ahhoz, hogy bájtonként lehessen küldeni, páronként az első bájt jobbra

van shiftelve 8-cal. A kiolvasás után vissza kell állítani, „összerakni” a bájtokat. A @S

parancs hatására az eszköz a beállított mintavételezési frekvencián folyamatosan közli

az adatokat, és az Escape (27) karakter hatására áll le. Fontos parancs még a @P. Ezzel

tudjuk bekapcsolni a felhúzó és lehúzó ellenállásokat. Egy paraméter is szükséges a

parancshoz, ami egy bájt. Ennek a négy legkisebb helyértékű bitje fontos csak. Ezzel

Page 33: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

33

állítjuk be a csatornákon a felhúzó ellenállásokat és a lehúzó ellenállást. Négy értéket

lehet beállítani.

PULLUP1 = c & 1;

PULLUP2 = c & 2;

PULLUP3 = c & 4;

PULLDN3 = c & 8;

A PULLUP1, PULLUP2, PULLUP3 paraméterek, rendre az A, B, C csatornák. ’c’ az

elküldött bájt. A változók értéke a ’c’ paraméter és a látható szám értéke, bitszintű „és”

kapcsolatuk eredménye. A felhúzó ellenállásoknál a 0 érték jelenti a bekapcsolt

állapotot, és a lehúzó ellenállásnál az 1 érték jelenti a bekapcsolt állapotot. Ezen

információk alapján felírhatjuk a következő táblázatot.

Csatorna.

Lehúzó ell. be. Decimális Bináris

A 6 00000110

AB 4 00000100

ABC 0 00000000

B 5 00000101

BC 1 00000001

C 3 00000011

AC 2 00000010

0 7 00000111

Lehúzó ell. Ki.

A 14 00001110

AB 12 00001100

ABC 8 00001000

B 13 00001101

BC 9 00001001

C 11 00001011

AC 10 00001010

0 15 00001111

A táblázatban az első nyolc érték a lehúzó ellenállás kikapcsolt állapota mellett, az 1.

oszlopban látható csatornákon kapcsolja be a felhúzó ellenállásokat. A programban a

10. táblázat Felhúzó ellenállás beállítás

Page 34: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

34

decimális értékeket használom fel az ellenállások beállítására.

A következő oldalon található folyamatdiagram (9. ábra) mutatja a program működését.

A program vezérlése parancssori argumentumok segítségével történik. Az

argumentumokat a getopt.h függvénykönyvtár segítségével valósítottam meg, így a

Linuxban megszokott módon tudom kezelni. Például a help menüt a -h vagy --help

paraméterrel tudjuk kiíratni. A getopt_long a két gondolatjeles hosszú formájú

parancsot jelöli. A getopt_short és getop_long-hoz tartozó beállításokat egy

struktúrában tárolom. A program indulása után azonnal végigmegyek a paraméterlistán,

majd minden funkció egy switch ciklusban beállítja a hozzá tartozó globális változót.

Így a program futása során pontosan tudom, hogy a programnak milyen beállításokkal

kell működnie. Fontos, hogy a mérés akkor kezdődik el, ha paraméterként megadjuk a -

O, vagy --one-measure kapcsolót. Ha a paraméter szerepel az argumentumok között,

engedélyezzük, hogy csatlakozzon az eszközre. Bonyolultabb beállításoknál lehetőség

van kiíratni a beállított paraméterlistát, és a csatlakoztatott FTDI eszközről lekérhetők

az információkat (ehhez engedélyezni kell a mérést). Ezek után engedélyezem eszközön

a beállított felhúzó/lehúzó ellenállásokat, majd indul egy ciklus, ami addig megy, amíg

a paraméterben megadott mérésszámot el nem éri. A mérés pillanatában mindig lekérem

az időt és dátumot. Ha fájlba írom a mért adatokat, akkor a pontos dátumot is kiírom,

így pontosan tudom a mérések időpontját. A beállítások között elérhető olyan funkció,

amely közvetlenül ellenállást vagy hőmérsékletet ad vissza. A hőmérsékletet

thermisztorral mérem. A thermisztor egy ellenállás alapú szenzor.

Page 35: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

35

9. ábra Folyamatábra

Page 36: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

36

Ellenállás méréséhez először a megfelelő csatornán be kell kapcsolnom a felhúzó

ellenállást, majd ebből ki tudom számolni az ellenállást. Ha hőmérsékletet is akarok

mérni thermisztorral az ellenállásból tudok számolni hőmérsékletet. A temp-ch-X

parancs ahol X a megfelelő csatornát jelöli (a,b,c) automatikusan elvégzi az összes

beállítást, és a megadott csatornán hőmérsékletet ad vissza Celsiusban. A mérés és az

értékek számolása után, ha beállítottuk a fájlba írást, akkor kiírom az eredményeket

fájlba és a kimenetre is. A mérések közötti időt milliszekundumban adhatjuk meg. Ha

lefutott a ciklus, azaz elértük a megadott mérésszámot akkor a program megfelelően

lezárja a kapcsolatokat és kilép. A program működését már értjük viszont még nem

értjük a kommunikációt.

A program tervezése során törekedtem arra, hogy a program mobilis legyen,

fejleszthető. OpenWrt rendszeren elérhető a GNU Standard C++ library, így

lehetőségünk van objektum orientált programok írására. A libFtdi segítségével

hatékonyan tudunk kommunikálni az FTDI chipekkel. Tehát már csak egy olyan

osztályra van szükségünk, ami ezt a függvénykönyvtárat felhasználva hatékonyan

kommunikál az EDAQ530-al, vagy más EDAQ eszközzel például EDAQ24. A

következő UML diagramon pontosan végigkövetjük a program szerkezetét.

Page 37: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

37

10. ábra Osztálydiagram

A diagram jobb oldalán látható az Ftdi csomag, ami jelen esetben névteret jelöl, és ez

tartalmazza a List és a Context osztályokat. Ezek a hivatalos libFtdi C++ osztályok. A

diagramban csak a fontosabb funkciókat jelöltem. A libFtdi, linux alatt C nyelvet

használ, viszont a hivatalos oldalukon található egy header fájl, ami C++ nyelven

íródott, így ezt felhasználva objektum orientáltan is tudunk kommunikálni. Az

Edaq530.cpp a fő osztályom, ebben található a main függvény, a parancssori

argumentumok kezelése és a fájlkiíratást megvalósító CSVout osztály, ami CSV

(comma-separated value) formátumban írja ki az adatokat pontos vesszővel elválasztva.

A stabil kommunikációt az edaqConnect.hpp fájlban definiált Edaq osztály garantálja.

Példányosításkor a default konstruktor beállítja a szükséges paramétereket a

csatlakozáshoz (Vendor id, Product Id, sávszélesség). A csatlakoztatott FTDI chipek

adatait egy listában tárolom, és a find_all függvény segítségével tudom lekérdezni. A

Connect függvény sorra beállítja a kommunikációhoz szükséges beállításokat. Ezek a

Page 38: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

38

beállítások a Context osztályban találhatóak. A feltöltött listán keresztül tudjuk

meghívni, ha végiglépkedünk egy iterátor segítségével, Jelen esetben a lista egyelemű.

Az EDAQ530 által használt beállítások az alábbi táblázatban láthatóak.

Sávszélesség 230400

Adat bit 8

Stop bit 2

Paritás None

Flow Control None

Hibajelzésre ERR_CODE, enum típus definiálok, amiben pontosan leírom a felmerülő

hibákat. A ConnectInfo az FTDI chipről szolgáltat adatokat. Ha az eszközre akarunk

írni, vagy az eszközről akarunk olvasni, akkor egy itárátor segítségével végiglépkedve a

listán, minden elemre meghívhatjuk a write vagy read metódust. A read és a write

metódusnak kettő paramétere van. Az első egy előjeltelen karaktertömb, és egy integer.

A read esetében a karaktertömbbe olvasunk pontosan annyi bájtnyi adatot amekkora

számot megadtunk a második paraméterben. Write esetében a karaktertömböt küldjük

el, és a második paraméter ennek a mérete. Ha az EDAQ530-on található parancsokat

külön-külön metódusban akarjuk kezelni, akkor ez a féle írás/olvasásmód bonyolult és

számos hiba forrása lehet. Ezért írtam egy saját read és write metódust ahol a fent

említett módszert használom. Így csak egy helyen megyek végig a listán. Ezzel

leegyszerűsödött a parancs küldés és fogadás szintaxisa. A korábbiakban említettük,

hogy az EDAQ530 a következő koncepción alapul. Minden elküldött karaktert azonnal

visszaolvasok. Viszont az FTDI által biztosított függvényekkel tetszőleges méretet

tudok írni és olvasni. A SendCommand metódus biztosítja, hogy a paraméterben

megadott karaktertömb egyesével elküldi, majd visszaolvassa, az adatokat Van olyan

eset, amikor egy bájt adatot kapunk. A GetByte metódus kiolvas pontos egy bájt adatot

és egy előjeltelen karakterként adja vissza. Most már a bármelyik parancsot egyszerűen

implementálhatjuk a GetByte és a SendCommand függvények segítségével.

Én a @M, és a @P parancsokat implementáltam. A @M-el egy mérést tudok

végrehajtani, a @P parancs pedig a felhúzó ellenállásokat állítja be a már részletezett

módon. A Sensor osztály GetResistance metódusa számolja az ellenállást. A Thermistor

11. táblázat Kommunikációs beállítások

Page 39: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

39

osztály GetTemperature metódusa számolja a hőmérsékletet.[8] A hőmérsékletet az

alábbi képlettel tudjuk kiszámolni.

(

)

Ahol. B=3977 K és R25=104Ω

8.1 Program futtatása terminálból.

Ha lefordítottuk az OpenWrt SDK segítségével majd feltelepítettük a csomagot, akkor

már elérhető a /bin könyvtárban így bárhonnan futtatható a routeren belül. [18] A

program neve Edaq530. Először futtassuk le az Edaq530 --help parancsot, ezzel kiírja a

részletes használati utasítást. Írassuk ki az FTDI chip tulajdonságait. Ehhez az Edaq -P -

O parancsot szükséges végrehajtani. Ahol a -P írja ki a beállított paramétereket, és ha

csatlakoztunk az eszközre, akkor az FTDI információkat is kilistázza.

FTDI információk:

------------------------------------------------------

FTDI (0x41b160)

Vendor: FTDI

Description: FT232R USB UART

Serial: A1004dqp

Product: 24577

Baudrate: 230400

------------------------------------------------------

Látható többek között a chipen található sorozatszám, a chip leírása és a beállított sáv

szélesség. Csatlakoztassunk a középső csatornára egy termisztort és mérjük meg az

ellenállását szobahőmérsékleten.

root@OpenWrt:~# Edaq530 --count-res-ch-b -O

-----------------------------------------------

Measure 0.

Original value(A,B,C) : 14,1948,44

2012-5-1 15:38:45

(3)

Page 40: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

40

Channel A:14

Channel B:9068.9

Channel C:44

A méréseket egy vonal választja el egymástól a könnyebb olvashatóság érdekében és az

ezt közvető sor jelzi a mérés sorszámát. Ez akkor hasznos, ha több mérést végzünk. Az

original value, a mért adatokat mutatja. Ebben az esetben az ellenállást a B értékből

számoljuk. A --count-res-ch-b hatására automatikusan bekapcsolódik a felhúzó

ellenállás a ’B’ csatornán, és a mért eredmény kiszámolja az eredményt. A Channel B

jelzi a B csatorna értékét, ami 9068.9 Ω. Ebben az esetben az ’A’ és ’C’ csatornán lévő

jeleket nem kell figyelembe venni. Mérjük meg a hőmérsékletet.

root@OpenWrt:~# Edaq530 --temp-ch-b -O

-----------------------------------------------

Measure 0.

Original value(A,B,C) : 21,1948,49

2012-5-1 15:35:30

Channel A:21

Channel B:27.2008

Channel C:49

Az Original value középső értéke megegyezik az előző mérésnél mért adattal, viszont

most a Channel B értéke 27,2008 °C

Tudjuk, hogy az általunk használt termisztor ellenállása 25 °C-on 10000Ω. Ebben az

esetben a két mérésből megállapíthatjuk, hogy a 27°C-on az termisztor ellenállása

9068Ω

Most végezzünk el egy hosszabb mérést. A szenzort tegyük be a hűtőszekrénybe és

végezzünk több mérést, ezzel vizsgálva a lehűlési görbét. 400 db mérést végzünk, és a

mérések közötti időtartam 1 másodperc. Az eredményt kiíratjuk egy CSV fájlba majd

ábrázoljuk a megoldást.

A parancs, amit le kell futtatni: Edaq530 --time 400 -m 1000 --temp-ch-b -o output.csv -

O

Page 41: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

41

11. ábra Szenzor lehűlési görbe

A grafikonon Y tengelyén a hőmérséklet látható, az X tengelyen pedig az pontos dátum

és idő.

8.2 Program elérése böngészőn keresztül.

Lehetőségünk van a routerre webszervert telepíteni. További modulok telepítésével CGI

szkriptek futtatására lesz lehetőségünk, így böngészőn keresztül tudunk különböző

programokat meghívni, például az EDAQ530-al történő kommunikációra szolgáló

programot. Először ehhez telepítenünk kell a webszervert.

8.2.1 Webszerver konfigurálása és telepítése

A programot érdemes a már beállított külső tárhelyre telepíteni. Most a lighttpd

webszervert fogjuk használni. Előnye, hogy kisméretű és a modulokat külön-külön lehet

engedélyezni, ezzel memóriát megtakarítva. A modulokat az opkg segítségével tudjuk

kilistázni. Most csak az alapbeállításokat tekintjük át, a program részletesen van

dokumentálva az OpenWrt hivatalos oldalán és számos más helyen jól használható

dokumentáció elérhető.

0

5

10

15

20

25

30

20

12

-4-3

0 1

5:2

:47

20

12

-4-3

0 1

5:2

:60

20

12

-4-3

0 1

5:3

:14

20

12

-4-3

0 1

5:3

:27

20

12

-4-3

0 1

5:3

:40

20

12

-4-3

0 1

5:3

:54

20

12

-4-3

0 1

5:4

:7

20

12

-4-3

0 1

5:4

:20

20

12

-4-3

0 1

5:4

:34

20

12

-4-3

0 1

5:4

:47

20

12

-4-3

0 1

5:4

:60

20

12

-4-3

0 1

5:5

:14

20

12

-4-3

0 1

5:5

:27

20

12

-4-3

0 1

5:5

:40

20

12

-4-3

0 1

5:5

:53

20

12

-4-3

0 1

5:6

:7

20

12

-4-3

0 1

5:6

:20

20

12

-4-3

0 1

5:6

:33

20

12

-4-3

0 1

5:6

:47

20

12

-4-3

0 1

5:6

:60

20

12

-4-3

0 1

5:7

:13

20

12

-4-3

0 1

5:7

:27

20

12

-4-3

0 1

5:7

:40

20

12

-4-3

0 1

5:7

:53

20

12

-4-3

0 1

5:8

:7

20

12

-4-3

0 1

5:8

:20

20

12

-4-3

0 1

5:8

:33

20

12

-4-3

0 1

5:8

:47

20

12

-4-3

0 1

5:8

:60

20

12

-4-3

0 1

5:9

:13

20

12

-4-3

0 1

5:9

:27

rsé

kle

t [°

C]

Idő

Lehülési görbe

Page 42: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

42

Először is telepítsük fel a lighttpd-t és a lighttpd-mod-cgi-t ami a webszerver CGI

modulja. Majd ezek után az opkg-link szkriptet lefuttatni, ami bemásolja a program

fájljait a megfelelő helyre. Mindezek után tudjuk szerkeszteni a lighttpd konfigurációs

fájlját a /etc/lighttpd/lighttpd.conf helyen.

opkg --dest hdd install lighttpd-mod-cgi lighttpd

opkg-link mount /mnt/winya_sys/

nano /etc/lighttpd/lighttpd.conf

Az alap konfigurációs fájl, nagyon jól dokumentált és tartalmaz egy példabeállítást. Az

alábbi kóddal kell kiegészíteni a konfigurációs fájlt.

1. server.modules = ( "mod_cgi" )

2. server.document-root = "/mnt/winya_sys/wwwroot"

3. server.port = 8080

4. cgi.assign = ( )

5. $HTTP["url"] =~ "^/cgi-bin"

6. cgi.assign = ( "" => "/bin/sh", ".sh" => "/bin/sh" )

Az 1. sor engedélyezi a CGI modult, a 2. sor beállítja a honlapok

dokumentumkönyvtárát. Ennek létező mappának kell lennie. A harmadik sor port

beállítások. és a 4.5.6. sor a CGI szkriptet konfigurálja. A szkriptek a wwwroot mappán

belül egy cgi-bin mappában kell, hogy elhelyezkedjenek. és ebben az esetben sh

szkripteket vár. Lehetőség van még perl szkriptek futtatására is. A következő paranccsal

tudjuk elindítani a webszervert. [19]

/etc/init.d/lighttpd start

12. ábra Programfuttatás böngészőből

Page 43: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

43

A 12. ábrán látható a program futtatása, a C csatornán. A C csatornán az ellenállás

értéke 10207Ω. Ez azért van, mert egy ellenállás alapú termisztor volt rákötve aminek

az ellenállása 25°C-on 10000Ω A CGI szkript egy egyszerű statikus html kódot

tartalmaz. Amikor megnyitom az oldalt, lefut a szkript. Az oldal akkor jelenik meg,

amikor lefutott a program. A böngésző frissítésével újra lefut a program. Ennek egy

hátránya, hogy a program minden frissítéskor rácsatlakozik az EDAQ530-ra majd a

mérés után lezárja a kapcsolatot, ez sok időt vesz igénybe. Publikáció keretétében

jelenleg fejlesztése folyik egy olyan programnak, ami az eddig részletezett dolgokat

felhasználva hatékony és gyors kommunikációt biztosít.

13. ábra Az eszközök működés közben

Page 44: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

44

9 Irodalomjegyzék

[1] A. S. Tanenbaum, Számítógép Hálózatok, ISBN 963-545-384-1, 2004.

[2] „OpenWrt,” 3 május 2012. [Online]. Available: http://wiki.openwrt.org/toh/start.

[3] „List of wireless router firmware projects,” [Online]. Available:

http://en.wikipedia.org/wiki/List_of_wireless_router_firmware_projects.

[4] „Gargoyle Router Management Utility,” [Online]. Available: http://www.gargoyle-

router.com/.

[5] A. TAL, „NAND vs. NOR flash technology,” 2 január 2002. [Online]. Available:

http://www2.electronicproducts.com/NAND_vs_NOR_flash_technology-article-

FEBMSY1-feb2002-html.aspx.

[6] „OpenWrt, Flash Layout,” [Online]. Available:

http://wiki.openwrt.org/doc/techref/flash.layout.

[7] C. Simmonds, „Linux flash file systems,” 2009. [Online]. Available:

http://www.embedded-linux.co.uk/downloads/ESC-5.4-flash_filesystems-

slides.pdf.

[8] „Mini_fo,” [Online]. Available: http://www.denx.de/wiki/Know/MiniFOHome.

[9] SquashFs. [Online]. Available: http://lxr.free-

electrons.com/source/Documentation/filesystems/squashfs.txt.

[10] „OpenWrt, USB basic support,” [Online]. Available:

http://wiki.openwrt.org/doc/howto/usb.essentials.

[11] „USB 2.0 specifikáció,” [Online]. Available: http://www.usb.org/developers/docs/.

[12] „Opkg-Link script,” [Online]. Available:

https://forum.openwrt.org/viewtopic.php?id=24620.

[13] „OpenWrt OPKG Package Manager,” 08 04 2012. [Online]. Available:

http://wiki.openwrt.org/doc/techref/opkg#installation.destination.

[14] „DLNA,” [Online]. Available: http://ww.dlna.org.

[15] „OpenWrt, uShare configuration,” [Online]. Available:

http://wiki.openrt.org/doc/uci/ushare.

[16] K. Kopasz, P. Makra és Z. Gingl, „UsingEDAQ530,” 2010. [Online]. Available:

http://www.noise.physx.u-szeged.hu/Instruments/Edaq530/EDAQ530-

hardware.pdf.

[17] K. Kopasz, P. Makra és Z. Gingl, „Thumb-size USB-to-sensor interface supports

efficient experimentation in multilevel education of physics and other disciplines,”

[Online]. Available: http://www.noise.physx.u-

szeged.hu/EduDev/EDAQ530/Default.aspx.

[18] „Writing and Compiling A Simple Program For OpenWrt,” [Online]. Available:

http://www.gargoyle-router.com/wiki/doku.php?id=openwrt_coding.

[19] „Openwrt, Lighttpd,” [Online]. Available:

http://wiki.openwrt.org/doc/howto/http.lighttpd.

[20] „libFTDI, FTDI USB driver,” [Online]. Available:

http://www.intra2net.com/en/developer/libftdi/index.php.

Page 45: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

45

10 Nyilatkozat

Alulírott, Tóth Szabolcs mérnök informatikus BSc szakos hallgató, kijelentem,

hogy a dolgozatomat a Szegedi Tudományegyetem, Informatikai Tanszékcsoport

Műszaki Informatika Tanszékén készítettem, mérnök informatikus BSc diploma

megszerzése érdekében.

Kijelentem, hogy a dolgozatot más szakon korábban nem védtem meg, saját

munkám eredménye, és csak a hivatkozott forrásokat (szakirodalom, eszközök, stb.)

használtam fel.

Tudomásul veszem, hogy szakdolgozatomat a Szegedi Tudományegyetem

Informatikai Tanszékcsoport könyvtárában, a helyben olvasható könyvek között

helyezik el.

2012. május 18.

_________________

Tóth Szabolcs

Page 46: Alkalmazásfejlesztés és teljesítmény optimalizálás linux

Alkalmazásfejlesztés és teljesítmény-optimalizálás linux alapú routeren

46

11 Köszönetnyilvánítás

Köszönettel tartozom témavezetőmnek, Szépe Tamásnak, amiért szívesen fogadott az

egyedi szakdolgozat témával, illetve a dolgozat írása közben nyújtott hasznos

tanácsokért.

Köszönettel tartozom Dr Gingl Zoltán tanszékvezetőnek, akihez a fejlesztések során

felmerülő problémákkal bármikor fordulhattam.

Köszönöm Vig Jácint barátomnak, aki segített a korai próbálkozásokban.

Végül, de nem utolsó sorban köszönöm szerető családomnak, Tóth Ottónak, Tóthné

Darázs Tündének és Tóth Rékának hogy szeretetükkel és bizalmukkal mindvégig

támogattak.