Tilsvarer oppdateringsgrub for RHEL / Fedora / CentOS-systemer?

I Ubuntu (og jeg antar også i Debian) er det et systemskript som heter update-grub som automatisk utfører grub-mkconfig -o med riktig bane for grub-konfigurasjonsfilen.

Er det noen lignende kommando for Red Hat-baserte distribusjoner?

Hvis ikke, hvordan vet systemet hvor grub-konfigurasjonsfilen skal oppdateres når en ny kjerneversjon er installert?

Svar

Spesifikke handlinger som må skje når en RPM-pakke er installert eller fjernet er inkludert i selve RPM-pakken i forhåndsinstallasjon, etterinstallasjon, forhåndsinstallering og avinstallering seksjoner.

For hver installerte RPM-pakke kan du spørre RPM-databasen for de nøyaktige skriptene som er inkludert i kommandoen rpm:

rpm -q --scripts <package-name> 

Å kjøre den kommandoen på en kjernepakke for CentOS 6 returnerer blant annet:

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

Fra håndboken:

new-kernel-package – verktøy for å installere kjerneinstallasjon

Kommentarer

  • kjører samme kommando på Fedora 20 gir /bin/kernel-install i stedet. Rediger svaret ditt for å inkludere denne informasjonen for fremtidig referanse
  • Det er nettopp derfor jeg startet svaret mitt med trinnene som er nødvendige for å finne ut. Jeg tror det å spørre installasjonsskriptene sannsynligvis vil være ganske universelt i RPM-verdenen for å hjelpe deg med å forstå hvordan kjerneoppdateringen blir utført. På den måten vil svaret mitt tåle tidstesten mye bedre enn bare å navngi et verktøy / kommando / support-skript som du allerede har demonstrert er veldig frigjørings- og distribusjonsavhengig.
  • Ja @HBruijn ‘ har rett. Det ‘ er for mye variasjon i Fedora, RHEL og CentOS til å gi et enkelt svar, bedre for å vise hvordan du finner det.

Svar

Etter å ha analysert skriptene i Fedora, innser jeg at konfigurasjonsfilbanen leses fra symlinken /etc/grub2.conf . Den riktige grub2-mkconfig -linjen er således:

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

Som nevnt i kommentarene, kan det være /etc/grub2.cfg, eller /etc/grub2-efi.cfg på et UEFI-system. Egentlig kan begge koblingene være til stede samtidig og som peker på forskjellige steder . -e flagget til readlink vil feile hvis målfilen ikke eksisterer, men på systemet mitt eksisterte begge … Sjekk kommandoene dine Antar jeg.

Kommentarer

  • På CentOS 7 ser det ut til at lenkene er /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg ser ut til å være den godkjente måten i fedora-manualen
  • For flere CentOS 7-spesifikke grub-trinn, sjekk den offisielle wiki: wiki.centos.org/HowTos/Grub2
  • Hvis du har et UEFI-system, ‘ Jeg vil ha sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Jeg ser ikke noe poeng i å gjøre readlink

Svar

På Fedora bruker jeg:

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

fordi jeg kjører uten alternativ til readlink returnerer en relativ bane, og grub2-mkconfig gir en feil:

$ 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 bruker -e alternativ så at hvis symlink ikke løser til en fil som eksisterer, vises utdata på stdout, så jeg vet at noe gikk galt.

Fra man-siden for readlink:

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

Svar

I Fedora peker symlinkene /etc/grub2.cfg på BIOS-versjonen. På et UEFI-system, bruk:

$ 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 bruke 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, lagre endringene og lukk editoren med: wq!

Dette er hva du trenger å kjøre for å oppdatere grub i RedHat eller CentOS:

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

Svar

Per RedHat-dokumentasjon :

Endringer i /etc/default/grub krever ombygging av grub.cfg -filen som følger:

  • På BIOS- utfør følgende kommando som root:

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

  • På UEFI-baserte maskiner, utgiv følgende kommando som rot:

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

Svar

update-grub skriptet i Ubuntu er faktisk bare et stub for grub-mkconfig , og den kan tilpasses andre distribusjoner uten for mye smerte. Her er det i sin helhet:

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

Dette gjør effektivt det som anbefales i CentOS wiki , og i andre svar her – den eneste forskjellen er at du må endre grub til grub2 i kommandoen og utgangsbanen .

Svar

På Fedora 32:

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

Svar

Jobbet på CentOS Linux 8 –

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

Min demo

Svar

I Fedora 33-retningslinjene gir det følgende etter endring av Grub

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

Og ja jeg vet at dette innlegget er 6 år gammelt

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *