Documentation for a newer release is available. View Latest

Actualizar Manualmente el Kernel

indexterm:[kernel,upgrading the kernel]indexterm:[kernel,package]indexterm:[kernel,RPM package]indexterm:[package,kernel RPM] El kernel Fedora es el kernel diseñado a medida por el equipo Fedora para asegurar su integridad y compatibilidad con el hardware soportado. Antes de que el kernel sea liberado debe pasar primero un riguroso conjunto de pruebas de garantía de calidad.

Los kernel Fedora están empaquetados en formato RPM para que sean fáciles de actualizar y verificar usando los administradores de paquetes DNF o PackageKit. PackageKit consulta automáticamente a los repositorios DNF y le informa de los paquetes que tienen actualizaciones disponibles, incluyendo los paquetes kernel..

Este capítulo es, por lo tanto, solo útil para los usuarios que necesitan actualizar manualmente un paquete kernel usando el comando rpm en lugar del comando dnf.

Utilice DNF para instalar kernels siempre que sea posible

Siempre que sea posible, utilice o DNF o el administrador de paquetes PackageKit para instalar un nuevo kernel porque ellos siempre instalan un nuevo kernel en lugar de reemplazar el actual algo que podría, potencialmente, dejar su sistema incapaz de arrancar.

Para más información sobre la instalación de paquetes de kernel con DNF vea Actualizando Paquetes.

Visión General de los Paquetes de Kernel

Fedora contiene los siguientes paquetes de kernel:

  • kernel — Contiene el kernel para sistemas de un solo núcleo, multinúcleo y multiprocesador.

  • kernel-debug — Contiene un kernel con numerosas opciones de depuración habilitadas para el diagnóstico del kernel, con el coste de un rendimiento reducido.

  • kernel-devel — Contiene las cabeceras del kernel y los makefiles suficientes para construir módulos contra el paquete kernel.

  • kernel-debug-devel — Contiene la versión de desarrollo del kernel con numerosas opciones de depuración habilitadas para diagnóstico del kernel, con el coste de un rendimiento reducido.

  • kernel-headers — Incluye los ficheros de cabecera C que especifican la interfaz entre el kernel Linux y las librerías y programas del espacio de usuario. Los ficheros de cabecera definen estructuras y constantes que son necesarias para la construcción de la mayoría de los programas estándar.

  • linux-firmware — Contiene todos los ficheros de firmware que son requeridos por los diversos dispositivos para trabajar.

  • perf — Este paquete contiene scripts de apoyo y documentación para la herramienta perf enviada en cada subpaquete de imagen de kernel.

  • kernel-abi-whitelists — Contiene información que pertenece a la ABI (Interfaz Binaria de Aplicaciones) del kernel de Fedora, incluyendo una lista de símbolos de kernel que son necesarios para módulos externos del kernel Linux y un complemento dnf de ayuda.

  • kernel-tools — Contiene herramientas para la manipulación del kernel Linux y documentación de apoyo.

Preparando la Actualización

Antes de actualizar el kernel es recomendable que tome algunas medidas de precaución.

Primero, asegure que tiene un medio de arranque funcional para el sistema en caso de que ocurra un problema. Si el cargador de arranque no está configurado apropiadamente para arrancar el nuevo kernel, usted puede usar este medio para arrancar Fedora.

Los medios USB vienen con frecuencia en forma de dispositivos flash a veces llamados pen drives, thumb disks o keys o como dispositivos de disco duro externamente conectados. Casi todos los medios de este tipo están formateados como sistemas de archivos VFAT. Puede crear su medio USB arrancable sobre un medio formateado como ext2, ext3, ext4 o VFAT.

Puede transferir un fichero imagen de distribución o un fichero imagen mínimo de arranque a un medio USB. Asegure que hay suficiente espacio libre disponible en el dispositivo. Se requiere alrededor de 4 GB para imagen de distribución DVD, alrededor de 700 MB para imagen de distribución CD o alrededor de 10 MB para imagen mínima de medio de arranque.

Usted debe tener una copia del archivo boot.iso de un DVD de instalación de Fedora o del CD-ROM#1 de instalación y necesita una dispositivo de almacenamiento USB formateado con el sistema de archivos VFAT y alrededor de 16 MB de espacio libre. El siguiente procedimiento no afectará a los archivos existentes en el dispositivo de almacenamiento USB a nos ser que tengan los mismos nombre de ruta que los ficheros que usted vaya a copiar en él. Para crear el medio de arranque USB ejecute los siguientes comandos como usuario root:

  1. Instalar el gestor de arranque SYSLINUX en el dispositivo de almacenamiento USB:

    ~]# syslinux /dev/sdX1

    …​donde sdX es el nombre del dispositivo.

  2. Crear los puntos de montaje para boot.iso y el dispositivo de almacenamiento USB:

    ~]# mkdir /mnt/isoboot /mnt/diskboot
  3. Montar boot.iso:

    ~]# mount -o loop boot.iso /mnt/isoboot
  4. Montar el dispositivo de almacenamiento USB:

    ~]# mount /dev/sdX1 /mnt/diskboot
  5. Copiar los archivos ISOLINUX desde boot.iso al dispositivo de almacenamiento USB:

    ~]# cp /mnt/isoboot/isolinux/* /mnt/diskboot
  6. Usar el archivo isolinux.cfg del boot.iso como el archivo syslinux.cfg para el dispositivo USB:

    ~]# grep -v local /mnt/isoboot/isolinux/isolinux.cfg > /mnt/diskboot/syslinux.cfg
  7. Desmonte boot.iso y el dispositivo de almacenamiento USB:

    ~]# mkdir /mnt/isoboot /mnt/diskboot
  8. Debería reiniciar la máquina con el medio de arranque y verificar que es capaz de arrancar con él antes de continuar.

Alternativamente, sobre sistemas con dispositivo de disco flexible, usted puede crear un disquete de arranque instalando el paquete mkbootdisk y ejecutando el comando mkbootdisk como root. Vea la página de manual man mkbootdisk después de instalar el paquete para información de utilización.

Para determinar que paquetes de kernel están instalados, ejecute el comando dnf list installed "kernel-*" en un indicador de shell. La salida se compondrá de algunos o todos los siguientes paquetes, dependiendo de la arquitectura del sistema y de los números de versión que pueden diferir:

~]# dnf list installed "kernel-*"
Last metadata expiration check performed 0:28:51 ago on Tue May 26 21:22:39 2015.
Installed Packages
kernel-core.x86_64                      4.0.3-300.fc22                @System
kernel-core.x86_64                      4.0.4-300.fc22                @System
kernel-core.x86_64                      4.0.4-301.fc22                @System
kernel-headers.x86_64                   4.0.4-301.fc22                @System
kernel-modules.x86_64                   4.0.3-300.fc22                @System
kernel-modules.x86_64                   4.0.4-300.fc22                @System
kernel-modules.x86_64                   4.0.4-301.fc22                @System

Desde la salida determine que paquetes necesitan ser descargados para la actualización del kernel. Para un sistema de procesador único el único paquete requerido es el paquete kernel. Vea en Visión General de los Paquetes de Kernel descripciones de los diferentes paquetes.

Descargar el Kernel Actualizado

Hay diversas maneras de determinar si hay un kernel actualizado disponible para el sistema.

  • Por medio del Sistema de Actualización de Fedora — Descarga e instala los paquetes RPM del kernel. Para más información vea https://bodhi.fedoraproject.org/.

  • Por medio de DNF usando check-update:

dnf check-update --enablerepo=updates-testing

Para instalar el kernel manualmente, continúe a Llevar a Cabo la Actualización.

Llevar a Cabo la Actualización

Después de recuperar todos los paquetes necesarios, es el momento de actualizar el kernel existente.

Mantenga el kernel viejo cuando lleve a cabo la actualización

Se recomienda encarecidamente mantener el kernel antiguo por si hay problemas con el nuevo kernel.

En el símbolo del sistema cambie al directorio que contiene los paquetes RPM del kernel. Utilice el argumento -i con el comando rpm para mantener el kernel viejo. No use la opción -U, puesto que escribe encima del kernel instalado, lo que crea problemas en el gestor de arranque. Por ejemplo:

~]# rpm -ivh kernel-kernel_version.arch.rpm

El siguiente paso es verificar que se haya creado la imagen de disco RAM inicial. Vea detalles en Verificar la Imagen de Disco RAM Inicial.

Verificar la Imagen de Disco RAM Inicial

El trabajo de la imagen de disco RAM inicial es precargar los módulos del dispositivo de bloques, como para IDE, SCSI o RAID, de modo que se pueda acceder y montar el sistema de archivos raíz, donde normalmente residen. En sistemas Fedora 37, cada vez que se instala un nuevo kernel se instala usando el administrador de paquetes DNF, PackageKit o RPM, los scripts de instalación siempre llaman a la utilidad Dracut para crear un initramfs (imagen de disco RAM inicial).

En todas las arquitecturas distintas de IBM eServer System i (vea Verificar la Imagen de Disco RAM Inicial y el Kernel sobre IBM eServer System i), usted puede crear un initramfs ejecutando el comando dracut. Sin embargo, usted no necesita, normalmente, crear un initramfs manualmente: este paso se lleva a cabo automáticamente si el kernel y sus paquetes asociados son instalados o actualizados desde paquetes RPM distribuidos por The Fedora Project.

Sobre arquitecturas que usan el gestor de arranque GRUB 2, usted puede verificar que existe un initramfs que corresponde a la versión actual del kernel y está especificado correctamente en el archivo de configuración /boot/grub2/grub.cfg mediante el siguiente procedimiento:

Verificar la Imagen de Disco RAM Inicial
  1. Como root, liste los contenido en el directorio /boot/ y encuentre el kernel (vmlinuz-kernel_version) y el initramfs-kernel_version con el último (el más reciente) número de versión:

    Ejemplo 1. Asegurar que las versiones de kernel e initramfs coinciden
    ~]# ls /boot/
    config-3.17.4-302.fc21.x86_64
    config-3.17.6-300.fc21.x86_64
    config-3.17.7-300.fc21.x86_64
    efi
    elf-memtest86+-5.01
    extlinux
    grub2
    initramfs-0-rescue-db90b4e3715b42daa871351439343ca4.img
    initramfs-3.17.4-302.fc21.x86_64.img
    initramfs-3.17.6-300.fc21.x86_64.img
    initramfs-3.17.7-300.fc21.x86_64.img
    initrd-plymouth.img
    lost+found
    memtest86+-5.01
    System.map-3.17.4-302.fc21.x86_64
    System.map-3.17.6-300.fc21.x86_64
    System.map-3.17.7-300.fc21.x86_64
    vmlinuz-0-rescue-db90b4e3715b42daa871351439343ca4
    vmlinuz-3.17.4-302.fc21.x86_64
    vmlinuz-3.17.6-300.fc21.x86_64
    vmlinuz-3.17.7-300.fc21.x86_64
    • tenemos tres kernels instalados (o, más correctamente, en el directorio /boot/ hay presentes tres archivos de kernel),

    • el último kernel es vmlinuz-3.17.7-300.fc21.x86_64, y

    • un archivo initramfs que coincide con nuestra versión de kernel, initramfs-3.17.7-300.fc21.x86_64.img, también existe.

      Los archivos initrd en el directorio /boot/ no son los mismos que los archivos initramfs

      En el directorio /boot/ usted podría encontrar diversos archivos initrd-kernel_versionkdump.img. Estos son archivos especiales creados por el mecanismo kdump con propósitos de depuración del kernel, no son usados para el arranque del sistema y pueden ser ignorados con seguridad. Para más información sobre kdump, vea la Guía de Volcado de Caídas de Red Hat Enterprise Linux 7.

  2. (Opcional) Si su archivo initramfs-kernel_version no coincide con la versión del último kernel en /boot o en otras situaciones concretas, puede necesitar generar un archivo initramfs con la utilidad Dracut. Simplemente llamando a dracut como root sin opciones causa generar un archivo initramfs en el directorio /boot/ para el último kernel presente en ese directorio:

    ~]# dracut

    Debe usar la opción --force si desea que dracut escriba sobre un initramfs existente (por ejemplo, si su initramfs se ha corrompido). De otro modo dracut rehusará escribir sobre el archivo initramfs existente:

    ~]# dracut
    F: Will not override existing initramfs (/boot/initramfs-3.17.7-300.fc21.x86_64.img) without --force

    Puede crear un initramfs en el directorio en que se encuentre llamando a dracut initramfs_name kernel_version, por ejemplo:

    ~]# dracut "initramfs-$(uname -r).img" $(uname -r)

    Si necesita especificar módulos de kernel específicos a ser cargados, añada los nombres de esos módulos (menos cualquier sufijo de nombre de archivo como .ko) entre paréntesis en la directiva add_dracutmodules="module more_modules" del archivo de configuración /etc/dracut.conf. Puede listar los contenidos del archivo imagen initramfs creado por dracut usando el comando lsinitrd initramfs_file:

    ~]# lsinitrd /boot/initramfs-3.17.7-300.fc21.x86_64.img
    Image: /boot/initramfs-3.17.7-300.fc21.x86_64.img: 18M
    ========================================================================
    Version: dracut-038-31.git20141204.fc21
    [output truncated]

    Vea página de manual man dracut y la página de manual man dracut.conf para más información sobre las opciones y utilización.

  3. Examine el archivo de configuración`/boot/grub2/grub.cfg` para asegurar que existe un archivo initramfs-kernel_version.img para la versión del kernel que está arrancando. Por ejemplo:

    ~]# grep initramfs /boot/grub2/grub.cfg
    	initrd16 /initramfs-3.17.7-300.fc21.x86_64.img
    	initrd16 /initramfs-3.17.6-300.fc21.x86_64.img
    	initrd16 /initramfs-3.17.4-302.fc21.x86_64.img
    	initrd16 /initramfs-0-rescue-db90b4e3715b42daa871351439343ca4.img

    Vea en Verificar el Cargador de Arranque más información sobre como leer y actualizar el archivo /boot/grub2/grub.cfg.

Verificar la Imagen de Disco RAM Inicial y el Kernel sobre un IBM eServer System i

Sobre máquinas IBM eServer System i, los archivos de disco RAM inicial y kernel están combinados en un único archivo, que se crea con el comando addRamDisk. Este paso se lleva a cabo automáticamente si el kernel y sus paquetes asociados son instalados o actualizados desde paquetes RPM distribuidos por The Fedora Project; de este modo, no se necesita ejecutar manualmente. Para verificar que ha sido creado, ejecute como root el siguiente comando para asegurar que el archivo`/boot/vmlinitrd-kernel_version` ya existe:

ls -l /boot/

kernel_version debería coincidir con la versión del kernel acabada de instalar.

Verificar el Cargador de Arranque

Cuando instala un kernel usando rpm, el paquete del kernel crea una entrada en el archivo de configuración del cargador de arranque para este nuevo kernel. Sin embargo, rpm no configura el nuevo kernel para arrancar como kernel predeterminado. Usted debe hacer esto manualmente cuando instale un nuevo kernel con rpm.

Es siempre recomendable hacer una doble comprobación del archivo de configuración del cargador de arranque después de instalar un nuevo kernel con rpm para asegurarse de que la configuración es la correcta. De lo contrario, el sistema podría no ser capaz de arrancar en Fedora apropiadamente. Si esto sucede, arranque el sistema con el medio de arranque creado anteriormente y vuelva a configurar el cargador de arranque.

En la siguiente tabla, encuentre la arquitectura de su sistema para determinar el cargador de arranque que usa y después pulse el enlace “Ver” para saltar a las instrucciones correctas de su sistema.

Table 1. Cargadores de Arranque por arquitectura
Arquitectura Cargador de Arranque Ver

x86

GRUB 2

Configurar el Cargador de Arranque GRUB 2

AMD AMD64 or Intel 64

GRUB 2

Configurar el Cargador de Arranque GRUB 2

IBM eServer System i

OS/400

Configurar el Cargador de Arranque OS/400

IBM eServer System p

YABOOT

Configurar el Cargador de Arranque YABOOT

IBM System z

z/IPL

Configurar el Cargador de Arranque GRUB 2

Fedora 37 se distribuye con GRUB 2, que lee su configuración del archivo /boot/grub2/grub.cfg. Este archivo es generado por la utilidad grub2-mkconfig en base a los kernels Linux ubicados en el directorio /boot, los archivos de plantilla ubicados en /etc/grub.d/ y los ajustes personales en el archivo /etc/default/grub y se actualiza automáticamente cada vez que instala un nuevo kernel desde un paquete RPM. Para actualizar este archivo de configuración manualmente, teclee lo siguiente en un símbolo del sistema como root:

grub2-mkconfig -o /boot/grub2/grub.cfg

Entre distintos fragmentos de código y directivas el archivo de configuración /boot/grub2/grub.cfg contiene uno o más bloques menuentry, cada uno representando una única entrada en el menú de arranque GRUB 2. Estos bloques empiezan con la palabra clave menuentry seguida de un título, una lista de opciones y corchetes de apertura y cierre. Cualquier cosa entre los corchetes de apertura y cierre debería tener sangría. Por ejemplo, los siguiente es un bloque menuentry de muestra para Fedora 21 con kernel Linux 3.17.6-300.fc21.x86_64:

menuentry 'Fedora (3.17.6-300.fc21.x86_64) 21 (Twenty One)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.17.4-301.fc21.x86_64-advanced-effee860-8d55-4e4a-995e-b4c88f9ac9f0' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  f19c92f4-9ead-4207-b46a-723b7a2c51c8
        else
          search --no-floppy --fs-uuid --set=root f19c92f4-9ead-4207-b46a-723b7a2c51c8
        fi
        linux16 /vmlinuz-3.17.6-300.fc21.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet LANG=en_US.UTF-8
        initrd16 /initramfs-3.17.6-300.fc21.x86_64.img
}

Cada bloque menuentry que representa un kernel Linux instalado contiene las directivas linux e initrd seguidas de la ruta al kernel y a la imagen initramfs`respectivamente. Si se ha creado una partición /boot separada, las rutas al kernel y la imagen initramfs son relativas a /boot`. En el ejemplo anterior, la línea initrd16 /initramfs-3.17.6-300.fc21.x86_64.img significa que la imagen initramfs está ubicada actualmente en /boot/initramfs-3.17.6-300.fc21.x86_64.img cuando el sistema de archivos raíz está montado lo mismo para la ruta del kernel.

El número de versión del kernel que se da en la línea linux /vmlinuz-kernel_version debe coincidir con el número de la versión de la imagen initramfs dada en la línea initrd /initramfs-kernel_version.img de cada bloque menuentry. Para más información sobre como verificar la imagen de disco RAM inicial, vea Verificar la Imagen de Disco Ram Inicial.

La directiva initrd en grub.cfg se refiere a una imagen initramfs

En los bloques menuentry, la directiva initrd debe apuntar a la ubicación (relativa al directorio /boot si está en una partición separada) del archivo initramfs correspondiente a la misma versión del kernel. Esta directiva se llama initrd porque la anterior herramienta que creaba las imágenes de disco RAM inicial, mkinitrd, creaba lo que era conocido como archivos initrd. La directiva grub.cfg continua con initrd para mantener la compatibilidad con otras herramientas. La convención de nomenclatura de archivos de los sistemas que utiliza la utilidad dracut para crear la imagen de disco RAM inicial es initramfs-kernel_version.img.

Para información sobre el uso de Dracut, vea Verificando la Imagen Inicial de Disco RAM.

Después de instalar un nuevo kernel con rpm, verifique que /boot/grub2/grub.cfg es correcto y reinicie el ordenador con el nuevo kernel. Asegúrese de que su hardware sea detectado observando el resultado del proceso de arranque. Si GRUB 2 presenta un error y es incapaz de arrancar en el nuevo kernel, con frecuencia lo más fácil es intentar arrancar con un kernel alternativo o más antiguo de modo que pueda corregir el problema. Alternativamente, use el medio de arranque que creo anteriormente para arrancar el sistema.

Hacer que se muestre el menú de inicio de GRUB 2

Si establece la opción GRUB_TIMEOUT en el archivo /etc/default/grub a 0, GRUB 2 no mostrará su lista de kernels de arranque cuando el sistema se inicia. Con el objetivo de visualizar esta lista cuando arranca, mantenga presionada cualquier tecla alfanumérica mientras e inmediatamente después de que se muestra la información de BIOS y GRUB 2 le presentará el menú GRUB.

Configurar el Cargador de Arranque OS/400

El archivo /boot/vmlinitrd-kernel-version se instala cuando usted actualiza el kernel. Sin embargo, debe usar el comando dd para configurar el sistema para que arranque con el nuevo kernel.

  1. Como root, envíe el comando cat /proc/iSeries/mf/side para determinar el lado predeterminado (A, B, o C).

  2. Como root, envíe el siguiente comando, donde kernel-version es la versión del nuevo kernel y side es el lado del comando anterior:

    dd if=/boot/vmlinitrd-kernel-version of=/proc/iSeries/mf/side/vmlinux bs=8k

Empiece a probar el nuevo kernel reiniciando el ordenador y viendo los mensajes para asegurarse de que el hardware es detectado apropiadamente.

Configurar el Cargador de Arranque YABOOT

El sistema IBM eServer System p usa YABOOT como su cargador de arranque. YABOOT usa /etc/aboot.conf como su archivo de configuración. Confirme que el archivo contiene una sección image con la misma versión del paquete kernel que acaba de instalar y asimismo para la imagen initramfs:

boot=/dev/sda1 init-message=Welcome to Fedora! Hit <TAB> for boot options
partition=2 timeout=30 install=/usr/lib/yaboot/yaboot delay=10 nonvram
image=/vmlinuz-2.6.32-17.EL
	 label=old
	 read-only
	 initrd=/initramfs-2.6.32-17.EL.img
	 append="root=LABEL=/"
image=/vmlinuz-2.6.32-19.EL
	 label=linux
	 read-only
	 initrd=/initramfs-2.6.32-19.EL.img
	 append="root=LABEL=/"

Observe que el valor predeterminado no está configurado para el nuevo kernel. El kernel en la primera imagen es el que arranca como predeterminado. Para cambiar el kernel predeterminado para arrancar o bien mueva la estrofa de la imagen a la primera de la lista o añada la directiva default y establezca la label de la estrofa de la imagen que contiene el nuevo kernel.

Empiece a probar el nuevo kernel reiniciando el ordenador y viendo los mensajes para asegurarse de que el hardware es detectado apropiadamente.