Kompilacja OpenWrt z SVN

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

Wersje OpenWrt w SVN

* 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/

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 (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.

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

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

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

Czyszczenie

 make dirclean

Komenda wywołuje czyszczenie kompilatora, skompilowanych pakietów. Jednym słowem czyścimy wszystko co sie stworzyło w czasie kompilacji firmware.

svn - system kontroli wersji

Oby zapoznać się lepiej z systemem kontroli wersji używanym przez projekt OpenWrt warto odwiedzić http://pl.wikibooks.org/wiki/Subversion

kompilowanie/kompilacja_svn.txt · ostatnio zmienione: 2011/03/15 12:42 przez arteq
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0
Profesjonalny Hosting