compilar modulo suelto de Kernel (solo modulo)

buenas. queria compilar el modulo UDF 2.50 para ke mi ubuntu reconociese HD-DVD de la X360

me he bajado el correspondiente parche: http://sourceforge.net/tracker/index.php?func=detail&aid=1671912&group_id=295&atid=300295

modifiqué las rutas para ke no tyubiese problemas con los paths

aplique el parche:

sl1pkn07@SpinFlo:/usr/src$ sudo patch -p0 < /home/sl1pkn07/Desktop/UDF-2.50_linux-2.6.20.patch
patching file linux-source-2.6.20/fs/udf/inode.c
patching file linux-source-2.6.20/fs/udf/osta_udf.h
patching file linux-source-2.6.20/fs/udf/partition.c
patching file linux-source-2.6.20/fs/udf/super.c
patching file linux-source-2.6.20/include/linux/udf_fs.h
patching file linux-source-2.6.20/include/linux/udf_fs_sb.h
patching file linux-source-2.6.20/fs/udf/udf_sb.h
patching file linux-source-2.6.20/fs/udf/udfdecl.h
sl1pkn07@SpinFlo:/usr/src$ cd linux-source-2.6.20/


ahora bien... como compilo el modulo sin tener que compilar todo el kernel?

si hago make me sale esto:

sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20/fs/udf$ sudo make
make: *** No hay objetivos. Alto.


tambien he probado esto:

sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20$ sudo make modules SUBDIRS=fs/udf

ERROR: Kernel configuration is invalid.
include/linux/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.


WARNING: Symbol version dump /usr/src/linux-source-2.6.20/Module.symvers
is missing; modules will have no dependencies and modversions.

Building modules, stage 2.
/usr/src/linux-source-2.6.20/scripts/Makefile.modpost:42: include/config/auto.conf: No existe el fichero ó directorio
make[1]: *** No hay ninguna regla para construir el objetivo `include/config/auto.conf'. Alto.
make: *** [modules] Error 2
sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20$

si hago lo de "'make oldconfig && make prepare' (ke nisikiera se lo ke hace), al final me sale esto:

*** Error during writing of the kernel configuration.

make[2]: *** [silentoldconfig] Error 1
make[1]: *** [silentoldconfig] Error 2
make: *** No hay ninguna regla para construir el objetivo `include/config/auto.conf', necesario para `include/config/kernel.release'. Alto.
sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20$

mi kernel es el precompilado por ubuntu

saludos
Echando un ojo en google he encontrado esto: http://www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html

Básicamente por lo que puedo entender lo que dice es que necesitas los headers del kernel, y luego crear un makefile en el directorio donde tengas el source del módulo.
donde está el modulo, tiene el makefile. y si, tengo los headers

sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20/fs/udf$ cat Makefile
#
# Makefile for the linux udf-filesystem routines.
#

obj-$(CONFIG_UDF_FS) += udf.o

udf-objs := balloc.o dir.o file.o ialloc.o inode.o lowlevel.o namei.o \
partition.o super.o truncate.o symlink.o fsync.o \
crc.o directory.o misc.o udftime.o unicode.o
sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20/fs/udf$

tambien he probado ha hacerlo desde /usr/src/linux-headers-2.6.20-16 y /usr/src/linux-headers-2.6.20-16-generic y nada
Lo que pasa es que ese makefile no parece que haga nada, no se ve que haya ninguna regla ¬_¬
he hecho un pekeño apaño...

como me decia ke necisitaba los archivos "autoconf.h", "auto.conf" y "Module.symvers". los he linkeado a sus respectivos sitios... pero nada. no va :S


nadie mas sabe del tema? (Gracias kornshell)
No sería al final más rápido compilar el kernel y luego instalar sólo ese módulo?
cuando dejen de salir casi 1.000.000 de warnings me atreveré a compilar el kernel..... ademas de ke no se ke tengo ke activar o dejar de hacerlo :S

he conseguido un avance: despues de linkear los archivos a su sitio, hice lo de "make oldconfig && make prepare" parece ke lo ha compilado. pero me sale un error al final:

sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20$ sudo make modules SUBDIRS=fs/udf
CC [M] fs/udf/balloc.o
fs/udf/balloc.c: En la función ‘udf_table_new_block’:
fs/udf/balloc.c:751: aviso: puede ser que se utilice ‘goal_eloc.logicalBlockNum’ sin inicializar en esta función
CC [M] fs/udf/dir.o
CC [M] fs/udf/file.o
CC [M] fs/udf/ialloc.o
CC [M] fs/udf/inode.o
CC [M] fs/udf/lowlevel.o
CC [M] fs/udf/namei.o
CC [M] fs/udf/partition.o
CC [M] fs/udf/super.o
fs/udf/super.c: En la función ‘udf_fill_super’:
fs/udf/super.c:1511: aviso: puede ser que se utilice ‘ino.partitionReferenceNum’ sin inicializar en esta función
CC [M] fs/udf/truncate.o
CC [M] fs/udf/symlink.o
CC [M] fs/udf/fsync.o
CC [M] fs/udf/crc.o
CC [M] fs/udf/directory.o
CC [M] fs/udf/misc.o
CC [M] fs/udf/udftime.o
CC [M] fs/udf/unicode.o
LD [M] fs/udf/udf.o
Building modules, stage 2.
MODPOST 1 modules
/bin/sh: scripts/mod/modpost: not found
make[1]: *** [__modpost] Error 127
make: *** [modules] Error 2
sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20$

he ido al path del modpost ese y resulta ke necesita ser compilado

pongo sudo make y mas problemas :S

sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20/scripts/mod$ sudo make
make: *** No hay ninguna regla para construir el objetivo `/empty.o', necesario para `/elfconfig.h'. Alto.
sl1pkn07@SpinFlo:/usr/src/linux-source-2.6.20/scripts/mod$


me extraña muchiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisimo ke no se pueda compilar un modulo sin compilar todo el kernel (modificar un modulo incluido en el kernel, no un modulo aparte)

EDIT: otra cosa probada:

sl1pkn07@SpinFlo:/usr/src/linux-headers-2.6.20-16-generic$ sudo make modules SUBDIRS=/usr/src/linux-source-2.6.20/fs/udf
CC [M] /usr/src/linux-source-2.6.20/fs/udf/balloc.o
/usr/src/linux-source-2.6.20/fs/udf/balloc.c: En la función ‘udf_table_new_block’:
/usr/src/linux-source-2.6.20/fs/udf/balloc.c:751: aviso: puede ser que se utilice ‘goal_eloc.logicalBlockNum’ sin inicializar en esta función
CC [M] /usr/src/linux-source-2.6.20/fs/udf/dir.o
CC [M] /usr/src/linux-source-2.6.20/fs/udf/file.o
CC [M] /usr/src/linux-source-2.6.20/fs/udf/ialloc.o
CC [M] /usr/src/linux-source-2.6.20/fs/udf/inode.o
CC [M] /usr/src/linux-source-2.6.20/fs/udf/lowlevel.o
CC [M] /usr/src/linux-source-2.6.20/fs/udf/namei.o
CC [M] /usr/src/linux-source-2.6.20/fs/udf/partition.o
/usr/src/linux-source-2.6.20/fs/udf/partition.c: En la función ‘udf_get_pblock_meta25’:
/usr/src/linux-source-2.6.20/fs/udf/partition.c:335: error: ‘union ’ no tiene un miembro llamado ‘s_metadata’
/usr/src/linux-source-2.6.20/fs/udf/partition.c:345: error: ‘union ’ no tiene un miembro llamado ‘s_metadata’
/usr/src/linux-source-2.6.20/fs/udf/partition.c:360: error: ‘union ’ no tiene un miembro llamado ‘s_metadata’
make[1]: *** [/usr/src/linux-source-2.6.20/fs/udf/partition.o] Error 1
make: *** [_module_/usr/src/linux-source-2.6.20/fs/udf] Error 2
sl1pkn07@SpinFlo:/usr/src/linux-headers-2.6.20-16-generic$

nada :S

REEDIT:

a tomar por cleta la biciculo:

http://ubuntuforums.org/showthread.php?t=449658

añade el udf.ko para mi version del kernel

eske joder...
6 respuestas