Kompilacja OpenWrt

Tak się składa, że programiści OpenWrt dość rzadko decydują się na tworzenie wydań stabilnych. Ostatnio wydanie stabilne tej dystrybucji Backfire 10.03.1 ukazało się 11 grudnia 2011 roku. Od tego czasu zostało usuniętych wiele błędów, dodano wiele nowych funkcji oraz pakietów. Więc jest wiele powodów, dla których warto skompilować wersję rozwojową oraz przystosować ją pod swoje potrzeby.

Trzeba dodać, że potrzebny jest nam system Linux, można także skorzystać z systemu zainstalowanego na maszynie wirtualnej. Wtedy system musi zawierać niezbędne pakiety programów przeznaczonych do kompilacji: gcc, g++, binutils, patch, bzip2, flex, bison, make, gettext, unzip, libz-dev, libc headers, automake. Dla systemów debianowych (Debian/Ubuntu/LinuxMint) wykonujemy polecenia:

sudo apt-get update
apt install subversion g++ zlib1g-dev build-essential git python time
apt install libncurses5-dev gawk gettext unzip file libssl-dev wget
apt install libelf-dev

Wszystkie czynności związane z kompilacją wykonujemy na koncie normalnego użytkownika, przy próbie kompilacji z konta root zostanie wyświetlone ostrzeżenie oraz kompilator zakończy swoją pracę.

W zależności od wybranych opcji potrzebne jest od 2 do 10GB wolnego miejsca na dysku.

Pobieranie źródeł

Źródła będą znajdować się w katalogu /opt/trunk. Należy upewnić się, że posiada on prawa do zapisu dla normalnego użytkownika.

cd /opt
git clone https://git.openwrt.org/openwrt/openwrt.git

Powyższe polecenie pobiera podstawowy system, aby pobrać pozostałe pakiety dostępne w repozytorium, należy przejść do katalogu ze źródłami, a następnie wykonać następne polecenie:

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

Aktualizacja

Gdy za jakiś czas będziemy ponownie kompilować nowe firmware, wtedy przyda się zaktualizować źródła do najnowszej wersji.

git pull
./scripts/feeds update -a
./scripts/feeds install -a

Polecenia wykonujemy w katalogu ze źródłami, czyli /opt/trunk.

Konfiguracja

make menuconfig

Na tym etapie wybieramy platformę docelową oraz pakiety, jakie potrzebujemy. Interfejs jest podobny do tego, który ukazuje się podczas kompilacji jądra Linux. Poniżej przedstawiam wyjaśnienie wyboru pakietów.

<> pakiet nie zostanie skompilowany
<M> skompiluje się, jako paczka, nie zostanie dołączony do obrazu systemu
<*> skompiluje się, jako paczka ipk  oraz zostanie wkompilowany w wynikowy obraz
<–> pakiet jest domyślnie wybrany, oznacza to, że jakiś pakiet jest uzależniony od tego, użytkownik nie ma wpływu na ten wybór

Gdy już wszystko wybraliśmy, to wychodzimy z menu klawiszem Esc oraz zapisujemy konfigurację, potwierdzając wyborem „yes”

Kompilacja

make

Zostanie utworzony cross kompilator następnie kernel oraz pakiety.

Jeżeli nasz CPU ma więcej rdzeni (kompilowanie wielowątkowe)

make -j3

Liczba „3” to liczba wątków, zalecana liczba to liczba rdzeni+1.

Jeżeli chcemy zobaczyć informacje podczas kompilacji

make V=s

Obrazy wynikowe i pakiety zostaną umieszczone w podkatalogu bin/

Czyszczenie kompilacji

make dirclean

Czyści wszystko, co się stworzyło w czasie kompilacji firmware.

make target/linux/clean

Usuwa sam skompilowany kernel

make target/toolchain/clean

Usuwa skompilowany cross kompilator

Dołącz do rozmowy

Witaj na moim blogu, gdzie elektronika i oprogramowanie to główne tematy. Jako osoba za sterami tego miejsca, dążę do dostarczania wartościowych treści. Twoje komentarze stanowią dla mnie napęd do ciągłego doskonalenia. Ciekawią mnie Twoje myśli, pytania i osobiste doświadczenia związane z tym fascynującym światem. Przeglądając wpisy, na pewno masz wiele pomysłów i opinii. Nie krępuj się, podziel się nimi poniżej. Każdy komentarz to nie tylko opinia zwrotna, ale także początek inspirującej dyskusji.