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