Problemy w budowaniu modułów okołokernelowych ze specy
Arkadiusz Miskiewicz
arekm w pld-linux.org
Pią, 21 Kwi 2006, 12:59:47 CEST
On Friday 21 April 2006 12:46, Bartosz Świątek wrote:
> Witam,
>
> Pisałem o tym już kiedyś, ale nie zaszkodzi jeszcze raz.
> Oprę się na przykładzie btsco.spec bo akurat jego przed chwilą
> przerabiałem. Problem polega na tym gdy buduje się speca z opcją --without
> dist_kernel dlatego, że już na wstępie jest burak. Kto o zdrowym umyśle ma
> w drzewku jądra config-nondist ? Nikt.
Nie nikt tylko masz go tam zrobić jak chcesz --without dist_kernel używać.
> Więc, żeby zbudować speca trzeba
> zrobić symlinka do .config. Nie lepiej w specu od razu podać, że ma patrzyć
> do .config ? Lepiej. Druga sprawa to linkowanie.
>
> for cfg in %{?with_dist_kernel:%{?with_smp:smp}
> up}%{!?with_dist_kernel:nondist}; do
> if [ ! -r "%{_kernelsrcdir}/config-$cfg" ]; then
> exit 1
> fi
> install -d o/include/linux
> ln -sf %{_kernelsrcdir}/config-$cfg o/.config
>
> Dlaczego scrypt najpierw sprawdza czy jest config-nondist (znaczy wywala
> się bo ze względów oczywistych go nie ma) a dopiero później kiedy on już ma
> istnieć probuje go tworzyć robiąc symlinka do .config ? :) paranoja.
Jak to dlaczego? Bo potrzebujesz mieć ten konfig w katalogu o/, a nie
w /usr/src/costam.
> W
> ogóle całe linkowanie np. Module.symvers jest zbędne dla jajek niepldowych.
Dlaczego zbędne? Bez tego nie generują się zależności pomiędzy modułami.
> Następna sprawa to już makro %{__make} z opcjami. Dzięki opcji M=$PWD
> O=$PWD/o budowa się wywala bo nie może rozpoznać wersji jądra.
Przykład podaj.
> Z powodu
> innych opcji budowa też się wywala (głównie z powodu braku praw zapisu w
> drzewku jądra).
Po to są te opcje by w drzewku jądra się nic nie musiało zapisywać.
> Najlogiczniejszym krokiem jest więc pójść za radą autorów
> danego modułu (tutaj btsco) i zrobić czyste %{__make} bez niczego. Paczka
> się wtedy buduje bez problemu.
Jednym tak, innym nie.
> Należałoby przemyśleć jeszcze raz sposób
> budowania takich specy dla kernelów niedystrybucyjnych, a sposób dla jądra
> pldowego zostawić jak jest skoro działa.
Z tym budowaniem zawsze były jazdy. Konkretnie coś zaproponuj to się popatrzy.
Jakiś spec przerobiony wg Twojej ideii itp.
Obecne budowanie pewnie ma jakieś wady ale problemów jest sporo:
- czyste /usr/src/linux vs częściowo mielone /usr/src/linux
- budowanie modułów gdy /usr/src/linux jest read only
- budowanie kilku modułów poza /usr/src/linux ale tak by się odpowiednie
zależności pomiędzy tymi modułami generowały (np. np paczka ieeecostam
generująca na raz kilka *.ko zależnych od siebie)
- budowanie modułu X z zależnościami od drugiego zewnętrznego moduły Y również
z osobnej paczki (trzeba dostarczać Module.symver z budowania Y)
- budowanie UP/SMP na raz
- o czymś pewnie zapomniałem
Do tego dochodzi badziewny kmod patch, który zdaje się znów wrócił do
kernel.spec w wykonaniu cieciwy. Brr.
> Pozdrawiam
> Bartosz Świątek
--
Arkadiusz Miśkiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/
Więcej informacji o liście dyskusyjnej pld-devel-pl