This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Núcleo/Actualización

From Gentoo Wiki (test)
< Kernel
Jump to:navigation Jump to:search
This page is a translated version of the page Kernel/Upgrade and the translation is 100% complete.

Este artículo describe los pasos para actualizar a un nuevo núcleo.

Instalación y utilización de un nuevo núcleo

La actualización del núcleo puede ser una buena idea cuando se instalan los fuentes. A veces se instalan los fuentes cuando se actualiza el sistema lanzando la siguiente orden:

root #emerge --ask --update --deep --with-bdeps=y --newuse @world

Desde luego se pueden instalar directamente utilizando la siguiente orden (reemplazar gentoo-sources por hardened-sources cuando se utilice un perfil hardened):

root #emerge --ask --update --deep --with-bdeps=y --newuse sys-kernel/gentoo-sources

Al instalar unos nuevos fuentes del núcleo, no se le ofrece al usuario un nuevo núcleo. Es necesario construir e instalar un nuevo núcleo a partir de los nuevos fuentes y reiniciar el sistema para correr el nuevo núcleo.

Construir un nuevo núcleo a partir de los nuevos fuentes es básicamente el mismo proceso que el construir un nuevo núcleo cuando se instala el sistema. La diferencia es que se puede partir de la configuración del anterior núcleo para crear la configuración del nuevo. El utilizar la antigua configuración evita que el usuario tenga que recorrer de nuevo todas las opciones del núcleo (como con make menuconfig).

La configuración del núcleo se guarda en un archivo llamado .config en el directorio en el que se almacenan los fuentes del núcleo. Un nuevo núcleo puede tener opciones o características que no tiene un núcleo anterior o puede que ya no tenga una característica u opción que el núcleo anterior aún conserva. La configuración del núcleo especifica si las características y opciones de un núcleo están habilitadas o no, quizá construidas en el propio núcleo o quizás como módulos que se pueden cargar bajo demandan una vez el núcleo está en funcionamiento. Por tanto, el fichero de configuración del nuevo núcleo puede tener nuevas entradas que el fichero de configuración del núcleo antiguo no tiene y también puede que no tenga ya entradas que aún están presentes en el núcleo anterior.

Para tratar con este tipo de cambios en el fichero de configuración, se necesita convertir el fichero de configuración del núcleo antiguo a una configuración que pueda utilizar el nuevo núcleo. Este artículo muestra cómo crear un nuevo núcleo a partir de los nuevos fuentes realizando la conversión adecuada de la configuración del núcleo antiguo.

Haga una copia de respaldo de la configuración del núcleo actual

Es recomendable hacer una copia de respaldo de la configuración del núcleo de modo que no se pierdan las configuraciones anteriores. Después de todo, muchos usuarios invierten una considerable cantidad de tiempo en averiguar la mejor configuración para el sistema y por tanto no quieren perder definitivamente esa información.

Es fácil hacer una copia de respaldo de la configuración actual del núcleo:

root #cd /usr/src/linux
root #cp .config ~/kernel-config-`uname -r`

Asumiendo que el enlace simbólico a los núcleos del núcleo se ha definido correctamente, esto copia la configuración del núcleo actualmente utilizado al directorio de inicio de root, cambiando la configuración a kernel-config- seguido de la versión del núcleo Linux que está corriendo actualmente.

Ajuste el enlace simbólico a los nuevos fuentes del núcleo

El enlace simbólico /usr/src/linux debe siempre apuntar al directorio que contiene los fuentes del nucleo en el que está corriendo. Esto se puede hacer de tres formas distintas:

  1. Instalar los nuevos fuentes del núcleo con USE="symlink"
  2. Ajustar el enlace con eselect
  3. Actualizar el enlace simbólico de forma manual

Instalar los fuentes del núcleo con el ajustes USE para gestionar el enlace simbólico

Esto hará que /usr/src/linux apunte a los nuevos fuentes del núcleo instalados.

En caso de ser necesario, se puede modificar más tarde utilizando uno de los otros dos métodos.

Definir el enlace on eselect

Para definir el enlace simbólico con eselect:

root #eselect kernel list
Available kernel symlink targets:
 [1] linux-3.14.14-gentoo *
 [2] linux-3.16.3-gentoo

Esto muestra los fuentes del núcleo disponibles. El asterisco indica los fuentes elegidos.

Para cambiar los fuentes del núcleo, por ejemplo a la segunda entrada, se debe hacer los siguiente:

root #eselect kernel set 2

Actuar manualmente el enlace simbólico

Para definir el enlace simbólico manualmente:

root #ln -sf /usr/src/linux-3.16.3 /usr/src/linux
root #ls -l /usr/src/linux
lrwxrwxrwx 1 root root 19 Oct  4 10:21 /usr/src/linux -> linux-3.16.3-gentoo

Copiar la configuración del núcleo anterior

Se necesita copiar la configuración del núcleo antiguo al nuevo. Se puede encontrar en varios sitios:

  • En el sistema de ficheros procfs si la opción del núcleo Enable access to .config through /proc/config.gz se activó en el núcleo actual:
root #zcat /proc/config.gz > /usr/src/linux/.config
  • Desde el núcleo anterior. Esto funciona únicamente cuando el antiguo núcleo se compiló con CONFIG_IKCONFIG:
root #/usr/src/linux/scripts/extract-ikconfig /ruta/al/núcleo/anterior >/usr/src/linux/.config
  • En el directorio /boot si la configuración se instaló allí:
root #cp /boot/config-3.14.14-gentoo /usr/src/linux/.config
  • En el directorio del núcleo que está corriendo actualmente:
root #cp /usr/src/linux-3.14.14-gentoo/.config /usr/src/linux/
  • En el directorio /etc/kernels/, si se ha definido SAVE_CONFIG="yes" en /etc/genkernel.conf y se utilizó genkernelpreviamente:
root #cp /etc/kernels/kernel-config-x86_64-3.14.14-gentoo /usr/src/linux/.config

Configure el nuevo núcleo

Para utilizar la configuración del núcleo antiguo en el nuevo nucleo, se necesita convertir. La conversión se puede realizar bien usando make silentoldconfig o make olddefconfig. Utilice una u otra pero no ambas.

make silentoldconfig

La siguiente configuración es igual que la configuración basada en texto con make config. Para nuevas opciones de configuración, se pregunta al usuario para que decida la opción. Por ejemplo:

root #cd /usr/src/linux
root #make silentoldconfig
Anticipatory I/O scheduler (IOSCHED_AS) [Y/n/m/?] (NEW)

La cadena (NEW) al final de la línea, marca esta opción como nueva. A la izquierda de la cadena entre corchetes se muestran las posibles respuestas: Yes (Sí), no (No), module (Módulo) o ? para mostrar la ayuda. La respuesta recomendada (esto es, la respuesta por defecto) se muestra en mayúsculas (en este caso: Y). La ayuda describe la opción o el controlador.

Lamentablemente, make silentoldconfig no muestra, al lado de la ayuda, más información de cada opción, como el contexto, de modo que a veces es difícil elegir la respuesta adecuada. En este caso, la mejor forma de proceder es recordar el nombre de la opción y revisarla más tarde a través de alguna de las herramientas gráficas de configuración del núcleo.

make olddefconfig

Si se desea ajustar todas la opciones nuevas de configuración a sus valores recomendados (esto es, por defecto) utilizar make olddefconfig:

root #cd /usr/src/linux
root #make olddefconfig

make help

Utilizar make help para ver otros métodos de conversión que están disponibles:

root #make help

Construcción

Importante
Cuando se instalan módulos del núcleo externos (como nvidia o zfs), puede que se necesite lanzar make modules_prepare tal y como se describe abajo antes de construir el núcleo. Algunos módulos no se pueden instalar o preparar antes de construir el núcleo.
Importante
No olvide reconfigurar el cargador de arranque para tener en cuenta los nuevos nombres de los ficheros del núcleo y también reconstruir el initramfs si se utilizó alguno.

Para realizar este paso, siga lo indicado en el artículo de configuración manual.

Reinstalar módulos externos del núcleo

Cualquier módulo externo del núcleo como los módulos binarios del núcleo, necesitan reconstruirse cada vez que se actualiza el núcleo. Si todavía no ha construido su núcleo deberá prepararse en primer lugar para la construcción de los módulos externos del núcleo:

root #make modules_prepare

Los paquetes que contienen módulos se pueden reconstruir utilizando el conjunto @module-rebuild:

root #emerge --ask @module-rebuild

Resolver problemas en la construcción

Cuando tenga problemas mientras está reconstruyendo el núcleo actual, podría ser de utilidad sanear los ficheros fuente del núcleo. Asegúrese de hacer una copia de respaldo del fichero .config ya que esta operación lo eliminará. Asegúrese de no utilizar los sufijos .bak o ~ como indicadores de copia de respaldo ya que make distclean también los eliminará.

root #cp .config /usr/src/kernel_config_bk
root #make distclean
root #mv /usr/src/kernel_config_bk .config

Eliminar núcleos antiguos

Lea el artículo sobre la eliminación del núcleo.

Recursos externos