Esta sección cubre los cambios e información importante respecto del kernel 2.6.18 en el que se basa Fedora Core 6. El kernel 2.6.18 incluye:
Se da soporte a la herencia de prioridad de espacio del usuario (http://lwn.net/Articles/178253/)
Una herramienta de depuración: "validador de blqoueos" (http://lwn.net/Articles/185666/)
Una nueva política de ahorro de energía para sistemas multinúcleos, SMPnice (http://lwn.net/Articles/186438/)
Una capa SATA muy mejorada (http://lwn.net/Articles/183734/)
Migración de página sin intercambio con disco (http://lwn.net/Articles/160201/)
Contadores VM por zonas
Contabilidad de demora por tarea
Control de acceso por paquete nuevo para SELinux, llamado secmark (http://james-morris.livejournal.com/11010.html)
vDSO de i386 hecho al azar.
Nuevos controladorees y soporte para dispositivos adicionales para muchos de los controladores existentes
Muchas correcciones de errores y otras mejoras pequeñas
Fedora Core puede incluir parches adicionales con mejoras, corrección de errores y características adicionales. Por esta razón, el kernel de Fedora Core puede no ser línea a línea equivalente al así llamado kernel de vainilla del sitio web de kernel.org:
Para obtener una lista de estos parches, descargue el paquete RPM con las fuentes y ejecute el siguiente comando contra éste:
rpm -qpl kernel-<versión>.src.rpmPara obtener un registro de los cambios al paquete, ejecute el siguiente comando:
rpm -q --changelog kernel-<versión>Si necesita una versión amigable al usuario del log de cambios, vaya a http://wiki.kernelnewbies.org/LinuxChanges. Un diff corto y uno completo del kernel está disponible en from http://kernel.org/git. La versión de kernel de Fedora está basada en el árbol de Linus.
Las personalizaciones hechas para la versión de Fedora están disponibles en http://cvs.fedora.redhat.com .
Fedora Core 6 incluye los siguientes kernels construídos:
Kernel nativo, para usar en la mayoría de los sistemas. Las fuetnes configuradas están disponibles en el paquete kernel-devel-.<version>.<arch>.rpm
kernel-PAE para usar en sistemas con x86 de 32 bit con > 4GB de RAM, o con CPUs que tengan la característica "NX (no ejecutar)". Este kernel da soporte a sistemas monoprocesador y multiprocesadores.
Kernel virtual invitado para usar con el paquete emulador de Xen. Las fuentes configuradas se encuentran disponibles en el paquete kernel-xen-devel-.<version>.<arch>.rpm
Kernel kdump para usar con las capacidades kexec/kdump. Las fuentes configuradas están disponibles en el paquete kernel-kdump-devel-.<version>.<arch>.rpm
Puede instalar las cabeceras del kernel para todos los sabores de los kernel al mismo tiempo. Los archivos son instalados en el árbol /usr/src/kernels/. Use el siguiente comando:<version>-[xen|kdump]-<arch>/
su -c 'yum install kernel-{PAE,xen,kdump}-devel'Seleccione uno o más de estos sabores, separados por comas y sin espacios, según corresponda. Ingrese la clave de root cuando se le pregunte.
![]() | El kernel por defecto provee SMP |
|---|---|
No hay un kernel SMP separado disponible en Fedora Core 6 en i386, x86_64 y ppc64. El soporte multiprocesador se provee en forma nativa en el kernel. |
![]() | Soporte para PowerPC en el Kernel |
|---|---|
No hay soporte para Xen o kdump en la arquitectura PowerPC en Fedora Core 6. PowerPC de 32 bit tiene un kernel SMP separado. |
Vaya a http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html para obtener información sobre cómo reportar errores en el kernel de Linux. Puede también usar http://bugzilla.redhat.com para informar errores que sean específicos a Fedora.
Muchos de los tutoriales, ejemplos y libros de textos acerca del desarrollo del kernel de Linux asumen que las fuentes del kernel están instalados en el directorio /usr/src/linux/. Si hace un enlace simbólico, como se muestra más abajo, debe poder usar esos materiales de aprendizaje con los paquetes de Fedora Core. Instale los fuentes de kernel apropiados, como se mostró antes, y luego ejecute el siguiente comando:
su -c 'ln -s /usr/src/kernels/<versión>.<release>-<arch>/usr/src/linux'
Ingrese la clave de root cuando se le pregunte.
Fedora Core 6 no incluye el paquete kernel-source provista por versiones anteriores dado que sólo se requiere el paquete kernel-devel para construir módulos externos. Las fuentes configuradas están disponibles, como se describe en la sección sabores del kernel.
![]() | Las instrucciones se refieren al Kernel Actual |
|---|---|
Para simplificar las situientes directivas, asumimos que quiere configurar las fuentes del kernel para ser el mismo que el kernel actualmente en ejecución. En los pasos más abajo, la expresión |
Los usuarios que necesiten acceso a las fuentes del kernel original de Fedora Core los pueden encontrarn en el paquete .src.rpm del kernel. Para crear un árbol de fuentes desde este archivo, realice los siguientes pasos:
![]() | No construya paquetes como super usuario (root) |
|---|---|
La construcción de paquetes como superusuario es inherentemente peligroso y no es necesario, incluso para el kernel. Estas instrucciones le permitirán instalar las fuentes del kernel como un usuario normal, Muchos sitios de información general se refieren al directorio |
Prepare un entorno de construcción de paquetes RPM en su directorio de inicio (home). Ejecute los siguientes comandos:
su -c 'yum install rpmdevtools yum-utils' rpmdev-setuptree
Ingrese la clave de root cuando se le pregunte.
Descargue el archivo kernel- . Active los repositorios de fuentes apropiados, tales como Core, Updates o Testing, con la opción <version>.src.rpm-e :
yumdownloader -e core-source -e updates-source --source kernel
Ingrese la clave de root cuando se le pregunte.
Instale kernel- usando el comando:<version>.src.rpm
rpm -Uvh kernel-<versión>.src.rpmEste comando escribe los contenidos del RPM en ${HOME}/rpmbuild/SOURCES y filename class="directory">${HOME}/rpmbuild/SPECS
![]() | Espacio Necesario |
|---|---|
El proceso de construcción del kernel completo puede requerir varios gigabytes de espacio extra en el sistema de archivo que contenga su directorio home. |
Prepare las fuentes del kernel usando los comandos:
cd ~/rpmbuild/SPECS rpmbuild -bp --target $(uname -m) kernel-2.6.spec
El árbol de códigos fuentes del kernel se ubica en el directorio ~/rpmbuild/BUILD/kernel- .<version>/linux-<version>.<arch>
Las configuraciones para los kernels específicos que vienen en Fedora Core 6 están en el directorio ~/rpmbuild/BUILD/kernel-. Por ejemplo, el archivo de configuración i686 se llama filename class="directory">~/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arch>/configs/<version>/linux-<version>.<arch>/configs/kernel-<version>-i686.config
cp configs/<archivo-config-deseado> .configCada kernel tiene un nombre basado en su número de versión. Este es el valor que muestra el comando uname -r. El nombre del kernel está definido por las primeras cuatro líneas del archivo Makefile del kernel. El Makefile ha sido cambiado para generar un kernel con un nombre diferente del que está actualmente en ejecución. Para que sea aceptado por el kernel en ejecución, un módulo debe ser compilado para el kernel con el nombre correcto. Para hacer esto, debe editar el archivo Makefile del kernel.
Por ejemplo, si el comando uname -r devuelve la cadena 2.6.17-1.2345_FC6 , cambie la definición de EXTRAVERSION con esto:
EXTRAVERSION = -prep
a esto:
EXTRAVERSION = -1.2345_FC6
Es decir, sustituya todo desde el guion final en adelante.
Ejecute el siguiente comando:
make oldconfig
A continuación, proceda como lo hace siempre.
![]() | Construcción de los RPMs de Binarios del Kérnel |
|---|---|
Normalmente, los kernel para Fedora se contruyen usando el utilitario |
No se requiere un arbol de fuentes expandido para construir un módulo de kernel, tal como su propio controlador de dispositivo, contra el kernel actualmente en uso. Sólo se necesita el paquete kernel-devel para construir módulos externos. Si no lo seleccionó durante la isntalación, use Pirut para instalarlo, vaya a Aplicaciones → Agregar/Quitar Programas o use yum para instalarlo. Ejecute el siguiente comando para instalar el paquete kernel-devel usando yum.
su -c 'yum install kernel-devel'
Por ejemplo, para construir el módulo foo.ko, crear el siguiente Makefile en el directorio que contenga el archivo foo.c :
obj-m := foo.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
Emita el comando make para construir el módulo foo.ko .