Extra software installeren op uw thuisrouter (DD-WRT)
Heb je ooit extra functionaliteit zoals Email, Bit-torrent of zelfs MySQL direct op je router willen hebben? Nou, misschien kan je dat nu wel. How-To Geek duikt in hoe-om Opkg-software te installeren op DD-WRT.
Beeld door Jean Spector en Aviad Raviv
Als je dat nog niet hebt gedaan, zorg dan dat je eerdere artikelen in de serie bekijkt:
- Verander uw Home Router met behulp van DD-WRT in een Super Powered Router
- Hoe advertenties met Pixelserv op DD-WRT verwijderen
Ervan uitgaande dat u bekend bent met die onderwerpen, blijf lezen. Houd er rekening mee dat deze handleiding iets technischer is en dat beginners voorzichtig moeten zijn bij het modden van hun router.
beproevingen
Ik heb onlangs een nieuwe Buffalo WZR-HP-AG300H gekocht, die wordt geleverd met een re-branded versie van DD-WRT. Omdat deze router een USB-poort heeft, heb ik onmiddellijk een HD aangesloten en heb ik geprobeerd de wiki-handleiding 'Optware, de juiste manier' te gebruiken. Helaas heb ik snel ontdekt dat de router die ik heb, gebaseerd is op Atheros en het script van die wikipagina niet ondersteunt. Dus ik ben begonnen met graven (wat ik altijd doe) en kwam verschillende handleidingen tegen (1, 2, 3 en 4) die wilden uitleggen hoe Opkg handmatig kon werken. Hoewel hun bijdrage (onder andere op internet) aan deze gids van onschatbare waarde was, zijn sommige instructies (IMHO) simpelweg niet rechttoe rechtaan genoeg. U bijvoorbeeld de vissen van de "lib" -bestanden geven, maar u niet leren hoe u deze uit de bron moet vissen. Ook moet ik gebruik maken van een Linux geformatteerde HD of tenminste een partitie van een (die eigenlijk niet eens werkt op de firmware waarmee ik getest heb). Dat is de reden waarom ik de behoefte voelde om de onderstaande beknopte, eenvoudig te volgen en reproduceerbare procedure te maken om de OpenWRT Opkg-pakketbeheerder te laten werken aan dergelijke routers.
Update: de mogelijkheid voor montagepartities is opnieuw geïntroduceerd in de re-branded-versie van de alpha build uit 17798.
Wat is Opkg?
Opkg is een pakketbeheerder zoals apt / aptitude en yum. Het fungeert als een vervanging voor de Ipkg-pakketbeheerder en kan worden gebruikt om software te installeren zoals: de Transmission BitTorrent-daemon, de ssmtp-e-mailverzender en Knockd een daemon die scripts uitvoert na een gespecificeerde poort-triggerende sequentie, om er een paar te noemen. Van de OpenWRT-site:
Het hulpprogramma opkg (een ipkg-vork) is een lichtgewicht pakketbeheerder die wordt gebruikt om OpenWrt-pakketten te downloaden en te installeren van lokale pakketrepository's of die zich op het internet bevinden.
Opkg
probeert afhankelijkheden met pakketten in de repositories op te lossen - als dit niet lukt, zal het een fout melden en de installatie van dat pakket afbreken..
Met behulp van Opkg kunnen we dingen installeren zoals we deden met Ipkg op de handleiding 'Laat nog meer kracht van je thuisrouter los'. De belangrijkste verschillen zijn:
- Om de voorbeelden van SSMTP en Knockd te geven, ondergetekende, moesten de afhankelijkheden handmatig worden achterhaald. De procedure om dit handmatig te doen is lastig en niet erg eenvoudig. Opkg doet dit automatisch.
- Deze keer zullen we zijn toe te voegen software bovenop de firmware die aanwezig is, in plaats van deze te vervangen. Het vervangen ervan was een uitstekende nerdoefening, maar het was zonder twijfel: gevaarlijk, gevoelig voor problemen, onomkeerbaar en het ergste van alle routerspecifieke. Onnodig te zeggen dat dit veel eenvoudiger en veiliger is.
voorwaarden
Noteer het volgende om deze gids te voltooien:
- Zoals hierboven vermeld, is deze handleiding gemaakt en getest op Buffalo WZR-HP-AG300H met Buffalo's "Pro" firmwareversie 17135. Het zou moeten werken op alle Atheros (ar71xx) gebaseerde routers met elke versie van DD-WRT van dezelfde herziening of hoger , maar je kilometers kunnen heel erg zijn.
- U moet SSH op de router inschakelen, evenals WinSCP installeren en gebruiken om er verbinding mee te maken. Dit werd uitgelegd in de gids "Hoe advertenties verwijderen met Pixelserv op DD-WRT". Er wordt zelfs van uitgegaan dat u alles kunt doen wat in die handleiding wordt uitgelegd.
- U moet verbinding met de router kunnen maken via een terminal (SSH wordt aanbevolen). Enkele aanwijzingen over hoe dit te doen, zijn op de DD-WRT-wiki.
- Ruimte voor JFFS en ongeveer 4 MB post-geformatteerde ruimte voor de basisconfiguratie. JFFS-ruimte is niet alleen een vereiste, het is ook een showstopper. Dit komt omdat, als je router niet over de bovengenoemde 4 MB post-geformatteerde ruimte beschikt, je geen echt voordeel zult hebben van deze gids, en beter af zult zijn met "Laat nog meer kracht van je Home Router los" gids om Ipkg-pakketten rechtstreeks in de firmware te installeren of de Ipkg-pakketten handmatig te installeren. Volg de instructies in de gids 'Advertenties verwijderen met Pixelserv op DD-WRT' om JFFS in te schakelen en bekijk hoeveel vrije ruimte u daadwerkelijk heeft na het is geformatteerd.
Notitie: Het is mogelijk om dit te doen met slechts 2MB aan ruimte voor de setup, maar dan verliezen we het resultaat van "/ etc" en worden leesbaar en moet Opkg worden aangeroepen, terwijl het configuratiebestand elke keer handmatig wordt opgegeven ... wat lijkt op zooo kreupel ...
Laten we kraken
Op dit punt zou u JFFS moeten hebben ingeschakeld en SSH / WinSCP in de router kunnen invoeren.
- Open een terminalsessie naar de router.
- Maak een tijdelijke map waarin we zullen werken:
mkdir / tmp / 1
cd / tmp / 1
Gebruik Ipkg om Opkg te installeren
Hoewel we Ipkg zullen vervangen als pakketbeheerder, zullen we het gebruiken om het Opkg-installatiepakket handmatig te installeren.
- Download hiervoor het Opkg-installatiepakket voor de ar71xx-architectuur vanuit de OpenWRT-projectkoffer:
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_618-2_ar71xx.ipk
Notitie 1: Op het moment van schrijven is 618 de nieuwste versie, deze kan in de toekomst mogelijk worden gewijzigd, dus pas deze aan.
Opmerking 2: Het kan zijn dat het enige verschil om deze handleiding voor andere architecturen te laten werken is om het Opkg-installatieprogramma van de toepasselijke architectuur voor uw router te maken ... maar dit is niet getest door u echt. - Roep Ipkg aan om Opkg handmatig te installeren met behulp van:
ipkg installeer opkg_618-2_ar71xx.ipk
Notitie: U kunt, als u dat ook wilt, elk pakket handmatig in de repository op deze manier installeren. Dit zou echter betekenen dat je de afhankelijkheden van jezelf moet oplossen ... en wat daar leuk aan is?
De dynamische bibliotheekbestanden ("lib" s) verkrijgen
De benodigde "lib" -bestanden om Opkg te laten werken, maken deel uit van de OpenWRT-distributie. Om ze te verkrijgen, moet men ze extraheren uit het "Root FileSystem" van de genoemde distributie.
- Om dit te doen, download het nieuwste basis "Root FileSystem" voor de openWRT distrebution die de vereiste "lib" s bevat van de OpenWRT-projectkoffer:
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic- rootfs.tar.gz
- Extraheren met behulp van:
tar xvzf openwrt-ar71xx-generic-rootfs.tar.gz
- Kopieer de "libs" bestanden van de "rootfs" die we hierboven hebben geëxtraheerd naar de "libs" directory op onze JFFS, met behoud van hun attributen en symbolische links:
cp -Pp / tmp / 1 / lib / * / jffs / usr / lib /
Notitie: U krijgt berichten te horen dat de submappen worden weggelaten. Omdat we niets anders nodig hebben dan de "lib" -bestanden, is dit prima en kunt u deze berichten veilig negeren.
De LD_LIBRARY "PATH" herstellen
We moeten de router vertellen waar te zoeken naar de gedeelde bibliotheken (libs) die we zojuist hebben "geïnstalleerd" en dat dit moet gebeuren voor degenen die met de firmware kwamen.
- Stel hiervoor de LD_LIBRARY-omgevingsvariabele handmatig in (voorlopig), zodat de locatie waar we de nieuwe lib-bestanden hebben gekopieerd de eerste is in de "PATH":
exporteren LD_LIBRARY_PATH = / jffs / usr / lib: $ LD_LIBRARY_PATH
Leesbaar "/ etc"
We gaan "/ etc" kopiëren naar JFFS en vervolgens het normale "/ etc" -koppelpunt maken, erop wijzen. Als je dat doet, krijg je allebei een wereld van mogelijkheden open, omdat "/ etc" leesbaar zal worden (waar ik persoonlijk al 7 jaar op heb zitten wachten) en pakketten die dit gedrag verwachten correct kunnen laten werken.
- Maak de map met "/ etc":
mkdir -p / jffs / geek / etc
- Recursief kopiëren van het geheel van "/ etc" met behoud van alle subdirectories, bestandskenmerken en symbolische koppelingen.
cp -a / etc / * / jffs / geek / etc /
- Handmatig (voorlopig) "bind mount" de "/ etc" map naar de JFFS-map:
mount -o bind / jffs / geek / etc / / etc /
Stel de Optware-map in ("/ opt")
Opkg van OpenWRT, verwacht te worden gebruikt wanneer de firmware van de router is gebouwd. Omdat het FileSystem op dat moment nog niet op de router aanwezig is en dus nog steeds kan worden gewijzigd, is er geen probleem om op elke willekeurige locatie op het FileSystem te installeren. Daarom verwijst het Opkg-configuratiebestand naar pakketten om te installeren naar de "root" (/) van het FileSystem. We gebruiken echter Opkg na de firmware is gebouwd en geïnstalleerd op de router en omdat we de root van het bestandssysteem niet kunnen wijzigen om leesbaar te zijn, wijzen we alle installaties die moeten worden geïnstalleerd onder "/ opt". Momenteel verwijst "/ opt" echter ook naar een alleen-lezen locatie in de firmware van de router. Om dit te verhelpen, zullen we "/ opt" wijzen naar JFFS, dat leesbaar is.
- Om dit te doen, maakt u de map aan die de Optware-pakketten bevat:
mkdir -p / jffs / opt
- Handmatig (voorlopig) "bind mount" de "/ opt" -directory naar de JFFS-map:
mount -o bind / jffs / opt / / opt /
Opmerking: valt buiten het bestek van deze handleiding, geavanceerdere gebruikers willen misschien dit koppelpunt veranderen om naar een HD te wijzen.
Het Opkg-configuratiesbestand aanpassen
We willen dat het Opkg-configuratiebestand de locatie is waarnaar Opkg standaard zoekt (dit is "/ etc") en is aangepast om te installeren naar "/ opt".
- Om dit te doen, verplaatst u het opkg-configuratiebestand dat door het Opkg-pakket is geïnstalleerd naar de leesbare "/ etc" -locatie:
mv /jffs/etc/opkg.conf / etc /
- Wijzig de bestemming voor Optware-installaties om "/ opt" te zijn in plaats van "root" (/).
Om dit te doen, gaat u met de "vi" -editor of WinSCP naar "/ etc /" en maakt u de inhoud van het "opkg.conf" -bestand:vi /etc/opkg.conf
Laat het eruit zien als:
src / gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root / opt
dest ram / tmp
lists_dir ext / var / opkg-lists
optie overlay_root / overlayNotitie: U kunt de "lists_dir" -richtlijn zodanig wijzigen dat deze verwijst naar een locatie die niet in het RAM-geheugen staat, maar op JFFS. Hoewel dit u zou ontlasten van het bijwerken van de lijsten, voordat u extra software kunt installeren (als uw router opnieuw is opgestart vanaf de laatste keer), verliest u ongeveer 1,5 MB van de schaarse JFFS-ruimte en zou u aan zijn erosie gaan kloppen.
Hallo schat
U zou moeten kunnen zien dat Opkg werkt door de update uit te geven en opdrachten te vermelden.
- Als alles goed is gegaan, zou u moeten zien dat de Opkg-lijsten zonder fouten zijn bijgewerkt en dat u klaar bent om het script in de volgende stap te implementeren:
opkg update; opkg-lijst
- Neem de tijd om de pakketten te verkennen die beschikbaar zijn in de repository ... .
StartUp-script
We moeten het nu zo maken dat alle benodigde montage en pad automatisch gebeurt wanneer de router opstart. Daartoe hebben we voor u het initialisatie-geek-init-script gemaakt.
- Download, pak het uit en plaats het onder "/ jffs / geek / etc /". (Overweeg dit te doen met WinSCP).
- Maak het script uitvoerbaar door in te gaan op zijn eigenschappen met WinSCP of door het uitvoeren van:
chmod + x /jffs/geek/etc/geek-init.sh
- Laat het script uitvoeren bij het opstarten van de router, met behulp van de WebGUI. Voer onder Beheer -> Opdrachten in het tekstvak:
/jffs/geek/etc/geek-init.sh web-gui
En klik op "Opstarten Opslaan".
De banden schoppen
Als alles goed is gegaan, zou u nu de router opnieuw moeten opstarten en toch de Opkg-pakketbeheerder gebruiken. Dat is om applicaties te updaten, te plaatsen en te installeren.
Laat testen dat alles werkt door de opdracht "netstat" te installeren, die om de een of andere reden de laatste tijd is weggelaten uit DD-WRT's builds. Voordat we dit doen, voer je het netstat commando uit in de terminal en zul je zien dat je geraspt bent door een fout uit de shell, zeggende "-sh: netstat: not found".
- Uw eerste stap zal altijd zijn, om de Opkg-lijsten bij te werken, om de nieuwste pakketlijst uit de repository te hebben:
opkg update
- Als u niet weet welk pakket de opdracht "netstat" bevat, kunt u de resultaten filteren met.
opkg lijst | grep netstat
- En installeer nu "netstat" met behulp van:
opkg installeert net-tools-netstat
En nu, als u het netstat-commando opnieuw uitvoert, werkt het ... oke ha? :)
Tot de toekomstige artikelen waarin we softwarepakketten zullen installeren en configureren met behulp van deze methode, kunt u veel geekplezier beleven aan het verkennen van de enorme hoeveelheid software die nu voor u klaarstaat.
Als zo'n machine een virtuele onmogelijkheid is, moet het logisch gezien een eindige onwaarschijnlijkheid zijn. Dus alles wat ik moet doen om er een te maken is om uit te zoeken hoe onwaarschijnlijk het is, voed dat figuur in de eindige onwaarschijnlijkheidsgenerator, geef het een verse kop echt hete thee en zet het aan ... ... ... Het enige wat ze hou echt niet van, is een "Smart-Ass".