Svarer til opdateringsgrub til RHEL / Fedora / CentOS-systemer?

I Ubuntu (og jeg antager også i Debian) er der et system script kaldet update-grub som automatisk udfører grub-mkconfig -o med den korrekte sti til grub-konfigurationsfilen.

Er der nogen lignende kommando til Red Hat-baserede distributioner?

Hvis ikke, hvordan ved systemet, hvor grubkonfigurationsfilen skal opdateres, når der installeres en ny kerneversion?

Svar

Specifikke handlinger, der skal ske, når en RPM-pakke installeres eller fjernes, er inkluderet i selve RPM-pakken i præinstallation, postinstallation, preinstallation og postinstallation sektioner.

For hver installeret RPM-pakke kan du forespørge RPM-databasen for de nøjagtige scripts, der er inkluderet i rpm kommandoen:

rpm -q --scripts <package-name> 

At køre kommandoen på en kernepakke til CentOS 6 returnerer blandt andet:

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

Fra manualen:

new-kernel-package – værktøj til script-kerneinstallation

Kommentarer

  • kører den samme kommando på Fedora 20 giver /bin/kernel-install i stedet. Rediger dit svar for at inkludere disse oplysninger til fremtidig reference
  • Det er netop derfor, jeg startede mit svar med de nødvendige trin for at finde ud af det. Jeg tror, at forespørgsel om installationsskripter sandsynligvis vil være ret universel i RPM-verdenen for at hjælpe dig med at forstå, hvordan kerneopdateringen udføres. På den måde kan mit svar modstå tidstesten meget bedre end kun at navngive et værktøj / kommando / support-script, som du allerede har vist, er meget frigivelses- og distributionsafhængigt.
  • Ja @HBruijn ‘ har ret. Der er ‘ for meget variation over Fedora, RHEL og CentOS til at give et enkelt svar, bedre for at vise, hvordan man finder det.

Svar

Efter at have analyseret scripts i Fedora, indser jeg, at konfigurationsfilstien læses fra symlinket /etc/grub2.conf . Den korrekte grub2-mkconfig linje er således:

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

Som bemærket i kommentarerne kan det være /etc/grub2.cfg eller /etc/grub2-efi.cfg på et UEFI-system. Faktisk kan begge links være til stede på samme tid og peger på forskellige placeringer . -e flag til readlink fejler, hvis målfilen ikke findes, men på mit system eksisterede begge … Kontroller dine kommandoer Antager jeg.

Kommentarer

  • På CentOS 7 synes linkene at være /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg synes at være den godkendte måde i fedora-manualen
  • For flere CentOS 7-specifikke grub-trin, se den officielle wiki: wiki.centos.org/HowTos/Grub2
  • Hvis du har et UEFI-system, ‘ Jeg vil have sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Jeg ser ingen mening i at udføre readlink

Svar

På Fedora bruger jeg:

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

fordi udførelse uden mulighed for readlink returnerer en relativ sti, og grub2-mkconfig giver en fejl:

$ 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 

Jeg bruger -e mulighed så at hvis symlinket ikke løser en eksisterende fil, vises output på stdout, så jeg ved, at der gik noget galt.

Fra mandsiden til readlink:

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

Svar

I Fedora viser /etc/grub2.cfg symlinkpunkterne i BIOS-versionen. På et UEFI-system skal du bruge:

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

I CentOS:

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

Generelt, du kan bruge i stedet:

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

Se 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

Svar

rediger grub-fil med vi eller vim, gem ændringer og luk editor med: wq!

Dette er hvad du skal køre for at opdatere grub i RedHat eller CentOS:

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

Svar

Per RedHat-dokumentation :

Ændringer til /etc/default/grub kræver genopbygning af grub.cfg -filen som følger:

  • På BIOS- baserede maskiner, udsted følgende kommando som root:

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

  • På UEFI-baserede maskiner skal du udstede følgende kommando som rod:

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

Svar

update-grub scriptet i Ubuntu er faktisk bare et stub til grub-mkconfig , og den kan tilpasses til andre distroer uden for meget smerte. Her er det i sin helhed:

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

Dette gør effektivt det, der anbefales i CentOS wiki , og i andre svar her – den eneste forskel er, at du skal ændre grub til grub2 i kommandoen og outputstien .

Svar

På Fedora 32:

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

Svar

Arbejdet på CentOS Linux 8 –

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

Min demo

Svar

I Fedora 33-retningslinjerne giver det følgende efter ændring af Grub

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

Og ja jeg ved, at dette indlæg er 6 år gammelt

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *