Necesito los fuentes del núcleo
Created by JohnnyHughes. Currently maintained by AlanBartlett and AkemiYagi.
<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[1]"] (see also the log)>>
1. Quizás usted no necesite los fuentes completos del núcleo
Si necesita compilar un módulo de driver del núcleo, es probable que en realidad no necesite el árbol de fuentes completo del núcleo. Quizás únicamente necesite el paquete kernel-devel. Sin embargo, si está seguro de que se requiere el árbol completo de fuentes, por favor siga las instrucciones en la Sección 2.
En CentOS-5, hay tres paquetes kernel-devel disponibles:
- kernel-devel (ambas arquitecturas 32- y 64-bits)
- kernel-xen-devel (ambas 32- y 64-bits)
- kernel-PAE-devel (32-bits únicamente)
En CentOS-4, hay cuatro paquetes kernel-devel disponibles:
- kernel-devel (ambas arquitecturas 32- y 64-bits)
- kernel-smp-devel (ambas arquitecturas 32- y 64-bits)
- kernel-xenU-devel (ambas arquitecturas 32- y 64-bits)
- kernel-hugemem-devel (32-bits únicamente)
- kernel-largesmp-devel (64-bits únicamente)
Si usted está corriendo el núcleo standard (por ejemplo), puede instalar el paquete kernel-devel haciendo:
[root@host]# yum install kernel-devel
Puede usar este comando para determinar la versión de su núcleo actualmente en ejecución:
[root@host]# uname -r
El resultado se verá parecido a esto:
2.6.18-164.15.1.el5xen
En este caso, está instalado el núcleo xen, y la forma de instalar este paquete kernel-devel específico es:
[root@host]# yum install kernel-xen-devel
Verifique que ha instalado el paquete kernel-devel que coincide con su núcleo actualmente en ejecución. Ver esta FAQ para más detalles.
Para información más específica sobre los núcleos disponibles por favor diríjase a las siguientes notas de entrega (Release Notes):
CentOS-4 (busque el encabezado kernel en la sección Package-Specific Notes, sub-sección Core, para más detalles)
Si su núcleo no aparece listado por yum porque está en un árbol más antiguo, puede descargarlo manualmente del CentOS Vault. Busque la versión de CentOS que le interesa y entonces, para la arquitectura deseada (arch), diríjase a los directorios os/arch/CentOS/RPMS/ o en updates/arch/RPMS/ y busque el archivo kernel[-type]-devel-version.arch.rpm
Una vez que tenga el archivo kernel[-type]-devel-version.arch.rpm instalado, trate de compilar su módulo. Debería funcionar de esta manera. Si no es así, por favor infórmelo al desarrollador del módulo, ya que ésta es la forma en que todos los nuevos módulos del núcleo deberían estar diseñados para funcionar.
2. Si realmente necesita los fuentes completos
Si realmente necesita tener el árbol de fuentes del núcleo, por el motivo que sea, es obtenible.
2.1. CentOS 4 y 5
Como root, instale los paquetes rpm-build, redhat-rpm-config y unifdef:
[root@host]# yum install rpm-build redhat-rpm-config unifdef
Como usuario ordinario, no root, cree un árbol de directorio basado en ~/rpmbuild:
[user@host]$ cd [user@host]$ mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} [user@host]$ echo '%_topdir %(echo $HOME)/rpmbuild' > .rpmmacros
Se le aconseja no compilar paquetes como root. (Ver: Building Source RPM as non-root under CentOS)
Busque el rpm de fuentes del núcleo en:
http://mirror.centos.org/centos/5/updates/SRPMS/ (Current Updates/SRPMS)
http://mirror.centos.org/centos/5/os/SRPMS/ (Current OS/SRPMS)
(Cambie el "5" por "4" si desea núcleos CentOS-4)
http://vault.centos.org/ (CentOS Vault)
(Elija <version>/updates/SRPMS o <version>/os/SRPMS)
Cuando haya ubicado el archivo fuente, puede instalarlo ejecutando, por ejemplo:
[user@host]$ rpm -i http://mirror.centos.org/centos/5/updates/SRPMS/kernel-2.6.18-164.15.1.el5.src.rpm 2>&1 | grep -v mockb
(para CentOS 5)
- o bien -
[user@host]$ rpm -i http://mirror.centos.org/centos/4/updates/SRPMS/kernel-2.6.9-89.0.20.EL.src.rpm 2>&1 | grep -v mockb
(para CentOS 4)
Ahora que está instalado el rpm fuente, desempaquete y prepare los archivos fuente:
[user@host]$ cd ~/rpmbuild/SPECS [user@host SPECS]$ rpmbuild -bp --target=`uname -m` kernel-2.6.spec 2> prep-err.log | tee prep-out.log
El valor de `uname -m` fija --target a la arquitectura de su núcleo actual. Esto está generalmente aceptado y la mayor parte de la gente tendrá i686 o x86_64. Nótese que se trata de caracteres backtick o acentos graves, no comillas simples o apóstrofos. El árbol de fuentes del núcleo quedará ahora en el directorio ~/rpmbuild/BUILD/.
2.2. CentOS 3
Puede instalar los fuentes del núcleo así:
[root@host]# yum install kernel-source
Si su núcleo no aparece listado por yum porque está en un árbol más antiguo, puede descargarlo manualmente del CentOS Vault. Busque la versión de CentOS que le interesa y entonces, para la arquitectura deseada (arch), diríjase a los directorios os/arch/CentOS/RPMS/ o en updates/arch/RPMS/ y busque el archivo kernel[-type]-devel-version.arch.rpm
Luego podrá instalarlo haciendo:
[root@host]# rpm -Uvh kernel-source-<version>.<arch>.rpm