Gentoo Logo

Guía Gentoo Linux de actualización del núcleo

Contenido:

1.  Introducción

El núcleo es una de las pocas clases de paquete que requiere alguna intervención manual para completar la actualización. Portage bajará e instalará las fuentes, pero le toca hacer la compilación antes de obtener algún cambio.

Aunque esta guía está dirigida a los usuarios que actualizan el núcleo de un lanzamiento a otro, también es útil para los que migran de un paquete de fuentes de núcleo a otro.

gentoo-sources se utiliza como ejemplo en este documento, aunque las instrucciones usadas acá aplican igualmente a los demás paquetes presentes en nuestro árbol.

2.  ¿Por qué actualizar el núcleo?

Generalmente hablando, actualizar de un lanzamiento menor al siguiente no traerá alguna diferencia mayor. Las razones para actualizar el núcleo generalmente tienen que ver con aprovechar una característica nueva específica o driver, para protegerse contra alguna vulnerabilidad de seguridad o sencillamente para mantener su sistema saludable y actual.

Aunque escoja no actualizar el núcleo cada revisión, se recomienda que lo haga de vez en cuando. Recomendamos fuertemente que actualice inmediatamente a un núcleo nuevo que resuelva problemas de seguridad.

3.  Obtener las fuentes nuevas a través de Portage

Las fuentes del núcleo se actualizan tal como lo haría con cualquier otro paquete usando la herramienta emerge. Probablemente sea el caso que quiera actualizar al ver aparecer las fuentes en la lista de actualizaciones de "world". Por ejemplo:

Listado de Código 3.1: Aparecen fuentes nuevas del núcleo en la lista de actualizaciones

# emerge -Dup world
Calculating dependencies ...done!
[ebuild    NS ] sys-kernel/gentoo-sources-2.6.39-r3 [2.6.38-r6]

Nota: La etiqueta "NS" presente en la salida de arriba significa que el nuevo núcleo será instalado en un nuevo slot, es decir, las fuentes de su antiguo núcleo se mantendrán hasta que las elimine manualmente.

Puede entonces instalar la actualización así:

Listado de Código 3.2: Actualizar las fuentes del núcleo

# emerge -u gentoo-sources

Las fuentes serán instaladas en un subdirectorio bajo /usr/src. En el ejemplo anterior, las fuentes nuevas serán instaladas en /usr/src/linux-2.6.39-gentoo-r3.

4.  Actualizar el enlace simbólico /usr/src/linux

Gentoo requiere mantener el enlace simbólico /usr/src/linux, el cual debe apuntar al núcleo actual.

Portage puede actualizar el enlace simbólico automáticamente cuando instala una nueva versión del núcleo. Todo lo que debe hacer es agregar el parámetro symlink a la variable USE en /etc/portage/make.conf.

Listado de Código 4.1: Ejemplo de variable USE en /etc/portage/make.conf

(Agregue el parámetro symlink)
USE="symlink x86 3dnow 3dnowex X aac aalib adns alsa apache2"

Alternativamente puede usar app-admin/eselect para modificar el enlace simbólico.

Listado de Código 4.2: Usar eselect para modificar el enlace simbólico

(Instale eselect si no lo tiene)
# emerge eselect
(Vea la lista de núcleos disponibles)
# eselect kernel list
Available kernel symlink targets:
  [1]   linux-2.6.39-gentoo-r3
  [2]   linux-2.6.38-gentoo-r6 *
(Seleccione el núcleo correcto)
# eselect kernel set 1
(Verifique que se ha creado el enlace simbólico al nuevo núcleo)
# eselect kernel list
  [1]   linux-2.6.39-gentoo-r3 *
  [2]   linux-2.6.38-gentoo-r6

Si realmente desea hacerlo por si mismo, el siguiente ejemplo muestra cómo hacer que el enlace apunte a linux-2.6.39-gentoo-r3:

Listado de Código 4.3: Actualizar manualmente el enlace simbólico /usr/src/linux

# cd /usr/src
# ln -sfn linux-2.6.39-gentoo-r3 linux

5.  Configurar, compilar e instalar el núcleo nuevo

Para cualquiera de estas opciones, deberá referirse a las instrucciones dadas en el Manual Gentoo relacionadas a la Configuración del Núcleo y la Configuración del Gestor de Arranque. Aquí suministramos un breve resumen:

Opción 1: Configuración automática del núcleo con Genkernel

Si es un usuario de genkernel, solo hará falta repetir las etapas cumplidas al instalar el núcleo por primera vez.

Sencillamente ejecute genkernel de forma normal:

Listado de Código 5.1: Invocar a genkernel

# genkernel all

También puede agregar parámetros adicionales para otras funcionalidades de genkernel. Por ejemplo, si desea configurar opciones adicionales para el núcleo usando menuconfig y desea que genkernel automáticamente actualice el archivo de configuración del gestor de arranque grub, invoque genkernel de la siguiente manera:

Listado de Código 5.2: Invocar genkernel con parámetros comunes

# genkernel --menuconfig --bootloader=grub all

Para más información, siga la Guía Genkernel de Gentoo Linux, o consulte el Manual de Gentoo. Muchas de las opciones pueden ser ajustadas en el archivo de configuración de genkernel, /etc/genkernel.conf. También puede echar un vistazo a la Guía Gentoo Linux de Sistemas de Archivos Iniciales en RAM.

Opción 2: Configuración manual

Para empezar, abra la herramienta menuconfig dentro del árbol de fuentes del núcleo:

Listado de Código 5.3: Invocar menuconfig

# cd /usr/src/linux
# make menuconfig

Seleccione la opciones requeridas para su hardware y ambiente operativo. Para más información sobre la configuración del núcleo, consulte el capítulo titulado Configurando el Núcleo del Manual de Gentoo.

A continuación, compile su núcleo y cópielo a su partición de arranque. De nuevo, siga las instrucciones dadas en el Manual de Gentoo. (Capítulo Configurando el gestor de arranque). Si /boot es una partición separada, , ¡No se olvide montarla antes de copiar el núcleo compilado a dicha partición! Si no se hace esto no podrá arrancar el sistema con su nuevo núcleo.

Listado de Código 5.4: Compilar e instalar el núcleo nuevo

# make && make modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.39-gentoo-r3

Finalmente, actualice su archivo de configuración del gestor de arranque, agregando una entrada para el núcleo nuevo (¡no borre la anterior todavía!) y desmonte la partición /boot. De nuevo, consulte el Manual de Gentoo para instrucciones detalladas acerca de este procedimiento.

6.  Reinstalar módulos externos

Si usa algún módulo externo del núcleo que no está incluido en el árbol de fuentes y que son suministrados por otro lado en portage (por ejemplo, los controladores ALSA o los controladores gráficos nVidia o ATI), entonces debe reinstalarlos cada vez que actualice el núcleo. Esto es tan sencillo como volver a ejecutar emerge de estos paquetes. Consulte el capítulo Configurando el Núcleo del Manual de Gentoo para más información.

Le ofrecemos una útil herramienta (sys-kernel/module-rebuild) que recompila todos los módulos del núcleo que ha instalado usando ebuilds separados para el núcleo presente en /usr/src/linux. Su uso es sencillo. Luego de instalarlo vía emerge, simplemente ejecute module-rebuild populate para poblar la base de datos con una lista de paquetes que necesitarán ser recompilados luego de actualizar el núcleo. Una vez que haya finalizado la actualización o recompilación de su núcleo, ejecute module-rebuild rebuild para recompilar los controladores de su núcleo.

Para mayor información, ejecute module-rebuild sin pasarle parámetros para ver una lista de las órdenes disponibles.

7.  Actualizar su configuración de módulos

Si ha definido configuraciones de módulos en /etc/conf.d/modules, entonces necesitará actualizar las entradas adecuadamente.

Listado de Código 7.1: Ejemplo de fichero /etc/conf.d/modules

# Lo que sigue únicamente autocargará el módulo ieee1394 module en núcleos 2.6.38-gentoo-r6
modules_2_6_38_gentoo_r6="ieee1394"

# Para dar soporte a la autocarga de todas las versiones posibles, elimine cualquier referencia a las versiones:
modules="ohci1394"

8.  Reiniciar al nuevo núcleo

A continuación, cierre todas las aplicaciones y reinicie su sistema. Si siguió las instrucciones anteriores correctamente, verá una selección para el nuevo núcleo en su gestor de arranque. Seleccione el núcleo nuevo y continúe arrancando el sistema.

Esperemos que su sistema haya arrancado sin problemas y que pueda ingresar para seguir lo que haya estado haciendo. Si todo funciona bien, ha concluido la actualización en este momento.

Si ha cometido una equivocación y su sistema no arranca con el nuevo núcleo, entonces sencillamente arranque con el núcleo anterior. Puede recomenzar el proceso a partir de Configurando, compilando e instalando el nuevo núcleo haciendo los cambios apropiados para corregir su error. En algunos casos (como si se hubiese saltado compilar un driver de la tarjeta de red o dispositivo de audio), entonces ni siquiera habría que reiniciar la máquina.

9.  Ejecutar múltiples núcleos

Podrá haber notado que al instalar las fuentes de su núcleo más nuevo, las fuentes para sus otros núcleos no fueron desinstaladas. Esto es a propósito y permite cambiar fácilmente entre núcleos distintos.

El cambiar entre múltiples núcleos es tan sencillo como dejar que permanezcan las fuentes bajo /usr/src/ y los binarios bzImage en la partición de arranque /boot (con sus líneas de referencia en el archivo de configuración del gestor de arranque). Cada vez que inicie, será presentado un menú de opciones de núcleos para elegir cuál iniciar.

10.  Desinstalar los núcleos viejos

Continuando desde la sección anterior, tal vez esté contento con su núcleo nuevo y no desea mantener las versiones anteriores. Para eliminar fácilmente todas la fuentes de un núcleo en particular salvo por la más nueva, puede aprovecharse de la opción prune de emerge. Continuando el ejemplo usando gentoo-sources:

Listado de Código 10.1: Podar versiones anteriores

# emerge -P gentoo-sources

En la mayoría de los casos, los archivos temporales usados durante la compilación permanecerán bajo sus respectivos directorios de fuentes bajo /usr/src. Puede borrarlos de forma segura con rm.

También puede borrar con seguridad cualquier módulo usado por este núcleo, borrando los subdirectorios apropiados bajo /lib/modules/ relacionados a las versiones de núcleo que está borrando. ¡Tenga cuidado de no borrar los módulos pertenecientes a núcleos que estén en uso!

Finalmente, puede montar su partición de arranque /boot y borrar el(los) archivo(s) bzImage para el(los) núcleos que está eliminando. También puede editar el archivo de configuración de su gestor de arranque para que no haga referencias a los núcleos inexistentes.

11.  Avanzado: Usando su archivo .config antiguo para configurar uno nuevo

Algunas veces es posible ahorrar algo de tiempo reusando el archivo de configuración de su antiguo núcleo cuando configura uno nuevo. Note que esto es, en general, inseguro -- puede que hayan muchos cambios en cada nueva versión del núcleo y por tanto hacer de esto algo poco confiable.

La única situación donde esto es apropiado es cuando se actualiza de una revisión a otra del núcleo de Gentoo. Por ejemplo, los cambios hechos entre gentoo-sources-2.6.9-r1 y gentoo-sources-2.6.9-r2 serán mínimos, por lo que está bien realizar el método a continuación. Sin embargo, esto no es del todo apropiado para usarlo en el ejemplo que se ha mostrado a lo largo de este documento: Actualizar desde 2.6.8 a 2.6.9. Los diversos cambios que hay entre versiones oficiales y el método que se describe abajo no muestran el contexto suficiente al usuario, lo que frecuentemente resulta en que los usuarios experimenten problemas porque desactivaron opciones que realmente no querían desactivar.

Para reusar su antiguo archivo .config, simplemente necesita copiarlo y luego ejecutar make oldconfig. En el ejemplo a continuación, tomamos la configuración de gentoo-sources-2.6.9-r1 y la importamos en gentoo-sources-2.6.9-r2.

Listado de Código 11.1: Reusar su configuración antigua

# cd /usr/src/linux-2.6.9-gentoo-r2
# cp ../linux-2.6.9-gentoo-r1/.config .
# make oldconfig

Listado de Código 11.2: Reusar la configuración anterior con genkernel

# cd /etc/kernels
# cp kernel-config-x86-2.6.9-gentoo-r1 kernel-config-x86-2.6.9-gentoo-r2
# genkernel all

En este punto puede que se le pidan respuestas a opciones de configuración que han cambiando entre las dos versiones. Una vez hecho esto, puede compilar e instalar su núcleo como siempre lo hace, sin tener que pasar por el proceso de configuración vía menuconfig.

Una manera mucho más segura de actualizar es copiando el archivo .config de la forma mostrada anteriormente y sencillamente ejecutar make menuconfig. Esto evita los problemas previamente mencionados de hacer make oldconfig, ya que make menuconfig cargará la configuración anterior lo mejor posible en el menú. Ahora todo lo que hay que hacer es navegar cada opción buscando nuevas secciones, remociones y demás. Al usar menuconfig se obtiene un contexto para las novedades y se puede ver fácilmente las nuevas opciones y revisar las páginas de ayuda con más facilidad. Inclusive, esto se puede hacer para actualizaciones como la de 2.6.8 a 2.6.9; solo asegúrese de leer las opciones cuidadosamente. Al terminar, compile e instale el núcleo normalmente.

12.  ¿Problemas luego de una actualización del núcleo?

Con el veloz desarrollo del núcleo Linux, es inevitable que los cambios realizados de un lanzamiento a otro puedan causar algún problema. Si observa alguna situación anómala con las últimas versiones de Núcleos soportados por Gentoo, entonces por favor agradecemos reportarla.



Imprimir

Página actualizada 23 de febrero, 2013

Sumario: Este documento describe el proceso de actualizar su núcleo de un lanzamiento a otro.

Daniel Drake
Autor

John Christian Stoddart
Traductor

Andrés Pereira
Traductor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.