Miért lesznek ekkorák a kernel modulok?

Fórumok

Sziasztok!

2.6.23.12-es kernelt fordítottam és a modulok mérete jóval nagyobb mint az adott disztró (openSUSE 10.3) moduljainak mérete. Pl. aes-i586.ko 23.556 byte(openSUSE) ill. 82.649(saját). Ez valami statikus/dinamikus linkelési dolog? Hol tudnám ezt beállítani ill. mit csinálhatok rosszul?

Gábor

Hozzászólások

Lássunk egy diff -et két konfig között.

Ill. a két modult is kiteheted.

miert akarsz kernelt forgatni?
hint: not recomended

-. . - -... ... -..

Kernel hackingböl javarészt no minden ?

Csak kernel forgatáskor lesz irreális méretű a végeredmény ?

#
> CONFIG_INSTRUMENTATION=y
#
3779a3641
#
> CONFIG_SCHED_DEBUG=y
#
3788a3651

Ilyenek nekem nincsenek, kell ez neked ?

Ez mit ir ki , modulok konyvtarban (cd /lib/modules/myversion):


B=0;C=0; for A in $(stat -c %s `find -name "*.ko" `); do (( B+=A ,C++))  ; done ; (( D=B/C ));echo sum: $B  num: $C byte/modul : $D

nalam:
sum: 16996675 num: 283 byte/modul : 60058

Mesehez hozztartozik, hogy nalam a video driver 8798603 byte.

Egy kisebbet nem tudnál kitenni ? (pl. md4.ko)
Megsasolnám mi van benne.

Meg az aktulis konfigot is kirakhatnad pastebin -re.

Esetleg nincsen valami fura kornyezeti valtozod, aminek a neveben van CFLAGS LDFLAGS ?
(export megmondja)

Ha KBUILD_VERBOSE=1 forgatod, milyen utasitasok mennek le egy modul legyartasahoz. (gcc,ld parametrei erdekelnek) Akkar ezt is bepasztezheted.

Konfig: http://pastebin.com/m1af7a23f
md5.ko: http://pastebin.com/m12c5eaa

gcc -m32 -Wp,-MD,fs/cifs/.cifsfs.o.d -nostdinc -isystem /usr/lib/gcc/i586-suse-linux/4.2.1/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -pipe -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -ffreestanding -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -Iinclude/asm-i386/mach-generic -Iinclude/asm-i386/mach-default -fomit-frame-pointer -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(cifsfs)" -D"KBUILD_MODNAME=KBUILD_STR(cifs)" -c -o fs/cifs/.tmp_cifsfs.o fs/cifs/cifsfs.c

gcc -m32 -Wp,-MD,fs/cifs/.cifssmb.o.d -nostdinc -isystem /usr/lib/gcc/i586-suse-linux/4.2.1/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -pipe -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -ffreestanding -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -Iinclude/asm-i386/mach-generic -Iinclude/asm-i386/mach-default -fomit-frame-pointer -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(cifssmb)" -D"KBUILD_MODNAME=KBUILD_STR(cifs)" -c -o fs/cifs/.tmp_cifssmb.o fs/cifs/cifssmb.c

gcc -m32 -Wp,-MD,fs/cifs/.cifs_debug.o.d -nostdinc -isystem /usr/lib/gcc/i586-suse-linux/4.2.1/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -pipe -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -ffreestanding -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -Iinclude/asm-i386/mach-generic -Iinclude/asm-i386/mach-default -fomit-frame-pointer -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(cifs_debug)" -D"KBUILD_MODNAME=KBUILD_STR(cifs)" -c -o fs/cifs/.tmp_cifs_debug.o fs/cifs/cifs_debug.c

-g a gonosz.

CONFIG_DEBUG_INFO

A kernel hacking -be.

Ne nagyon pipalj be ott, foleg, ha nem tudod mi az. No -t mindenre.

Földi neve:
Compile the kernel with debug info

Ja és a binárist nem a pastebinre gondoltam. :) De a szemét igy is látszik benne :)

OFF: Eddig én vezetek 2.6.x kategóriában: sum: 9345134 num: 176 byte/modul : 53097

:-))

root@osconsfortress:/lib/modules/2.6.18-limbo# uname -a
Linux osconsfortress 2.6.18-limbo #1 Thu Dec 27 19:31:27 CET 2007 i686 GNU/Linux
root@osconsfortress:/lib/modules/2.6.18-limbo# 

videodriver mérete: 5172436 (nvidia.ko)

System.map, vmlinuz:


root@osconsfortress:/boot# vdir System.map-2.6.18-limbo
-rw-r----- 1 root root 627327 2007-12-27 19:35 System.map-2.6.18-limbo
root@osconsfortress:/boot# vdir vmlinuz-2.6.18-limbo
-rw-r----- 1 root root 1117690 2007-12-27 19:35 vmlinuz-2.6.18-limbo
root@osconsfortress:/boot#

----------------

Nem a zsömle kicsi, a pofátok nagy...

-rw-r--r-- 1 root root 2491864 2007-12-27 16:40 /boot/vmlinuz-2.6.22.15-pancs3

:P minden kernelben, modulok nincsnek, ebből a két legnagyobb: XFS és madwifi :D ja és nem méretre optimalizált és P4 és nem beépített sys*, agyon kigyakott kernel, hanem vanilla + madwifi :P (a pontos meghatározás kedvéért)

szerk.:
+*

linux v2.6.22.14 + madwifi v0.9.3.3-mal itt
debian gnu/linux @ linux-2.6.22.15-pancs1

nekem a kernel 2 mega, a modulok pedig 8.3

2.6.23.12

:P en vezetek