OpenWrt
Az OpenWrt Linux-rendszermagon alapuló beágyazott operációs rendszer, melyet elsősorban beágyazott készülékeken alkalmaznak a hálózati adatforgalmak útválasztására. A rendszer főbb alkotóelemei között szerepel a Linux-kernel, az util-linux, a uClibc vagy a musl,[4] illetve a BusyBox. Az OpenWrt összes alkotóeleme a legkisebb méret elérésére van optimalizálva, hogy a rendszer elég kicsi legyen az otthoni routerek limitált háttértárába és memóriájába való telepítéshez.
OpenWrt | |
OpenWrt 15.05 („Chaos Calmer”) bejelentkező képernyő | |
Fejlesztő | OpenWrt Project |
Forráskód | Nyílt |
OS-család | Unix-szerű |
Programozási nyelv | Lua |
Legelső kiadás | 2004. január |
Stabil verzió | 15.05 (Chaos Calmer) (2015. szeptember 11.[1]) |
Fejlesztői verzió | 15.05-rc3 Chaos Calmer (2015. július 15.)[2] |
Frissítés | opkg |
Hardver | 50 különböző platform, amik a következő utasításkészleteket használják: AVR32, ARM, CRIS, m68k, MIPS, PowerPC, SPARC, SuperH, Ubicom32, x86, x86-64[3] |
Csomagkezelő | opkg |
Kernel | Monolitikus (Linux) |
Felhasználói felület | CLI, WebUI-k |
Licenc | Szabad szoftver (GPL és egyéb licencek) |
Státusz | aktuális |
Weboldal | https://openwrt.org/ |
Az OpenWrt parancssoros (ash rendszerhéj) vagy webes felületen (LuCI) keresztül konfigurálható. A rendszerhez körülbelül 3500 kiegészítő szoftvercsomag telepíthető az opkg csomagkezelő rendszer segítségével.
Az OpenWrt számos különböző típusú készülékre, így útválasztókra, hálózati átjárókra, okostelefonokra (például Neo FreeRunner), zsebszámítógépekre (például Ben NanoNote) és laptopokra (például One Laptop per Child) is telepíthető. Az OpenWrt-t átlagos, x86 architektúrájú számítógépeken is lehet futtatni. Az OpenWrt kódbázisának számos foltja visszakerült a fővonalas Linux-rendszermagba.
Története
szerkesztésA projekt azért születhetett meg, mivel a Linksys a WRT54G vezeték nélküli útválasztójának firmware-ét GPL licenc alatti szabadon hozzáférhető kód alapján készítette el.[5] A Linksys a licenc feltételei szerint köteles volt ugyanazon licenc alatt közzétenni a módosított verziójának forráskódját,[6][7] aminek köszönhetően a független fejlesztőknek lehetőségük nyílt további származékos verziók elkészítésére. A hardveres támogatás kezdetben a WRT54G sorozatra korlátozódott, azonban azóta számos más chipsetre, gyártóra és eszköztípusra kiterjedt, így például a plug computerekre és az Openmoko mobiltelefonokra.
A fejlesztők ezt a kódot alapként, majd később referenciaként használva elkészítettek egy Linux-disztribúciót, ami számos, a fogyasztói szintű útválasztókra nem jellemző funkciót is kínál. Ennek néhány funkciója eredetileg zárt forráskódú szoftvert igényelt. Az OpenWrt 8.09 bevezetése előtt, a Linux 2.6.25 rendszermag és a b43
kernelmodul használata miatt számos Broadcom-alapú útválasztónál kizárólag a 2.4.x verziójú Linux-kernelhez írt zárt forráskódú wl.o
modullal volt elérhető a Wireless LAN.
Az OpenWrt fejlesztési ágak kódneveiket alkoholos italokról, így például a White Russian, a Kamikaze, a Backfire, az Attitude Adjustment, a Barrier Breaker vagy a Chaos Calmer koktélokról kapták, ezek receptje általában a MOTD fájlban is olvashatóak.
2011 februárjáig a fejlesztési szoftverágat is Kamikazénak hívták, azonban az r25514-es kiadással átnevezték „Attitude Adjustment”-re és azóta mindig a következő stabil kiadás nevét veszi fel.
Kiadások
szerkesztésSzínek: | Régi kiadás | Aktuális kiadás | Jövőbeli kiadás |
---|
Címke | Kódnév | Verzió | Megjelenés | Linux-kernel | C szabvány programkönyvtár | Bináris csomagok | Forráscsomagok | Megjegyzés | |
---|---|---|---|---|---|---|---|---|---|
(alap) | (elérhető) | ||||||||
N/A | pre Buildroot-NG | 0.x | N/A | N/A | uClibc | 474 | ? 310 | ||
r6268 | White Russian | 0.9 | 2006. január | 2.4.30 | uClibc | ? 360 | ? 140 | NVRAM-alapú, nas , wl . Támogatott platform: brcm-2.4 .
| |
r7428 | Kamikaze | 7.06 | 2007. június | 2.6.19 | uClibc | ? 750 | ? 450 | Az opkg -t használja. Támogatott platformok: atheros-2.6 , au1000-2.6 , brcm-2.4 , brcm47xx-2.6 , ixp4xx-2.6 , imagicbox-2.6 , rb532-2.6 és x86-2.6 .
| |
r7832 | Kamikaze | 7.07 | 2007. július | 2.6.21 | uClibc | ? 790 | ? 475 | Új platform: amcc-2.6 .
| |
r8679 | Kamikaze | 7.09 | 2007. szeptember | 2.6.21 | uClibc | ? 630 | ? 500 | ||
r14547 | Kamikaze | 8.09 | 2008. szeptember | 2.6.26 | uClibc | ? 1400 | ? 875 | ||
r16279 | Kamikaze | 8.09.1 | 2009. június | 2.6.26 | uClibc | ? 1400 | ? 875 | ||
r18961 | Kamikaze | 8.09.2 | 2010. január 10.[8] | 2.6.26 | uClibc | ? 1400 | ? 875 | ||
r20742 | Backfire | 10.03 | 2010. április 7.[9] | 2.6.32 | uClibc | ? 2350 | ? 1050 | Támogatott platformok: adm5120_mips , adm5120_mipsel , ar7 , ar71xx , atheros , au1000 , avr32 , brcm-2.4 , brcm47xx , brcm63xx , cobalt , ep80579 , ifxmips , ixp4xx , kirkwood , octeon , orion , ppc40x , ppc44x , rb532 , rdc , x86 és xburst .
| |
r29594 | Backfire | 10.03.1 | 2011. december 21.[10] | 2.6.32 | uClibc | eglibc glibc |
? 2950 | ? 1175 | |
r36088 | Attitude Adjustment | 12.09 | 2013. április 25.[11] | 3.3 | uClibc | eglibc | ? 3450 | ? 1150 | CoDel (hálózati ütemező) visszaportolva a Linux 3.5-ről a 3.3-ba. Új platformok: ramips , bcm2708 (Raspberry Pi) és egyebek.
|
r42625 | Barrier Breaker | 14.07 | 2014. október 2.[12] | 3.10.49[13] | uClibc | musl eglibc |
? | ? | Új platformok: i.MX23 , i.MX6 [14] és mvebu .
|
r46767 | Chaos Calmer | 15.05 | 2015. szeptember 11.[15] | 3.18.20[16] | uClibc | musl glibc[17] |
? | ? | nftables (a 3.12-es Linux-kerneltől érhető el). |
trunk | Designated Driver[18] | development | N/A | ≥4.1.11 | musl[19] | uClibc glibc |
? | ? |
Hardveres inkompatibilitások
szerkesztésAz OpenWrt Attitude Adjustment (12.09) ágának megjelenésével a 16 MB vagy annál kevesebb RAM-mal rendelkező készülékek támogatása megszűnt, mivel ezek könnyen kifuthatnak a memóriából. A bcm47xx
készülékekre a korábbi Backfire (10.03) ajánlott, mivel az ilyen eszközökben felmerülő problémákat az elavult brcm-2.4
Broadcom-célcím támogatásának megszűnése jeleneti.[20][21]
Funkciók
szerkesztésAz OpenWrt a bazárelvet követi és a rengeteg beállítási lehetőségéről ismert. Főbb funkciói között szerepel:
- Írható gyökér fájlrendszer, amely lehetőséget biztosít a felhasználóknak, hogy bármilyen fájlt hozzáadjanak, eltávolítsanak vagy módosítsanak. Ez az OverlayFS segítségével valósul meg,[22] amely a másolás íráskor-módszerrel egyesíti a csak olvasható SquashFS fájlrendszert és az írható JFFS2 fájlrendszert.[23] A JFFS2 támogatja a flash elhasználódás kiegyenlítést.
- Az opkg csomagkezelő, hasonlóan dpkghez, lehetőséget ad a felhasználóknak, hogy szoftvereket telepítsenek vagy távolítsanak el. A csomagtároló körülbelül 3500 csomagot tartalmaz. Ezzel szemben a Linuxon alapuló csak olvasható fájlrendszerű firmware-ek esetében a már telepített szoftvert nem lehet módosítani a teljes firmware-képfájl újrafordítása és újratelepítése nélkül
- UCI (Unified Configuration Interface; egyesített konfigurációs felület) névre keresztelt szkriptek összessége, melyek egyesítik és egyszerűsítik a teljes rendszer konfigurálását[24]
- A teljes hardvermeghajtóprogramok bővíthető konfigurálása, így például a beépített hálózati switchek és azok VLAN-képességei, WNIC-ek, DSL modemek, hardveres gombok, stb.
- A hálózati funkciók beállításai, mint például:
- IPv4 támogatás,
- Natív IPv6-köteg:
- Útválasztás iproute2, Quagga, BIRD és hasonló technológiákon keresztül,
- Mesh hálózat a B.A.T.M.A.N. szoftveren keresztül, a WNIC-illesztőprogramok OLSR és IEEE 802.11s képességei,
- Vezeték nélküli funkciók, például a készülék beállítása hálózati jelismétlőnek, hálózati hozzáférési pontnak, hálózati hídnak, hitelesítő portálnak, illetve ezek kombinációjának (például: ChilliSpot, WiFiDog Captive Portal, stb.),
- Vezeték nélküli biztonság: csomag injektálás (Airpwn, lorcon, stb),
- Állapot-nyilvántartó tűzfal, NAT és porttovábbítás a netfilteren keresztül; ezen felül a PeerGuardian is elérhető,
- NAT-PMP dinamikusan konfigurált porttovábbítási protokoll (UPnP támogatás a sérülékenységei miatt megszűnt).
- Port kopogtatás a knockd és a knock technológiákon keresztül,
- TR–069,[25]
- IPS a Snorton keresztül,
- Aktív sorkezelés (AQM) a Linux-rendszermag hálózati ütemezőjén keresztül, számos elérhető sorkezelővel. A CoDelt visszaportálták a 3.3-as rendszermagba.[26] Ez magában foglalja a forgalomalakítást a sávszélesség felhasználók közötti igazságos elosztásának biztosítására, illetve a Quality of Service-t (QoS) az olyan alkalmazások, mint a Voice over IP, az internetes játékok vagy a médiastreamelés használatára a negatív linktelítettség hatásai nélkül,
- Terheléselosztás több internetszolgáltató között,
- IP kapcsolat alagút (IP tunneling),
- Bővíthető valós idejű hálózatfelügyelet és statisztikák, az olyan eszközök, mint az RRDtool, a Collectd, a Nagios, Munin lite vagy a Zabbix segítségével,
- Domain Name System (DNS) és DHCP Dnsmasq, MaraDNS és hasonló szoftvereken keresztül,
- Dinamikus DNS szolgáltatás rögzített tartománynév használatához olyan internetszolgáltatóknál, melyek nem biztosítanak statikus IP-címet,
- Vezeték nélküli elosztórendszer (WDS),
- WEP, WPA-PSK, WPA2-PSK, WPA-PSK/WPA2-PSK, WPA3-SAE, Mixed-Mode vezeték nélküli titkosítási módok,
- Az OpenWrt bármely olyan hardvert támogat, amit a Linux támogat, így a beépített eszközhöz olyan eszközök csatlakoztathatók például USB-n keresztül, mint:
- Nevesebb hardvertámogatottságú szoftvercsomagok közé tartozik a:
- fájlmegosztás a Sambán keresztül (Windows-kompatibilis), NFS és FTP, nyomtatómegosztás a CUPS (várólistás) vagy a p910nd (nem várólistás) nyomtatószervereken keresztül,
- PulseAudio, Music Player Daemon, audió/videó streaming DLNA/UPnP AV szabványokon, iTunes (DAAP) szerver,
- Asterisk (PBX),
- MQTT a Mosquittón keresztül.
- Kiterjedt Ajax-engedélyezett webes felhasználói felület (LuCI)[27]
- Rendszeres hibajavítások és frissítések, még az olyan eszközökre is, melyeket a gyártójuk már nem támogat.
Webes felhasználói felület
szerkesztésAz OpenWrtnek a 8.09-es verzió előtt minimális webes felhasználói felülete volt. Az OpenWrt 8.09-es és újabb kiadásai már egy alkalmasabb webes felhasználói felületet tartalmaznak.[28] Ez a felület a LuCI-n alapul, ami egy Lua programozási nyelvben írt MVC keretrendszer.[27]
Az X-Wrt projekt egy alternatív webes felületet is biztosít webif2 néven, mely az OpenWrt csomaggyűjteményeiben érhető el.
A Gargoyle Router Management Utility[29] webes felhasználói felület az OpenWrthez, amely nagy hangsúlyt fektet a használhatóságra. A Gargoyle eredetileg az OpenWrt csomagjaként volt elérhető, azonban mivel annak írója módosításokat kezdett végezni az OpenWrt alapértelmezett rendszerfelépítésében, ezért a csomag kikerült a csomagtárolóból és kizárólag különálló firmware-képfájlként érhető el. A Gargoyle széles körben használja a JavaScriptet, hogy a lehető legtöbb munkát átruházza a kliensgépre, és elsősorban a könnyű kezelhetőségre összpontosít, így arra törekednek, hogy elérjék vele a kereskedelmi útválasztók firmware-jének felhasználói élményét.
-
LuCI
-
X-Wrt
-
Gargoyle
Fejlesztés
szerkesztésAz OpenWrt fejlesztői környezetének és fordítóprogramjának együttese, az OpenWrt Buildroot a Buildroot rendszer erősen módosított változatán alapul. Az OpenWrt Buildroot egy halom makefile-ból és foltból áll, melyek egy megfelelő keresztfordító eszközkészlet segítségével automatizálják a teljes Linux alapú OpenWrt-firmware fordítását.[30][31]
A beépített eszközök általában eltérő processzort használnak, mint az OpenWrt-firmware-képfálok fordítására használt gazdagépek, ezért szükséges van egy keresztfordító eszközkészletre. Az ilyen eszközkészletek a gazdagépen futnak, azonban a célzott beágyazott eszköz és annak processzorának utasításkészlet-architektúrájára (ISA) írják a kódot. Példának okáért, ha a gazdagép x86-ot használ, míg a céleszköz MIPS32-t, akkor egy az X86-on futó átlagos eszközkészlet X86 architektúrára generál kódot, míg egy keresztfordító eszközkészlet MIPS32 architektúrára. Az OpenWrt Buildroot automatizálja az egész folyamatot, hogy a legtöbb beépített készülék és gazdagép utasításkészlet-architektúráján működjön.[30][32]
Az OpenWrt Buildroot a következő funkciókat kínálja:[30][32]
- megkönnyíti a szoftver architektúrákon keresztüli portolását,
- a kconfigot (a Linux-rendszermag menuconfigja) használja az összes opció beállításhoz,
- beépített keresztfordító eszközkészlet (gcc, ld, uClibc, stb.) biztosít,
- absztrakciót biztosít az autotoolsnak (automake, autoconf), a cmake-nek és az SConsnak,
- kezeli a szokványos OpenWrt-képfájlok fordítási munkafolyamatát: letöltés, foltozás, konfigurálás, összeállítás és csomagolás,
- számos gyakori javítást biztosít az ismerten nem megfelelően viselkedő csomagokhoz.
Az OpenWrt fejlesztői környezete a rendszerfájlok felépítése mellett egy egyszerűsített platformfüggetlen mechanizmust is biztosít az OpenWrt-szoftvercsomagok fordítására. Ehhez szükség van a szoftvercsomagok forráskódjára a makefile-szerű utasításkészlet felépítéséhez, illetve opcionálisan foltok és hibajavítások vagy helyigény-optimalizációk is mellékelhetőek.[33]
Használata
szerkesztésAz OpenWrt-t, illetve legfőképp a Buildroot fordítórendszert számos helyen alkalmazzák:
- Freifunk és egyéb mesh hálózati közösségek,
- Bufferbloat.net (Cerowrt),
- az IETF HIPnet és HomeNet IPv6 integrációs projektjei is OpenWrt alapúak.
Származékos szoftverek
szerkesztés- CeroWrt, célja, hogy kiegészítse a kísérleti kernelágat és, hogy platformot biztosítson a bufferbloat javítások valós tesztelésére,[34][35]
- Coova chilli, elsősorban a vezeték nélküli csatlakozási pontokra, míg a chillifire forkja a vezeték nélküli a csatlakozási pontok kezelésére összpontosít,
- Gargoyle, az OpenWrt egyik webes felhasználói felülete, amely jelentős hangsúlyt fektet a használhatóságra, amely később különálló disztribúcióvá nőtte ki magát,
- a Flukso Wireless Atheros AR2317 chipsetű szenzorai az OpenWrt foltozott verzióját használják a kommunikációra. A forráskódja és a hardveres tervrajzai a GitHubon is elérhetőek,
- Fon, OpenWrt-alapú kapcsolódási pontként működő vezeték nélküli útválasztók. A forráskódja és eszközkészlete a fonosfera.org weboldalon is elérhetőek,
- Linino, a MIPS-alapú Arduino Yun OpenWrt-alapú disztribúciója,[36]
- Midge Linux, OpenWrt-alapú disztribúció az Infineon Technologies ADM–5120 egylapkás rendszerén alapuló készülékekhez, így például az Edimax BR–6104K-hoz és a BR–6104KP-hez,
- OpenSAN, iSCSI célcímű adattároló hálózat,
- PacketProtector, OpenWrt-alapú disztribúció, ami elsősorban a biztonságra összpontosít, így támogatja az IDS, az IPS és a VPN szabványokat, illetve vírusirtó képességei is vannak. A mellékelt szoftvercsomagjai között van a Snort, a Snort-inline, a FreeRADIUS, az OpenVPN, a DansGuardian és ClamAV. Ezek az eszközök az OpenWrt régi webes felhasználói felületén, az X-Wrt-n vagy más néven a webif^2-n érhetőek el. A projekt fejlesztését 2012. június 7-én leállították,[37]
- Számtalan alulról szerveződő projekt a vezeték nélküli közösségi hálózatokhoz, így a Freifunkhoz, a Libre-Meshhez vagy a qMp-hez,
- libreCMC, a Free Software Foundation támogatását élvező OpenWrt-alapú disztribúció, ami nem tartalmaz semmiféle zárt forráskódú szoftvert vagy bináris fájlt.[38]
Jegyzetek
szerkesztés- ↑ OpenWrt Chaos Calmer 15.05, openwrt.org, 2015-09-12, <https://openwrt.org/>
- ↑ Chaos Calmer 15.05-rc3. OpenWrt Forum , 2015. június 13. (Hozzáférés: 2015. június 13.)
- ↑ Config.in in trunk/target – OpenWrt. dev.openwrt.org , 2013. november 22. [2014. február 22-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. február 13.)
- ↑ Fietkau, Felix. „OpenWrt switches to musl by default”, 2015. június 16.. [2015. június 17-i dátummal az eredetiből archiválva] (Hozzáférés: 2015. november 4.)
- ↑ Linksys WRT54G and the GPL on lkml (7 Jun 2003)
- ↑ The Open Source WRT54G Story By Aaron Weiss (November 08, 2005)
- ↑ Linksys Releases GPLed Code for WRT54G on slashdot (July 2003)
- ↑ Release Notes Kamikaze 8.09.2. openwrt.org , 2010. január 10. (Hozzáférés: 2013. április 26.)
- ↑ Release Notes Backfire 10.03. openwrt.org , 2010. április 7. (Hozzáférés: 2013. április 26.)
- ↑ Release Notes Backfire 10.03.1. openwrt.org , 2011. december 21. (Hozzáférés: 2013. április 26.)
- ↑ Release Notes Attitude Adjustment 12.09. openwrt.org , 2013. április 25. [2013. augusztus 8-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. április 26.)
- ↑ OpenWrt BarrierBreaker 14.07. openwrt.org . [2014. október 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. november 4.)
- ↑ kernel: update to 3.10.49 – OpenWrt. dev.openwrt.org , 2014. július 20. [2015. július 24-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. november 4.)
- ↑ Freescale i.MX support
- ↑ OpenWrt Chaos Calmer 15.05. openwrt.org
- ↑ [OpenWrt-Devel Chaos Calmer 15.05-rc3], 2015. július 16. [2015. szeptember 28-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. november 4.)
- ↑ [OpenWrt-Devel [PATCH 1/2] toolchain: The glorious return of glibc, ver 2.21], 2015. március 11. [2015. június 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. november 4.)
- ↑ Changeset 46846: change banner to Designated Driver release, 2015. szeptember 11. [2015. szeptember 29-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. november 4.)
- ↑ [OpenWrt-Devel OpenWrt switches to musl by default], 2015. június 16. [2015. június 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. november 4.)
- ↑ Release Notes for Attitude Adjustment (12.09 final). openwrt.org , 2013. április 25. [2013. augusztus 8-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. szeptember 26.)
- ↑ OpenWrt: Table of Hardware. openwrt.org . (Hozzáférés: 2013. szeptember 26.)
- ↑ Debating overlayfs, 2011. június 15.
- ↑ OpenWrt partition layout
- ↑ OpenWrt Unified Configuration Interface
- ↑ freecwmp is a CWMP client for OpenWrt
- ↑ Changeset 31756 – OpenWrt. dev.openwrt.org , 2012. május 16. (Hozzáférés: 2014. február 13.)
- ↑ a b LuCI project. [2015. október 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. február 28.)
- ↑ OpenWrt 8.09 release notes. (Hozzáférés: 2009. február 23.)
- ↑ Gargoyle Router Management Utility. (Hozzáférés: 2011. augusztus 21.)
- ↑ a b c OpenWrt Buildroot – About. openwrt.org . (Hozzáférés: 2013. október 21.)
- ↑ OpenWrt Buildroot - Usage and documentation. openwrt.org , 2006. január 8. [2013. október 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. október 21.)
- ↑ a b Tao Jin: OpenWrt Development Guide (PDF). Wireless Networks Lab, CCIS, NEU, 2012. február 13. (Hozzáférés: 2013. október 21.)
- ↑ Creating packages. openwrt.org . (Hozzáférés: 2013. október 21.)
- ↑ CeroWrt Wiki. (Hozzáférés: 2015. szeptember 16.)
- ↑ ANNOUNCE: debloat-testing kernel git tree. LWN.net. (Hozzáférés: 2014. február 13.)
- ↑ GitHub Project
- ↑ "closing time" message from author on PacketProtector forum. [2013. április 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. november 4.)
- ↑ Free Software Foundation adds libreCMC to its list of endorsed distributions. FSF.org , 2014. szeptember 4. (Hozzáférés: 2014. december 21.)
További információk
szerkesztés- Az OpenWrt weboldala (angolul)
- A LuCI projekt weboldala (angolul)