So installieren Sie zusätzliche Software auf Ihrem Heimrouter (DD-WRT)
Wollten Sie schon immer zusätzliche Funktionen wie E-Mail, Bit-Torrent oder sogar MySQL direkt auf Ihrem Router haben? Nun, vielleicht können Sie jetzt. How-To Geek taucht in die Installation von Opkg-Software unter DD-WRT ein.
Bild von Jean Spector und Aviad Raviv
Wenn Sie dies noch nicht getan haben, lesen Sie die vorherigen Artikel der Serie:
- Verwandeln Sie Ihren Heimrouter in einen Super-Powered-Router mit DD-WRT
- So entfernen Sie Werbung mit Pixelserv auf DD-WRT
Vorausgesetzt, Sie sind mit diesen Themen vertraut, lesen Sie weiter. Beachten Sie, dass dieses Handbuch etwas technischer ist. Anfänger sollten beim Modden ihres Routers vorsichtig sein.
Trübsal
Ich habe kürzlich einen neuen Buffalo WZR-HP-AG300H gekauft, der mit einer neuen Version von DD-WRT geliefert wird. Da dieser Router über einen USB-Anschluss verfügt, habe ich sofort eine HD angeschlossen und versucht, den Wiki-Leitfaden "Optware, The Right Way" zu verwenden. Leider habe ich schnell herausgefunden, dass der Router, den ich bekommen habe, auf Atheros basiert und das Skript dieser Wiki-Seite dies nicht unterstützt. Also habe ich angefangen zu graben (wie immer) und bin auf mehrere Guides (1, 2, 3 und 4) gestoßen, die erklärten, wie man Opkg manuell zum Laufen bringt. Obwohl ihr Beitrag (unter anderen Quellen im Internet) zu diesem Leitfaden von unschätzbarem Wert war, sind einige Anweisungen (IMHO) einfach nicht direkt genug. Zum Beispiel, wenn Sie die "lib" -Dateien fischen, aber lernen Sie nicht, wie Sie von der Quelle aus fischen. Außerdem musste ich eine Linux-formatierte HD oder zumindest eine Partition von einer verwenden (was auf den von mir getesteten Firmwares überhaupt nicht funktioniert). Aus diesem Grund hatte ich das Bedürfnis, die unten aufgeführte prägnante, einfach zu befolgende und reproduzierbare Prozedur zu erstellen, um den OpenWRT Opkg-Paketmanager dazu zu bringen, an solchen Routern zu arbeiten.
Update: Die Funktion zum Montieren von Partitionen wurde in der umbenannten Version des 17798 alpha build wieder eingeführt.
Was ist Opkg??
Opkg ist ein Paketmanager wie apt / aptitude und yum. Er dient als Ersatz für den Ipkg-Paketmanager und kann zum Installieren von Software verwendet werden, wie zum Beispiel: der Transmission-BitTorrent-Daemon, der ssmtp-E-Mail-Sender und Knockd, ein Daemon, der nach einer bestimmten Port-Auslösesequenz Skripts ausführt, um nur einige zu nennen. Von der OpenWRT-Site:
Das Dienstprogramm opkg (ein ipkg-Zweig) ist ein einfacher Paketmanager, der zum Herunterladen und Installieren von OpenWrt-Paketen aus lokalen Paket-Repositorys oder im Internet befindlichen Paketen verwendet wird.
Opkg
versucht, Abhängigkeiten mit Paketen in den Repositorys aufzulösen. Wenn dies fehlschlägt, wird ein Fehler gemeldet und die Installation dieses Pakets abgebrochen.
Mit Opkg können wir also Dinge wie mit Ipkg in der Anleitung "Entfesseln Sie noch mehr Leistung von Ihrem Heimrouter" installieren. Die Hauptunterschiede sind:
- Um die Beispiele für SSMTP und Knockd zu nennen, mussten Sie die Abhängigkeiten manuell herausfinden. Die manuelle Vorgehensweise ist lästig und nicht sehr einfach. Opkg erledigt dies automatisch.
- Diesmal werden wir sein Hinzufügen Software auf der vorhandenen Firmware, anstatt sie zu ersetzen. Der Austausch war zwar eine ausgezeichnete Geek-Übung, aber zweifellos: gefährlich, anfällig für Probleme, irreversibel und der schlimmste aller Router-spezifischen. Es ist unnötig zu erwähnen, dass dies viel einfacher und sicherer ist.
Voraussetzungen
Um dieses Handbuch abzuschließen, beachten Sie Folgendes:
- Wie oben erwähnt, wurde dieses Handbuch auf Buffalo WZR-HP-AG300H mit der Buffalo-Firmware-Version 17135 erstellt und getestet. Es sollte auf allen auf Atheros (ar71xx) basierenden Routern mit DD-WRT-Versionen derselben Version oder darüber funktionieren , aber Ihre Laufleistung kann sehr hoch sein.
- Sie müssen SSH auf dem Router aktivieren und WinSCP installieren und verwenden, um eine Verbindung herzustellen. Dies wurde in der Anleitung zum Entfernen von Werbeanzeigen mit Pixelserv unter DD-WRT erläutert. Es wird davon ausgegangen, dass Sie in der Lage sind, alles zu tun, was in diesem Handbuch beschrieben wird.
- Sie müssen über ein Terminal eine Verbindung zum Router herstellen können (SSH wird empfohlen). Einige Hinweise dazu finden Sie im DD-WRT-Wiki.
- Platz für JFFS und ca. 4 MB postformatierter Speicherplatz für das Basis-Setup. JFFS-Space ist nicht nur eine Voraussetzung, sondern auch ein Show-Stopper. Wenn Ihr Router nicht über mindestens die oben genannten 4 MB post-formatierten Speicherplatz verfügt, profitieren Sie von diesem Handbuch nicht wirklich und können die Verwendung von „Entfesseln Sie noch mehr Leistung von Ihrem Heimrouter“ nutzen. Anleitung zum Installieren von Ipkg-Paketen direkt in der Firmware oder zum manuellen Installieren der Ipkg-Pakete. Befolgen Sie die Anweisungen im Handbuch "So entfernen Sie Werbeanzeigen mit Pixelserv unter DD-WRT", um JFFS zu aktivieren, und sehen Sie, wie viel Speicherplatz tatsächlich vorhanden ist nach dem es ist formatiert.
Hinweis: Es ist möglich, dies mit nur 2 MB Speicherplatz für das Setup zu tun, aber dann würden wir die Folge davon verlieren, dass „/ etc“ schreibgeschützt wird und Opkg aufrufen muss, während die Konfigurationsdatei jedes Mal manuell angegeben wird sooo lahm ...
Lass uns krachen
Zu diesem Zeitpunkt sollten Sie JFFS aktiviert haben und SSH / WinSCP in den Router einbauen können.
- Öffnen Sie eine Terminalsitzung für den Router.
- Erstellen Sie ein temporäres Verzeichnis, in dem wir arbeiten werden:
mkdir / tmp / 1
cd / tmp / 1
Verwenden Sie Ipkg, um Opkg zu installieren
Während wir Ipkg als Paketmanager ersetzen werden, verwenden wir es, um das Opkg-Installationspaket manuell zu installieren.
- Laden Sie dazu das Opkg-Installationspaket für die ar71xx-Architektur aus dem OpenWRT-Projekttrunk herunter:
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_618-2_ar71xx.ipk
Anmerkung 1: Zum jetzigen Zeitpunkt ist 618 die neueste Version. Dies kann sich in der Zukunft ändern. Passen Sie dies daher an.
Anmerkung 2: Es kann möglich sein, dass der einzige Unterschied bei der Verwendung dieses Handbuchs für andere Architekturen darin besteht, das Opkg-Installationsprogramm von der entsprechenden Architektur für Ihren Router zu beziehen. Dies wird jedoch von Ihrem System nicht getestet. - Rufen Sie Ipkg auf, um Opkg manuell zu installieren:
ipkg install opkg_618-2_ar71xx.ipk
Hinweis: Wenn Sie möchten, können Sie jedes Paket auf diese Weise manuell im Repository installieren. Dies würde jedoch bedeuten, dass Sie die Abhängigkeiten selbst auflösen müssen… und was wäre der Spaß daran?
Erhalten der dynamischen Bibliotheksdateien ("lib" s)
Die erforderlichen "lib" -Dateien, damit Opkg funktioniert, sind Teil der OpenWRT-Distribution. Um sie zu erhalten, muss man sie aus dem "Root FileSystem" dieser Distribution extrahieren.
- Laden Sie dazu das neueste Basis-Root-Dateisystem für die openWRT-Distribution herunter, das die erforderlichen „libs“ aus dem OpenWRT-Projekt-Trunk enthält:
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-rootfs.tar.gz
- Extrahieren Sie es mit:
tar xvzf openwrt-ar71xx-generic-rootfs.tar.gz
- Kopieren Sie die "libs" -Dateien aus den oben extrahierten "rootfs" in das "libs" -Verzeichnis unserer JFFS, wobei ihre Attribute und symbolischen Links erhalten bleiben:
cp -Pp / tmp / 1 / lib / * / jffs / usr / lib /
Hinweis: Sie erhalten Meldungen, dass die Unterverzeichnisse ausgelassen werden. Da wir außer den "lib" -Dateien nichts benötigen, ist dies in Ordnung und Sie können diese Meldungen ignorieren.
LD_LIBRARY "PATH" beheben
Wir müssen dem Router mitteilen, wo er nach den gemeinsam genutzten Bibliotheken (libs) suchen muss, die wir gerade „installiert“ haben, und dies tun muss Vor diejenigen, die mit der Firmware geliefert wurden.
- Setzen Sie dazu die Umgebungsvariable LD_LIBRARY (vorerst) manuell, damit der Ort, an den wir die neuen lib-Dateien kopiert haben, der erste im „PATH“ ist:
Export LD_LIBRARY_PATH = / jffs / usr / lib: $ LD_LIBRARY_PATH
Schreibgeschütztes "/ etc"
Wir werden „/ etc“ nach JFFS kopieren und dann den regulären „/ etc“ -Einhängepunkt auf ihn zeigen. Dadurch wird sich eine Welt voller Möglichkeiten eröffnen, denn „/ etc“ wird schreibgeschützt (worauf ich persönlich gewartet habe, oder Sie brauchen jetzt 7 Jahre), und ermöglicht Paketen, die von diesem Verhalten erwarten, korrekt zu funktionieren.
- Erstellen Sie das Verzeichnis, in dem "/ etc" gespeichert wird:
mkdir -p / jffs / geek / etc
- Kopieren Sie rekursiv die Gesamtheit von "/ etc", wobei alle Unterverzeichnisse, Dateiattribute und symbolischen Links erhalten bleiben.
cp -a / etc / * / jffs / geek / etc /
- Manuell binden Sie das Verzeichnis "/ etc" an das JFFS-Verzeichnis:
mount -o bind / jffs / geek / etc / / etc /
Legen Sie das Optware-Verzeichnis fest ("/ opt")
Opkg von OpenWRT erwartet die Verwendung der Firmware des Routers. Da sich das Dateisystem zu diesem Zeitpunkt noch nicht auf dem Router befindet und daher Änderungen unterliegen kann, ist die Installation an einem beliebigen Ort im Dateisystem problemlos möglich. Aus diesem Grund verweist die Konfigurationsdatei von Opkg auf Pakete, die im "root" (/) des Dateisystems installiert werden sollen. Wir verwenden jedoch Opkg nach dem Die Firmware wurde auf dem Router installiert und installiert, und da wir das Stammverzeichnis des Dateisystems nicht so ändern können, dass es schreibgeschützt werden kann, weisen wir alle Installationen unter "/ opt" aus. Momentan verweist "/ opt" jedoch auch auf eine schreibgeschützte Position in der Firmware des Routers. Um dies zu überwinden, werden wir / opt auf JFFS hinweisen, das lesbar ist.
- Erstellen Sie dazu das Verzeichnis, in dem die Optware-Pakete enthalten sind:
mkdir -p / jffs / opt
- Manuell binden Sie das Verzeichnis "/ opt" an das JFFS-Verzeichnis:
mount -o bind / jffs / opt / / opt /
Hinweis: Obwohl der Rahmen dieses Handbuchs sprengt, Fortgeschrittenere Benutzer möchten möglicherweise diesen Bereitstellungspunkt ändern, um auf eine HD zu verweisen.
Anpassen der Opkg-Konfigurationsdatei
Wir möchten, dass die Opkg-Konfigurationsdatei dort ist, wo Opkg standardmäßig nach ihr sucht (was "/ etc" ist) und für die Installation auf "/ opt" eingestellt ist..
- Verschieben Sie dazu die vom Opkg-Paket installierte Konfigurationsdatei opkg an den schreibgeschützten Speicherort "/ etc":
mv /jffs/etc/opkg.conf / etc /
- Ändern Sie das Ziel für Optware-Installationen in "/ opt" anstelle von "root" (/)..
Navigieren Sie dazu mit dem Editor "vi" oder WinSCP zu "/ etc /" und machen Sie den Inhalt der Datei "opkg.conf":vi /etc/opkg.conf
Lass es so aussehen:
src / gz-Snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root / opt
dest ram / tmp
liste_dir ext / var / opkg-listen
Option overlay_root / overlayHinweis: Sie können die Direktive "lists_dir "so ändern, dass sie auf einen Speicherort verweist, der sich nicht im RAM, sondern in JFFS befindet. Dies würde Sie zwar von der Aktualisierung der Listen befreien, bevor Sie zusätzliche Software installieren können (wenn Ihr Router beim letzten Neustart neu gestartet wird), würden Sie etwa 1,5 MB des knappen JFFS-Speicherplatzes verlieren und die Erosion dadurch verschärfen.
Hallo Baby
Sie sollten in der Lage sein zu erkennen, dass Opkg funktioniert, indem Sie die Befehle update und list ausgeben.
- Wenn alles gutgegangen ist, sollten Sie feststellen, dass die Opkg-Listen fehlerfrei aktualisiert wurden und Sie das Skript im nächsten Schritt implementieren können:
opkg Update; opkg liste
- Nehmen Sie sich Zeit, um die im Repository verfügbaren Pakete zu erkunden… .
Startup-Skript
Jetzt müssen wir es so einrichten, dass alle erforderlichen Montage- und Pfadeinstellungen beim Booten des Routers automatisch erfolgen. Zu diesem Zweck haben wir dieses Initialisierungs-Geek-init-Skript für Sie erstellt.
- Laden Sie es herunter, extrahieren Sie es und platzieren Sie es unter "/ jffs / geek / etc /". (Betrachten Sie dies mit WinSCP).
- Machen Sie das Skript ausführbar, indem Sie mit WinSCP seine Eigenschaften aufrufen oder Folgendes ausführen:
chmod + x /jffs/geek/etc/geek-init.sh
- Führen Sie das Skript beim Start des Routers mithilfe der WebGUI aus. Geben Sie unter Administration -> Commands in das Textfeld Folgendes ein:
/jffs/geek/etc/geek-init.sh web-gui
Klicken Sie auf "Start speichern"..
Die Reifen treten
Wenn alles gut gelaufen ist, sollten Sie jetzt den Router neu starten können und trotzdem den Paketmanager von Opkg verwenden. Das ist zum Aktualisieren, Auflisten und Installieren von Anwendungen.
Lassen Sie uns testen, ob alles funktioniert, indem Sie den Befehl "netstat" installieren, der aus irgendeinem Grund in den DD-WRT-Builds in letzter Zeit weggelassen wurde. Bevor Sie dies tun, führen Sie den Befehl netstat im Terminal aus und Sie werden feststellen, dass Sie von einem Fehler der Shell mit der Meldung "-sh: netstat: not found" betroffen sind..
- Der erste Schritt besteht immer darin, die Opkg-Listen so zu aktualisieren, dass die neuesten Pakete aus dem Repository aufgelistet werden:
opkg-Update
- Wenn Sie nicht wissen, welches Paket den Befehl "netstat" enthält, können Sie die Ergebnisse mit filtern.
opkg list | grep netstat
- Und jetzt installiere "netstat" mit:
opkg installiere net-tools-netstat
Und jetzt, wenn Sie den netstat-Befehl erneut ausführen, funktioniert er… ordentlich? :)
Bis zu den zukünftigen Artikeln, in denen wir Softwarepakete mit dieser Methode installieren und konfigurieren, haben Sie möglicherweise viel Spaß daran, die riesige Menge an Software zu erkunden, die jetzt direkt an Ihren Fingerspitzen liegt.
Wenn eine solche Maschine eine virtuelle Unmöglichkeit ist, muss es logisch eine endliche Unwahrscheinlichkeit sein. Ich muss also nur herausfinden, wie genau das unwahrscheinlich ist, diese Zahl in den endlichen Unwahrscheinlichkeiten-Generator einführen, ihm eine frische Tasse heißen Tees geben und ihn einschalten…… Das Einzige, was sie wirklich nicht mögen, ist ein "Smart-Ass".