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
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)
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 archivogrub.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
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
/bin/kernel-install
en su lugar. Edite su respuesta para incluir esta información para referencia futura.