¿Equivalente de update-grub para sistemas RHEL / Fedora / CentOS?

En Ubuntu (y supongo que también en Debian) hay un script del sistema llamado update-grub que ejecuta automáticamente grub-mkconfig -o con la ruta correcta para el archivo de configuración de grub.

¿Existe algún comando similar para las distribuciones basadas en Red Hat?

Si no es así, ¿cómo ¿Sabe el sistema dónde está el archivo de configuración de grub para actualizar cuando se instala una nueva versión del kernel?

Respuesta

Acciones específicas que debe suceder cuando se instala o elimina un paquete RPM dentro del paquete RPM en preinstalación, posinstalación, predesinstalación y posdesinstalación secciones.

Para cada paquete RPM instalado, puede consultar en la base de datos RPM los scripts exactos que se incluyen con el comando rpm:

rpm -q --scripts <package-name> 

Ejecutar ese comando en un paquete de kernel para CentOS 6 devuelve, entre otros:

postinstall scriptlet (using /bin/sh): <snip> /sbin/new-kernel-pkg --package kernel --install 2.6.32-431.17.1.el6.x86_64 || exit $? 

Del manual:

new-kernel-package – herramienta para la instalación del kernel de script

Comentarios

  • ejecutando el mismo comando en Fedora 20 produce /bin/kernel-install en su lugar. Edite su respuesta para incluir esta información para referencia futura.
  • Es exactamente por eso que comencé mi respuesta con los pasos necesarios para averiguarlo. Creo que consultar los scripts de instalación probablemente sea bastante universal en el mundo de RPM para ayudarlo a comprender cómo se realiza la actualización del kernel. De esa manera, mi respuesta resistirá la prueba del tiempo mucho mejor que solo nombrar una herramienta / comando / script de soporte que ya demostró que depende mucho de la versión y la distribución.
  • Sí @HBruijn ‘ s correcto. Hay ‘ demasiada variabilidad entre Fedora, RHEL y CentOS para proporcionar una única respuesta, mejor para mostrar cómo encontrarla.

Respuesta

Después de analizar los scripts en Fedora, me doy cuenta de que la ruta del archivo de configuración se lee desde el enlace simbólico /etc/grub2.conf . La línea grub2-mkconfig correcta es así:

grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)" 

Como se indica en los comentarios, podría ser /etc/grub2.cfg o /etc/grub2-efi.cfg en un sistema UEFI. En realidad, ambos enlaces pueden estar presentes al mismo tiempo y apuntando a diferentes ubicaciones . La -e marca a readlink generará un error si el archivo de destino no existe, pero en mi sistema ambos existían … Verifique sus comandos , Supongo.

Comentarios

  • En CentOS 7, los enlaces parecen ser /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg parece ser la forma aprobada en el manual de fedora
  • Para obtener más pasos grub específicos de CentOS 7, consulte la wiki oficial: wiki.centos.org/HowTos/Grub2
  • Si tiene un sistema UEFI, ‘ querré sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • No veo ningún punto en hacer readlink

Responder

En Fedora utilizo:

grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)" 

porque se ejecuta sin opción a readlink devuelve una ruta relativa y grub2-mkconfig da un error:

$ ls -l /etc/grub2.cfg lrwxrwxrwx. 1 root root 22 Dec 10 2015 /etc/grub2.cfg -> ../boot/grub2/grub.cfg $ readlink /etc/grub2.cfg ../boot/grub2/grub.cfg $ sudo grub2-mkconfig -o "$(readlink /etc/grub2.cfg)" /usr/sbin/grub2-mkconfig: line 244: ../boot/grub2/grub.cfg.new: No such file or directory 

Yo uso el -e opción que si el enlace simbólico no se resuelve en un archivo que existe, la salida se muestra en la salida estándar, así que sé que algo salió mal.

Desde la página de manual de readlink:

 -e, --canonicalize-existing canonicalize by following every symlink in every component of the given name recursively, all components must exist 

Respuesta

En Fedora, el enlace simbólico /etc/grub2.cfg apunta a la versión del BIOS. En un sistema UEFI, use:

$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg 

En CentOS:

$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg 

Generalmente, podría usar en su lugar:

$ sudo grub2-mkconfig -o $(readlink -f /etc/grub2-efi.cfg) 

Consulte https://docs.fedoraproject.org/en-US/fedora/f27/system-administrators-guide/kernel-module-driver-configuration/Working_with_the_GRUB_2_Boot_Loader/index.html#sec-Editing_a_Menu_Entry

Responder

editar el archivo grub con vi o vim, guarde los cambios y cierre el editor con: wq!

Esto es lo que necesita ejecutar para actualizar grub en RedHat o CentOS:

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

Respuesta

Según la documentación de RedHat :

Los cambios en /etc/default/grub requieren la reconstrucción del archivo grub.cfg de la siguiente manera:

  • En BIOS- máquinas basadas en, emita el siguiente comando como root:

    ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

  • En máquinas basadas en UEFI, emita el siguiente comando como root:

    ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Respuesta

El script update-grub en Ubuntu es en realidad solo un stub para grub-mkconfig , y se puede adaptar a otras distribuciones sin demasiado dolor. Aquí está en su totalidad:

#!/bin/sh set -e exec grub-mkconfig -o /boot/grub/grub.cfg "$@" 

Esto efectivamente hace lo que se recomienda en la wiki de CentOS , y en otras respuestas aquí, la única diferencia es que debe cambiar grub a grub2 en el comando y la ruta de salida .

Respuesta

En Fedora 32:

 sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg  

Respuesta

Trabajó en CentOS Linux 8 –

sudo grub2-mkconfig --output=/boot/grub2/grub.cfg 

Mi demostración

Respuesta

En las Pautas de Fedora 33 se da lo siguiente después de cambiar Grub

$ sudo grub2-mkconfig --output=/boot/grub2/grub.cfg

Y sí, sé que esta publicación tiene 6 años

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *