Re: =?ISO-8859-2?Q?Budowanie_kernela_=28by=B3o_Re=3A_Pytania=3A=29 ?=

Krzysztof G. Baranowski kgb w manjak.knm.org.pl
Czw, 1 Paź 1998, 18:24:33 CEST


On 1 Oct 1998, Artur Bartnicki wrote:
> PPS. Czy ktoś siedzący w rozwoju kerneli 2.1.x mógłby mnie oświecić,
> czy coś ma szansę się zmienić w temacie budowania modułów bez
> budowania jądra (tzn. tak, że kernel nie musi być przebudowywany w
> celu dodania nowego modułu)? W 2.0.x można tak było sprokurować sound,
> ale już karty sieciowe nie. Coś się zmienia?
Jezeli kernel eksportuje wszystkie potrzebne funkcje, to nie musi
byc rekompilowany. Mozna sobie modul skompilowac osobno i insmodnąć.
Sek w tym, ze niektore funkcje eksportowane sa tylko jezeli wlaczy sie
odpowiednie opcje w konfigu, np. 'Network Firewalls' udostepnia
symbole potrzebne do ladowania wlasnych filtrow pakietow - 
register_firewall()

Podobnie np. wlaczenie opcji 'Misc devices' exportuje z kernela
funkcje (misc_register/unregister), potrzebne przy ladowaniu 
jako moduly urzadzen typu misc (major 10 i minor xxx).
Ktoras z opcji dotyczacych cdrom udostepnia modulom funkcje 
register_cdrom() itd.

Jesli odpowiednie przygotuje sie kernel, to ladowanie wiekszosci
sterownikow z modulow nie powinno stanowic problemu. Tylko trzeba
wtedy wlaczyc support dla niektorych subsystemow.


Natomiast jesli chodzi o skompilowanie pojedynczego modulu, to mozna
zrobic nastepujacy trick. (nie mam w konfigu drivera do kart eepro)

make SUBDIRS=/usr/src/linux/drivers/net M_OBJS=eepro.o modules

make -C  /usr/src/linux/drivers/net CFLAGS="-Wall -Wstrict-prototypes
-O2 -fomit-frame-pointer -pipe -fno-strength-reduce -m486
-malign-loops=2 -malign-jumps=2
-malign-functions=2 -DCPU=586 -DMODULE" MAKING_MODULES=1 modules
/usr/src/linux-2.1/scripts/pathdown.sh: TOPDIR: parameter null or not
set
make[1]: Entering directory `/usr/src/linux-2.1/drivers/net'
gcc -D__KERNEL__ -I/usr/src/linux-2.1/include -Wall
-Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
-fno-strength-reduce -m486 -malign-loops=2 -malign-jumps=2
-malign-functions=2 -DCPU=586 -DMODULE   -DEXPORT_SYMTAB -c
ppp_deflate.c
gcc -D__KERNEL__ -I/usr/src/linux-2.1/include -Wall
-Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
-fno-strength-reduce -m486 -malign-loops=2 -malign-jumps=2
-malign-functions=2 -DCPU=586 -DMODULE   -c -o eepro.o eepro.c


Skutkiem ubocznym jest to, ze oprocz tego kompilowane jest to co masz
w konfigu. Tzn. jedzie sobie od gory Makefile, kompilujac to co masz
zaznaczone jako [m] i zastrzymuje sie po skompilowanu tego co podalem
w command line.


Kris
-- 
Krzysztof G. Baranowski - Prezes Klubu Nieszkodliwych Manjaków
"Smith & Wesson - The original point and click interface..."
http://www.knm.org.pl/              <prezes w manjak.knm.org.pl>



Więcej informacji o liście dyskusyjnej pld-devel-pl