1

Temat: Nowy Target

Chciałbym skompilować sobie OpenWrt dla platformy która nie występuje źródłach pobranych z SVNa. Nie podaje co to ma być bo sam jeszcze nie jestem pewien (nie zdecydowałem się ostatecznie). To nad czym najpoważniej myślę to nowa wersja układu typu pxa (arm). Pxa występuje w liście target-ów ale jest do starej wersji 2xx a ja bym chciał nowsze 3xx. Tyle tytułem wprowadzenia.

Producenci płytek (typu COM) którymi się interesuję widzę, że zapewniają stosowne wsparcie dla linux-a. Dla przykładu w archiwum od jednego z producentó w katalogu kernel odnajduję pliki .patch, .config oraz jakiś plik bez rozszerzenia ale w nazwie mający uImage Wszystko to dla kernela 2.6.31 i 2.6.26

Z tego co w dokumentacji OpenWrt wyczytałem w katalogu target należy stworzyć nowy katalog dla nowej platformy. W nim utworzyć stosowny Makefile, katalogi patches i profiles. W tym ostatnim stworzyłem plik o rozszerzeniu .mk. Dane wpisane plików makefile i .mk widoczne są w uruchomionym menuconfig.

I teraz nie wiem co dalej. Gdzie trzeba umieścić pliki dostarczone przez producenta sprzętu? Jak dalej postępować? Czego jeszcze nie zrobiłem? Gdzie się umieszcza źródła różnych kerneli? Itd. Prosił bym o jakieś rady lub linka do jakieś stosownej dokumentacji / howto.

2

Odp: Nowy Target

Stosownej dokumentacji nie ma smile

W target robisz swój katalog. W makefile uzupełniasz odpowiednie informacje wraz z numerem kernela który obsługuje dana platforma.  I teraz: w files umieszczasz pliki które mają być w całości skopiowane do źródeł kernela, w patches - łatki do tego kernela. Jeżeli producent dostarcza gotowe latki to prawdopodobnie wystarczy tylko je skopiować. Zostaje jeszcze katalog image w którym musisz zrobić Makefile który zrobi obraz na dana platformę.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Nowy Target

Dziękuję za szybką odpowiedz. Wiem, że takie dłubanie bez sprzętu jest trochę mało poważne ale wykorzystuje czas jaki w tej chwili mam.

Cezary napisał/a:

Stosownej dokumentacji nie ma smile

Tak właśnie przeczuwałem sad

Cezary napisał/a:

W makefile uzupełniasz odpowiednie informacje wraz z numerem kernela który obsługuje dana platforma.

W Makefile mam taką linijkę.

LINUX_VERSION:=2.6.31

Skąd się weźmie ten kernel lub jakiś inny jaki tu w piszę. Jakoś auto magicznie zostanie przez jakiś skrypt ściągnięty z sieci?

Cezary napisał/a:

w patches - łatki do tego kernela. Jeżeli producent dostarcza gotowe latki to prawdopodobnie wystarczy tylko je skopiować.

Czyli kopiuje tutaj sam plik .patch od producenta. A co z plikiem .config ? Potrzebny mi jest do czegoś w zaistniałej sytuacji?

4

Odp: Nowy Target

Skąd się weźmie ten kernel lub jakiś inny jaki tu w piszę. Jakoś auto magicznie zostanie przez jakiś skrypt ściągnięty z sieci?

tak.

Czyli kopiuje tutaj sam plik .patch od producenta. A co z plikiem .config ? Potrzebny mi jest do czegoś w zaistniałej sytuacji?

Tak. W config-default go właduj.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez Creek 2009-11-30 00:49:14)

Odp: Nowy Target

Zrobiłem jak Pan radził - Dziękuje !. Coś tam się nawet mieli. Makefile z katalogu image na razie skopiowałem z starego pxa.

Przy czym proces budowania wywala się na patchowaniu jakimś 032-mips_vmlinux_lds.patch. Nie rozumiem nie tyle dlaczego to patchowanie się nie udaje ale dlaczego w ogóle się odbywa? Ten patch jest jak rozumiem dla mips-a a ja tu dłubie w arm-ie. Widziałem, że jądro było patchowane jeszcze innymi patch-ami. Tylko po co? Chyba w teorii powinno starczyć czyste jądro i patch od producenta? 

creek@B50A-laptop:~/OpenWrt/trunk$ make V=99 -j2
make[1]: Entering directory `/home/creek/OpenWrt/trunk'
make[2]: Entering directory `/home/creek/OpenWrt/trunk'
make[3]: Entering directory `/home/creek/OpenWrt/trunk/target/linux'
make[4]: Entering directory `/home/creek/OpenWrt/trunk/target/linux/pxa3xx'
if [ -s "/home/creek/OpenWrt/trunk/build_dir/linux-pxa3xx/linux-2.6.31.6/patches/series" ]; then (cd "/home/creek/OpenWrt/trunk/build_dir/linux-pxa3xx/linux-2.6.31.6"; if quilt --quiltrc=- next >/dev/null 2>&1; then quilt --quiltrc=- push -a; else quilt --quiltrc=- top >/dev/null 2>&1; fi ); fi
Applying patch generic/032-mips_vmlinux_lds.patch
patching file arch/mips/kernel/Makefile
Hunk #1 succeeded at 4 with fuzz 2 (offset 2 lines).
patching file arch/mips/kernel/vmlinux.lds.S
Hunk #1 FAILED at 10.
1 out of 1 hunk FAILED -- rejects in file arch/mips/kernel/vmlinux.lds.S
Patch generic/032-mips_vmlinux_lds.patch does not apply (enforce with -f)
make[4]: *** [/home/creek/OpenWrt/trunk/build_dir/linux-pxa3xx/linux-2.6.31.6/.quilt_checked] Error 1

6

Odp: Nowy Target

Tam jest jeszcze katalog generic-2.6 z którego też są brane patche. OpenWrt na wszystkich platformach ma część wspólną - squashfs, moduły do imq, lzma itd. A to znacza że po prostu jedno z drugim się gryzie i ten patch powinien zostać ręcznie poprawiony tak że chciał działać z innymi.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.