Guía Gentoo Linux de actualización del núcleo
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.9-r2 [2.6.8-r5]
|
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.9-gentoo-r2.
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/make.conf.
Listado de Código 4.1: Ejemplo de variable USE en /etc/make.conf |
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 |
# emerge eselect
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.9-gentoo-r1
[2] linux-2.6.9-gentoo-r2
# eselect kernel set 1
|
Si realmente desea hacerlo por si mismo, el siguiente ejemplo muestra cómo
hacer que el enlace apunte a linux-2.6.9-gentoo-r2:
Listado de Código 4.3: Actualizar manualmente el enlace simbólico /usr/src/linux |
# cd /usr/src
# ln -sfn linux-2.6.9-gentoo-r2 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, sólo 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 refiérase al Manual
de Gentoo. Muchas de las opciones pueden ser ajustadas en el archivo de
configuración de genkernel, /etc/genkernel.conf.
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, refiérase
al 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 primero antes
de copiar el núcleo compilado a dicha partición! Si no se hace esto no podría
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.9-gentoo-r2
|
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, refiérase al 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 a estos paquetes. Refiérase
al 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 los comandos disponibles.
7.
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.
8.
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.
9.
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 9.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.
10.
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 10.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 10.2: Reusando 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.
11.
¿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.
El contenido de este documento está registrado bajo los términos de
la licencia
Creative Commons - Reconocimiento / Compartir Igual
|