martes, abril 05, 2005

MiKernel.v3 a MiKernel v4 (webcam)

Bien, necesito instalar mi webcam, para lo cuál toca activar video4linux en el Kernel.

Los archivos de configuración del kernel se encuentran en el directorio /usr/src/linux, ocultos, nombrados como config.vx.[indicación de cambios realizados].

Uso make-kpkg para compilar el kernel y crear los paquetes correspondientes a la imagen del kernel, sus corresponientes fuentes y sus fuentes. Después se instalan la imagen y las cabeceras. En principio las fuentes no hacen falta para nada, pués son iguales sólo que configuradas para otras opciones del kernel. Imagino que esto puede ser útil cuando se parchea el núcleo, puesto que éstos si que modifican las fuentes (si no me equivoco).

Hay que recordar que hay que hacer make-kpkg clean antes de crear los paquetes o se puede obtener el error por las versiones ('...I'm confused about this discrepancy, and I'm halting', me encanta la manera de decir que hay error).

Para crear los paquetes se usa:

make-kpkg --revision=[nombreRevisión] kernel_image kernel_headers kernel_source

Los diferentes make_xxx corresponden a los diferentes objetivos al comando make-kpkg (imagén del kernel, cabeceras y fuentes).

Al intentar instalar el paquete imagen, dará un error (me ha pasado anteriormente), debido a que existe el directorio /lib/modules/2.6.8, dónde se hallan las depencias del kernel actual. Dado que se va a instalar otro kernel, se deben quitar de ahí. Lo suyo es renombrar el directorio por si acaso falla el nuevo kernel y queremos poner el antiguo (es decir, des-renombramos y arrancamos con el kernel antiguo)


Al instalar el kernel, y habiendo eliminado dicho directorio, se muestra un mensaje que explica esto:
You are attempting to install a kernel version that is the same as
the version you are currently running (version 2.6.8). The modules
list is quite likely to have been changed, and the modules dependency
file /lib/modules/2.6.8/modules.dep needs to be re-built. It can
not be built correctly right now, since the module list for the
running kernel are likely to be different from the kernel installed.
I am creating a new modules.dep file, but that may not be
correct. It shall be regenerated correctly at next reboot.

I repeat: you have to reboot in order for the modules file to be
created correctly. Until you reboot, it may be impossible to load
some modules. Reboot as soon as this install is finished (Do not
reboot right now, since you may not be able to boot back up until
installation is over, but boot immediately after). I can not stress
that too much. You need to reboot soon.
Tras instalar el paquete kernel_image, se reinicia. Efectivamente las X dejan de funcionar, por lo que se debe reinstalar el controlador de nVidia. Fácil, basta con ejectuar el script de instalación. Al tener un kernel propio, se compila un interfaz con el kernel específico, ya que los precompilados no tienen por que ajustarse a mi kernel, lógicamente.

Para hacer funcionar la webcam se necesitan los módulos videodev y spca5xx cargados en memoria. Si no lo están se cargan con modprobe .

Desgraciadamente mi webcam no rula. El kernel parece reconecerla a tenor de lo que dice dmesg:
usb 4-2: USB disconnect, address 2
/usr/src/modules/spca5xx-20050328/drivers/usb/spca5xx.c: usb_submit_urb() ret -19
/usr/src/modules/spca5xx-20050328/drivers/usb/spca5xx.c: usb_submit_urb() ret -19
usb 4-2: new full speed USB device using address 3
/usr/src/modules/spca5xx-20050328/drivers/usb/spca5xx.c: USB SPCA5XX camera found. Benq DC 3410 Spca504b
/usr/src/modules/spca5xx-20050328/drivers/usb/spca5xx.c: [spca5xx_probe:7806] Camera type JPEG
Sin embargo tanto gqcam, xawtv como gnomemeeting se cuelgan al intentar visualziar lo que la cámara ve. He intentado probar con el kernel precompilado no consigo cargar el módulo spca5xx.o, asi que el sistema ni siquiera detecta la cámara.

No tengo pistas de por dónde seguir, tendré que buscar ayuda. :-(