Istnieje wiele powodów dla których warto skompilować aktualna wersje z svn. Chociażby nowe możliwości firmware czy też usunięte błędy od ostatniej wersji wydanej oficjalnie.
Należy dodać, że kompilacja jest możliwa w systemie linux, więc należy albo mieć ten system zainstalowany albo zainstalować na maszynie wirtualnej (np vmware). Przed kompilacja należy zainstalować dodatkowe pakiety w systemie:
gcc, g++, binutils, patch, bzip2, flex, bison,make, gettext, unzip, libz-dev, libc headers, automake.
W przypadku Ubuntu (Debiana też) należy zainstalować podstawowe pakiety niezbędne do kompilacji, są to:
sudo apt-get update sudo apt-get install build-essential bison flex gettext subversion libncurses-dev unzip automake zlib-dev gawk
Oprócz pobranych pakietów należy również przygotować odpowiednio dużą ilość wolnego miejsca na dysku, gdyż takie środowisko zajmuje nawet ok 4GB.
Warto zapoznać się również i sztuczkami i kruczkami związanymi z komenda make
* Backfire 10.03.X
Stabilna wersja OpenWrt
svn co svn://svn.openwrt.org/openwrt/branches/backfire
* Kamikaze 8.09.2
Stabilna wersja OpenWrt
svn co svn://svn.openwrt.org/openwrt/branches/8.09
* trunk
Niestabilna wersja OpenWrt, cały czas rozwijana. Zawiera nowe pakiety i platformy zarówno te stabilnie działające jak i te raczkujące oznaczone jak „broken”
svn co svn://svn.openwrt.org/openwrt/trunk/
Tworzymy jakiś folder np. openwrt oraz wchodzimy do niego. W zależności jaki firmware chcemy kompilować uruchamiamy konkretną komendę zaczynająca się od „svn”. W katalogu jakim obecnie się znajdujemy(np. openwrt), tworzy się katalog z pobranym kodem (backfire, 8.09 lub trunk)
Pobrane pliki z svn stanowią podstawowy zestaw pakietów. Aby ściągnąć pozostałe pakiety dostępne w repozytorium należy przejść do katalogu ze źródłami, a następnie pobrać listę dostępnym pakietów poleceniem, czyli:
cd backfire ./scripts/feeds update -a ./scripts/feeds install -a
Porada: Można pobrać również konkretną rewizję repo dodając odpowiednia opcje np.
svn co -r 24714 svn://svn.openwrt.org/openwrt/branches/backfire
Pobrane zostanie Backfire oznaczone numerkiem 24714.
Wchodzimy do katalogu z pobranym kodem i wykonujemy polecenie:
make menuconfig
Pokazuje nam się ekran jak w przypadku kompilacji kernela normalnego linuksa. Wybieramy żądane pakiety oraz platformę docelową. Dla osób które nigdy nie kompilowały kernela należy się małe wyjaśnienie. Pakiet można zaznaczyć na trzy rodzaje:
< > czyli, nie skompiluje się, <*> czyli, zostanie umieszczony bezpośrednio w firmware oraz katalogu bin/packages <M> czyli, zostanie umieszczony tylko w katalogu bin/packages
Mała uwaga: Wkompilowanie pakietu w obraz zajmuje mniej miejsca niż zainstalowanie go w już działającym systemie!
Jeżeli już wszystko poprawnie wybraliśmy wychodzimy z menu klawiszem ESC i naciskamy „yes” w celu zapisania konfiguracji. Teraz czeka nas nieco długi proces kompilacji, zależy od posiadanego komputera oraz łącza internetowego. Możemy spokojnie wypić kawę lub nawet coś mocniejszego :]
Kompilujemy firmware
make
Potrwa to około godzinki, może trochę mniej (zależy od ilości zaznaczonych pakietów). Po zakończeniu, gotowy firmware mamy w katalogu bin/.
[UWAGA] Jeżeli kompilujemy stabilne wydanie OpenWrt(np. 10.03) i nie chcemy się bawić w konfigurowanie własnego firmware(za pomocą make menuconfig) to można wykorzystać konfigurację domyślną dostarczaną przez deweloperów OpenWrt. Od wydania 8.09.1 udostępniane są konfiguracje kompilacji publikowanych na openwrt.org. Jeżeli chcemy skompilować firmware na brcm-2.4 wykonujemy następującą czynność będąc w folderze pobranego kodu z SVN, np:
wget http://downloads.openwrt.org/backfire/10.03/brcm-2.4/OpenWrt.config -O .config
Teraz wystarczy tylko skompilować firmware za pomocą make
Zmiany w SVN czasami zachodzą często, czasami kilka na dzień. Dlatego zamiast pobierać cały kod od nowa, można zaktualizować obecne drzewo svn. Aktualizację dokonuje się komendą:
svn up <nazwa katalogu>
w przypadku Backfire 10.03 będzie to
svn up backfire
Powyższa komendę wywołujemy nie bezpośrednio w katalogu ze źródłem, a o stopień niżej.
Można też będąc w odpowiednim katalogu wywołać samą aktualizację
cd backfire svn up
Aktualizacja przeważnie nie długo trwa, zależy to od ilości zmian dokonanych na danym źródle. Zanim skompilujemy ponownie kod należy wyczyścić nasz kod z różnych plików tymczasowych powstałym w czasie kompilacji komendą
make clean
w katalogu ze źródłem
make dirclean
Komenda wywołuje czyszczenie kompilatora, skompilowanych pakietów. Jednym słowem czyścimy wszystko co sie stworzyło w czasie kompilacji firmware.
Oby zapoznać się lepiej z systemem kontroli wersji używanym przez projekt OpenWrt warto odwiedzić http://pl.wikibooks.org/wiki/Subversion
