Iniciar sesión

Ver la versión completa : Me ayudais con la compilacion de un kernel debian?



crossmax
07/05/2010, 11:53
Buenas a todos,
Se ue no me entero, no es la primera vez que pido ayuda sobre este tema, pero no consigo aclararme del todo!!

A ver si me podeis aclarar unas dudas.
Estoy compilando un kernel debian para poder compilar fuentes de programas con make. Como es una debian especifica para un determinado hardware no puedo tirar de aptitude headers o sources.
Asique me he descargado las fuentes tal cual, las he descomprimido en /usr/src y me he puesto a compilar un nuevo kernel partiendo del fichero de configuracion del anterior kernel, añadiendo mas modulos.

He tirado de:

make-kpkg --initrd kernel_image kernel_headers

dpkg -i kernel-image-2.6.15_10.00.Custom_i386.deb
dpkg -i kernel-headers-2.6.15_10.00.Custom_i386.deb

Ahora bien,
no sé si estoy usando el nuevo kernel
al instalar el paquete kernel-image me decia que ya existia la ruta /lib/modules (vamos, donde estan los modulos) y que podia causar problemas. La he renombrado por si acaso. Ademas renombre las entradas del grup antiguas para diferenciarlas de las que se me crearon nuevas
cuando arranca el sistema veo "pasar" algun error con la ruta de los modulos, pero no alcanzo a leerlo del todo, en /var/log no veo nada raro
y logicamente me estoy volviendo loco porque al hacer "make" de los fuentes de un controlador que quiero instalar me saltan errores

In file included from /root/peak-linux-driver-6.15/driver/src/pcan_pccard_kernel.c:58:
/root/peak-linux-driver-6.15/driver/src/pcan_pccard_kernel.h:66: error: expected specifier-qualifier-list before ‘ioaddr_t’

y unos cuantos mas de ese estilo
Por si sirve de algo, cuando hago el "make", al principio dice:


*** Host machine kernel version=2.6.29.1-vortex86dx
*** Driver kernel version=2.6.29.1-vortex86dx <----- es la version pero es que coincide con la que compilo yo
*** Path to kernel sources=/usr/src/linux <----- la carpeta de los fuentes que descomprimí
*** use KBUILD=yes


Y entonces...¿que puedo estar haciendo mal? por donde puedo tirar???

Mil gracias por leerme, y mas por responderme ;-)

JoJo_ReloadeD
07/05/2010, 11:56
http://www.esdebian.org/articulos/23843/compilar-kernel-estilo-debian

crossmax
07/05/2010, 12:08
Estoy leyendo... a ver si me aclaro.
Gracias!!!!

kabhal
07/05/2010, 14:47
Creo que la has cagado al renombrarlo, yo no meto nunca las sources en /usr/src, compilo directamente desde el home porque tambien me habia encontrado alguna vez que me daba un error como el que te ha dado si lo descomprimia en /usr/src, creo que es por el tipico link que crea /usr/src/linux apuntando hacia el nucleo antiguo o algo asi
Tambien ahora que tengo ram suficiente lo he probado a hacer desde /dev/shm , lo descomprimo todo en ram y ala, a tirar, aunque no se nota tanto la diferencia como dicen si tienes un disco que vaya rápido


KBUILD=yes]
Lo del kbuild ,sirve para no tener que instalar el paquete sources completo despues para compilar segun que driver no? como haces para que te cree un paquete kbuild como hace debian?, porque a mi siempre me crea el image y el headers, pero para algunas cosas como el driver de ati, necesito el sources tambien sinó no tira, dice que falta el makefile32.cpu o algo asi (lo digo de memoria, no me acuerdo)

por eso yo siempre utilizo estos parametros

make-kpkg binary-arch binary-indep

asi me crea todos los paquetes, el bynary-arch es como el de kernel_img y el kernel_headers y el otro crea el de source, doc, pero me gustaria saber si es que hacen el kbuild a pelo o lo generan automaticamente de alguna forma, para evitar tener que tener las sources ocupando disco porque si.

crossmax
08/05/2010, 20:27
Buenas,
Pues la verdad que lo del kbuild no sé ni de donde sale. Yo cree el paquete de mi kernel con:
make-kpkg --initrd kernel_image kernel_headers

y al intentar compialr un driver me salía eso, pero ni me fijé en lo del kbuild. Lo que esta claro es que al compilar con make me está tirando del directorio de las sources que descargué de la web del fabricante (es un hardware un pelin especifico).Y ese directorio ocupa mas de 500MB asique supongo que por mucho que ponga kbuild, mi compilador necesita los 500MB para hacer su trabajo, por muchas headers que tenga instaladas. O al menos es lo que entiendo de todo esto...

< - >

Creo que la has cagado al renombrarlo, yo no meto nunca las sources en /usr/src, compilo directamente desde el home porque tambien me habia encontrado alguna vez que me daba un error como el que te ha dado si lo descomprimia en /usr/src, creo que es por el tipico link que crea /usr/src/linux apuntando hacia el nucleo antiguo o algo asi
Tambien ahora que tengo ram suficiente lo he probado a hacer desde /dev/shm , lo descomprimo todo en ram y ala, a tirar, aunque no se nota tanto la diferencia como dicen si tienes un disco que vaya rápido


Lo del kbuild ,sirve para no tener que instalar el paquete sources completo despues para compilar segun que driver no? como haces para que te cree un paquete kbuild como hace debian?, porque a mi siempre me crea el image y el headers, pero para algunas cosas como el driver de ati, necesito el sources tambien sinó no tira, dice que falta el makefile32.cpu o algo asi (lo digo de memoria, no me acuerdo)

por eso yo siempre utilizo estos parametros

make-kpkg binary-arch binary-indep

asi me crea todos los paquetes, el bynary-arch es como el de kernel_img y el kernel_headers y el otro crea el de source, doc, pero me gustaria saber si es que hacen el kbuild a pelo o lo generan automaticamente de alguna forma, para evitar tener que tener las sources ocupando disco porque si.


Buenas,
acabo de acabar de compilar de nuevo el kernel desde otro directorio que no fuera el /usr/src y ya probando lo he hecho con "parte" de tu comando para que me creara la sources

make-kpkg --initrd binary-arch binary-indep -append-to-version=linux-2.6.29.1-nuevo

con la intencion tambien de añadirle un nombre nuevo al kernel.
Me ha generado 2 .deb, lo he instalado pero me he parado a pensar y no se de que forma puedo arrancar con ese kernel, porque esta vez no me ha generado ningun initrd ni vmlinux ni me ha añadido entrada al grup.
Algo ha fallado o tengo que hacerlo a pelo???

Gracias

kabhal
08/05/2010, 22:07
Ah, bueno, yo siempre lo genero después con
mkinitramfs -o initrd.img-2.6.33.3 2.6.33.3
pero a mi el vmlinuz si me lo genera sin hacer nada, no se porque a ti no

crossmax
10/05/2010, 22:35
Ah, bueno, yo siempre lo genero después con
mkinitramfs -o initrd.img-2.6.33.3 2.6.33.3
pero a mi el vmlinuz si me lo genera sin hacer nada, no se porque a ti no


Buenas,
pues fijate que ahora enredando y buscando posible causas a mis problemas he ido a parar al initrd, asique lo mismo mi forma de crearlo no es correcta. Os cuento, aver si me podeis guiar por algun lado.

He vuelto a compilar, asegurandome de que el nuevo kernel es el que uso asique ya puedo decir que uso el que compilo desde las fuentes.

Primer problema que veo. En los mensajes de inicio veo un:
modprobe: FATAL: Could not load /lib/modules/2.6.29.1/modules.dep Not such file or directory aunque arranca del tiron y parece que funciona

Segundo problema. Voy a compilar el dichoso driver (compilo el kernel para esto!) y me sigue saliendo el mismo error:


CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_main.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_fops.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_fifo.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_filter.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_parse.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_sja1000.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_common.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_pci.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_isa.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_dongle.o
CC [M] /root/peak-linux-driver-6.15/driver/src/pcan_pccard_kernel.o

en el ultimo .o que pongo (que no sera el ultimo de todos) me empiezan a saltar errores.

Por tanto me vuelvo a liar con el error del modules.dep a ver si solucionandolo me rula y leo que deberia hacer un initrd nuevo con:
update-inintramfs -c -k 2.6.29.1
Pero tengo que instalar "inintramfs-tools" y al hacerlo me salta:
update-initramfs: Generating /boot/initrd.img-2.6.29.1
cp: cannot stat `/etc/modprobe.d/*.conf': No such file or directory

Asique empiezo a no saber ni por donde tirar, ¿alguna idea?

Un saludo

kabhal
11/05/2010, 12:02
Estas compilando esto en un chroot o algo parecido? Es que esos problemas me suenan a eso mismo.
Te va a parecer una guarrada pero sabes lo que hago yo cuando un archivo me dice que no existe?

touch lib/modules/2.6.29.1/modules.dep

y ver que es de lo siguiente que se queja, si es que se queja

crossmax
13/05/2010, 10:49
Por lo que he leido, cuando compilas un kernel de la misma version que el que ya tienes te puede dar un error al cargar el modules.dep, pero deberia autogenerarse de nuevo en el siguiente reinicio (cosa que parece no hace). De todos modos tenia una copia de una version anterior la he copiado y ahora no se queja.

Aun asi, sigue petando mi compilacion del driver de una miniPCI. C-O-Ñ-A-Z-O
A pesar de todo, muchas gracias por tu ayuda!!!

kabhal
13/05/2010, 11:06
Por lo que he leido, cuando compilas un kernel de la misma version que el que ya tienes te puede dar un error al cargar el modules.dep, pero deberia autogenerarse de nuevo en el siguiente reinicio (cosa que parece no hace). De todos modos tenia una copia de una version anterior la he copiado y ahora no se queja.

Aun asi, sigue petando mi compilacion del driver de una miniPCI. C-O-Ñ-A-Z-O
A pesar de todo, muchas gracias por tu ayuda!!!

Tienes razón, ese error que te da a ti, me lo ha dado cuando he compilado una versión del mismo que estoy usando, no habia caido.

De nada :brindis:

crossmax
13/05/2010, 18:32
Yiiiiuju!!!!!

Por fin, dios!!
He vuelto a compilar el kernel y le he metido mas modulos, algunos de ellos sin saber exactamente para qué, pero ahora si me compila el driver que necesitaba!!!
Ya tengo mi kernel con mi driver!! y ahora estoy empollandome las librerias que trae para hacer la prueba final y estar 100% seguro que ademas de instalar el driver este funciona con su hard...
a ver si salgo mediobien de todo esto, ajaja

Muchas gracias por la ayuda y por el apoyo, siempre anima que alguien te ayude, de otra forma a veces lo das por imposible demasiado pronto.

Ya os ire contado!

kabhal
13/05/2010, 18:54
Yiiiiuju!!!!!

Por fin, dios!!
He vuelto a compilar el kernel y le he metido mas modulos, algunos de ellos sin saber exactamente para qué, pero ahora si me compila el driver que necesitaba!!!

:quepalmo: Estas cosas pasan, seguro que dependia el driver de alguna otra opción no muy bien especificada o algo parecido.