Kompilacja OpenWrt

Zanim zaczniesz

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 install build-essential bison flex gettext subversion libncurses-dev unzip automake zlib1g-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.

Wersje OpenWrt w SVN

* Kamikaze 8.09.1
Stabilna wersja OpenWrt (oznaczona 8.09).

   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/

Pobieranie źródeł

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 (8.09 lub trunk)

Pobrany obraz zawiera 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

cd 8.09
./scripts/feeds update -a
./scripts/feeds install -a

Kompilacja

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

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

lub jeżeli dysponujemy 2/4 rdzeniowym CPU

make -jN # N to ilość rdzeni jaką chcemy wykorzystać do kompilacji równoległej

Potrwa to około godzinki, może trochę mniej (zależy od ilości pakietów). Po zakończeniu, gotowy firmware mamy w katalogu bin/.

[UWAGA] Jeżeli kompilujemy stabilne wydanie OpenWrt(np. 8.09.1) 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ść bedąc w folderze pobranego kodu z SVN:

wget http://downloads.openwrt.org/kamikaze/8.09.1/brcm-2.4/brcm-2.4.config -O .config

Teraz wystarczy tylko skompilować firmware za pomocą make

Aktualizacja

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 drzewa svn>

w przypadku Kamikaze 8.09 będzie to

svn up 8.09

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 8.09
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

Czyszczenie

 make dirclean

Komenda wywałuje czyszczenie toolchaina(cross kompilatora), skompilowanych pakietów. Jednym słowem czyścimy wszystko co naj sie stworzyło w czasie kompilacji firmware.


development/kompilacja_svn.txt · ostatnio zmienione: 2010/01/06 15:41 przez arteq
Do góry
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0