środa, 29 lutego 2012

Freetz (by t3d)


Na blogu taniegadanie.blogspot.com kiedyś zamieściłem wpis autorstwa t3d na temat instalacji Freetza na urządzeniach AVM (popularnych Fritz!Box-ach). Wpis uważam za wartościowy wiec zdecydowałem się go przekleić również tutaj. Zapraszam do dzielenia się refleksjami na temat działania, instalacji freetza.





---

Fritzowa alternatywa - Freetz


DISCLAIMER: Autor tekstu nie bierze odpowiedzialności za jakiekolwiek działania zainspirowane czytaniem tego tekstu.

Wgrywanie do urządzeń AVM zewnętrznego oprogramowania skutkuje utraceniem gwarancji.

1. Wstęp

Zapewne wielu z Was słyszało o przeglądarce Firefox. Albo o pakiecie biurowym OpenOffice.org. Niektórzy pewnie słyszeli o linuksie. Są to sztandarowe projekty ruchu OpenSource – Otwartego Oprogramowania. W skrócie polega to na tym, że każdy użytkownik programu może bezpłatnie zajrzeć w jego kod, zmodyfikować go, a nawet stworzyć nowy program bazując na kodzie źródłowym innego. Ale ruch OpenSource nie ogranicza się jedynie do tworzenia oprogramowania na tradycyjne komputery. Istnieje całkiem sporo projektów mających na celu tworzenie wolnego oprogramowania na urządzenia takie jak odtwarzacze mp3, telefony komórkowe, czy routery. Bardzo często takie oprogramowanie poprawia wydajność sprzętu lub dostarcza nowych, użytecznych funkcji,. I tak użytkownicy odtwarzaczy iPod, sansa i archos mają swojego rockboksa, użytkownicy routerów z serii WRT Linksysa mają szeroki wybór pomiędzy DD-WRT, Tomato, HyperWRT, OpenWrt i FreeWRT, posiadacze niektórych czytników z e-inkiem mogą zainstalować sobie openinkpota, zaś użytkownicy wyższych modeli fritz!boksów mają... freetza. Co to takiego ten freetz? - zapytają pewnie niektórzy. Otóż jest to modyfikacja dostarczanego przez AVM firmware'u dodająca nowe funkcjonalności. Co takiego tam można dodać? A to już zależy od naszych potrzeb, fantazji i... pojemności pamięci naszego routera :)

Jedne z ciekawszych modyfikacji które przychodzą mi w tym momencie do głowy i znajdują się w pakietach freetza to:
· obsługa do 9 zamiast 3 urządzeń USB,
· konfigurowalne wykresy obciążenia procesora, zajętości pamięci i obciążenia naszych łącz generowane na bieżąco i dostępne na stronie konfiguracyjnej routera,
· obsługa partycji ext2, ext3 i reiserFS,
· możliwość słuchania radia internetowego w słuchawce telefonu,
· możliwość wywoływania za pomocą klawiaturki telefonu skryptów powłoki,
· obsługa syntezy głosu (coś na kształt programu IVONA),
· możliwość zalogowania się do routera przez ssh,
· klienci sieci torrent (2 do wyboru),
· obsługa skanerów,
· obsługa urządzeń bluetooth,
· obsługa urządzeń podpinanych przez port szeregowy (na przejściówce USB),
· serwer apache z PHP siedzący wewnątrz fritza,
· bootowanie fritz!boksa z zewnętrznego dysku (sposób na obejście ograniczonego rozmiaru pamięci)
· obsługa TOR.

Co ciekawe da się też usunąć z oryginalnego oprogramowania pewne funkcjonalności których nie zamierzamy używać (np. obsługę ftp, kontrolę rodzicielską, demona połączenia DSL,czy też UPnP). Pełą listę możliwych do wykonania zmian dostajemy przy konfiguracji Freetza i to od nas zależy co znajdzie się w obrazie który będzie można wgrać do fritz!boksa. W programie konfiguracyjnym ustala się też jakim modelem routera dysponujemy, w jakim języku obraz chcemy otrzymać (niemiecki lub angielski), oraz jaki mamy ANNEX. Dla najbardziej zaawansowanch jest też możliwość dodania do obrazów dowolnych plików, programów i dodatkowych modułów jądra, aczkolwiek trzeba pamiętać, że fritz!boksy oparte są na architekturze MIPS, tak więc zwykłe programiki przegrane z naszych linuksów (czy tym bardziej Windowsów) nie będą działały.


2. Instalacja.

Na wstępie ostrzegam, że nie jest to sprawa banalna, a żeby przygotować działający firmware NIEZBĘDNA jest znajomość języka angielskiego i dysponowanie środowiskiem typu linux (o to drugie akurat łatwiej :) ). Poza tym łatwo doprowadzić swoje urządzenie do stanu (przejściowej) nieużywalności, tak więc zawsze należy przygotować sobie wcześniej plik z oficjalnym oprogramowaniem, aby w razie gdy nasz fritz nie będzie działał jakbyśmy tego chcieli móc wrócić do poprzedniego stanu.

· Przygotowanie środowiska
Aby przygotować sobie własny firmware potrzebny będzie system typu GNU/Linux, czyli potocznie mówiąc linux ;) Twórcy freetza polecają Stinky Linux, ale praktycznie każda dystrybucja udostępniająca kompilator gcc i kilka konsolowych narzędzi powinna się nadać. Zamiast zwykłej instalacji linuksa na dysku można też zainstalować go na wirtualnej maszynie. Użycie bootowalnego linuksa z płyty, tzw, LiveCD zapewne też by wystarczyło, jednak nie znam dystrybucji która miałaby komplet narzędzi programistycznych potrzebnych do zbudowania obrazu. W jednym z readme znalazłem też informacje dotyczące możliwości użycia cygwina, ale z tego co pamiętam nie jest to polecane. W moim przypadku obrazy firmware były wytwarzane za pomocą Gentoo i Ubuntu. Jeśli ktoś nie ma wcześniejszych doświadczeń w tym zakresie i stoi przed wyborem dystrybucji linuksa dla siebie, (a przy okazji nie zamierza uczyć się linuksa) to z tych dwóch polecam ubuntu.

W ubuntu konieczne jest zainstalowanie dodatkowych pakietów. Należy otworzyć terminal i wpisać (wszystko jednym ciągiem, nie jako osobne linie):

sudo apt-get -y install subversion gcc g++ binutils autoconf automake automake1.9 automake1.8 libtool make bzip2 libncurses5-dev zlib1g-dev flex bison patch texinfo tofrodos gettext jam pkg-config jikes ecj-bootstrap fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip

(oczywiście sudo będzie od nas wymagało podania hasła)

· Konfiguracja

Gdy mamy już przygotowanego linuksa należy pobrać źródła freetza. Do wyboru mamy kilka możliwości. Można pobrać wersje stabilne z www (po pobraniu rozpakować za pomocą file-rollera, lub komendy "tar xvjf nazwa pliku" w terminalu) lub zdecydować się jedną z dostępnych gałęzi svn (opis na głównej stronie freetza). Należy mieć na uwadze to, że jeżeli będzimy chcieli zainstalować freetza opartego na starszej wersji firmware'u niż mamy obecnie w urządzeniu to stracimy nasze ustawienia.

Gdy mamy już na dysku katalog ze źródłami freetza należy otworzyć w nim terminal i wywołać polecenie “make menuconfig”. 



Jeśli ktoś konfigurował jądro linuksa to ten widok będzie dla niego znajomy. Naszym oczom ukazuje się menu za pomocą którego trzeba ustawić model urządzenia, annex i język, a także multum opcji umożlwiających dodanie (lub usuniecie) do firmware'u interesujących nas funkcjonalności (poruszamy się po menu za pomocą strzałek; przełączenie opcji za pomocą spacji; akceptacja lub wejście do działu menu za pomocą entera; przejście poziom wyżej klawisz ESC; pomoc pod znakiem zapytania). Na tym etapie zalecana jest daleko idąca ostrożność (czytać wszystko po kilka razy!), bowiem można łatwo stworzyć kombinację opcji która sprawi że nasz fritz nie będzie mógł połączyć się z internetem lub nie będziemy mogli się do niego zalogować (raz mi się to już zdarzyło).
· Kompilacja

Gdy mamy już przygotowaną konfigurację należy wydać magiczne polecenie 'make'. Nastąpi pobranie z internetu niezbędnych pakietów, kompilacja i wytworzenie gotowego obrazu. W zależności od szybkości naszego łącza internetowego, ilości wybranych przez nas pakietów i szybkości komputera może to potrwać nawet kilkadziesiąt minut. Jeśli wszystko jest w porządku powinniśmy ujrzeć coś takiego: 




Jednak możliwe jest że obraz jest za duży na pamięć naszego fritzboksa (ujemna liczba przy słowie “free”). Wtedy powtarzamy komendę 'make menuconfig' z poprzedniego punktu aż do skutku.
· Instalacja

Przygotowany obraz można wgrać przez firmware update ze strony fritz.box (robi się to jak przy update, z tym, że dodatkowo trzeba potwiedzić że chcemy zainstalować firmware niepochodzący od AVM), lub za pomocą skryptu opisanego w następnym punkcie. Obraz do wgrania powinien znajdować się w katalogu images. Procedura wgrywania trwa kilka- kilkanaście minut i w tym czasie nie wolno odłączać urządzenia od prądu ani go resetować. Należy cierpliwie czekać aż dioda “INFO” przestanie mrugać.

3. Coś nie działa! Gdzie szukać ratunku?

Jeśli po wgraniu naszego firmware'u coś nie działa można wrócić do oprogramowania producenta za pomocą standardowej procedury aktualizacyjnej. Jeśli nie jesteśmy w stanie dostać się do konfiguracji freetza przez www, należy użyć w terminalu skryptu “push_firmware” który dostarczany jest ze zródłami freetza (siedzi w katalogu “tools”). Jest to narzędzie korzystające z opisywanej przez janeo metody ADAM2. Przed jego uruchomieniem należy odłączyć router od internetu, połączyć go z komputerem kablem przez LAN1, ustawić odpowiedniednie IP komputera i wywołać skrypt z odpowiednimi parametrami (jako pierwszy parametr plik z obrazem, później opcjonalnie "-f IP", gdzie ip to aktualne ip routera – domyślnie 192.168.178.1)

4. Linki· http://trac.freetz.org/ - strona domowa freetza
· http://www.ip-phone-forum.de/forumdisplay.php?f=525 – dział o freetzie na niemieckim forum
· http://wiki.ip-phone-forum.de/software:ds-mod:start – wiki o modyfikacjach VoIP
· http://www.wehavemorefun.de/fritzbox/Main_Page – wiki o fritz!boksach


3 komentarze:

  1. Bardzo dobry wpis. Pozdrawiam serdecznie.

    OdpowiedzUsuń
  2. 29 year old Data Coordiator Bernadene Ferraron, hailing from Cold Lake enjoys watching movies like Galician Caress (Of Clay) and Dance. Took a trip to Strasbourg – Grande île and drives a Chevrolet Corvette L88 Convertible. odwiedz witryne

    OdpowiedzUsuń
  3. Bardzo fajny artykuł. Jestem pod wrażeniem.

    OdpowiedzUsuń