Motsvarar uppdateringsgrub för RHEL / Fedora / CentOS-system?

I Ubuntu (och jag antar också i Debian) finns det ett systemskript som heter update-grub som kör automatiskt grub-mkconfig -o med rätt sökväg för konfigurationsfilen för grub.

Finns det något liknande kommando för Red Hat-baserade distributioner?

Om inte, hur vet systemet var grubkonfigurationsfilen ska uppdateras när en ny kärnversion installeras?

Svar

Specifika åtgärder som måste hända när ett RPM-paket installeras eller tas bort ingår i RPM-paketet i förinstallation, efterinstallation, förinstallation och efterinstallation avsnitt.

För varje installerat RPM-paket kan du fråga RPM-databasen för exakta skript som ingår i rpm -kommandot:

rpm -q --scripts <package-name> 

Att köra kommandot på ett kärnpaket för CentOS 6 returnerar bland annat:

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

Från handboken:

new-kernel-package – verktyg för skriptinstallation av kärnan

Kommentarer

  • kör samma kommando på Fedora 20 ger /bin/kernel-install istället. Redigera ditt svar för att inkludera denna information för framtida referens
  • Det är just därför jag började mitt svar med de steg som behövs för att ta reda på det. Jag tror att frågan om installationsskript sannolikt är ganska universell i RPM-världen för att hjälpa dig att förstå hur kärnuppdateringen genomförs. På det sättet kommer mitt svar att klara tidstestet mycket bättre än att bara namnge ett verktyg / kommando / support-skript som du redan har visat är mycket släppnings- och distributionsberoende. ”>

har rätt. Det finns ’ för mycket variation över Fedora, RHEL och CentOS för att ge ett enda svar, bättre för att visa hur man hittar det.

Svar

Efter att ha analyserat skript i Fedora, inser jag att konfigurationsfilens sökväg läses från symlink /etc/grub2.conf . Den korrekta grub2-mkconfig raden är alltså:

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

Som påpekas i kommentarerna kan det vara /etc/grub2.cfg, eller /etc/grub2-efi.cfg på ett UEFI-system. Egentligen kan båda länkarna vara närvarande samtidigt och pekar på olika platser . -e -flaggan till readlink kommer att ta fel om målfilen inte finns, men på mitt system fanns båda … Kontrollera dina kommandon Antar jag.

Kommentarer

  • På CentOS 7 verkar länkarna vara /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg verkar vara det godkända sättet i fedora-manualen
  • För mer CentOS 7-specifika grubsteg, kolla in den officiella wiki: wiki.centos.org/HowTos/Grub2
  • Om du har ett UEFI-system ’ Jag vill ha sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Jag ser ingen mening med att göra läslänk

Svar

På Fedora använder jag:

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

eftersom det körs utan alternativ till readlink returnerar en relativ sökväg och grub2-mkconfig ger ett fel:

$ 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 

Jag använder -e alternativet så att om symlänken inte löser sig till en fil som finns, visas utdata på stdout så att jag vet att något gick fel.

Från man-sidan för readlink:

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

Svar

I Fedora, /link / grub2.cfg symlinkpunkter på BIOS-versionen. På ett UEFI-system, använd:

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

I CentOS:

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

Generellt, du kan använda istället:

$ 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

redigera grub-fil med vi eller vim, spara ändringar och stäng redigeraren med: wq!

Det här är vad du behöver köra för att uppdatera grub i RedHat eller CentOS:

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

Svar

Per RedHat-dokumentation :

Ändringar av /etc/default/grub kräver ombyggnad av grub.cfg -filen enligt följande:

  • På BIOS- baserade maskiner, utfärda följande kommando som rot:

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

  • På UEFI-baserade maskiner, ge ut följande kommando som root:

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

Svar

update-grub -skriptet i Ubuntu är faktiskt bara ett stub för grub-mkconfig , och den kan anpassas till andra distributioner utan för mycket smärta. Här är det i sin helhet:

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

Detta gör effektivt det som rekommenderas i CentOS wiki , och i andra svar här – den enda skillnaden är att du måste ändra grub till grub2 i kommandot och utgångsvägen .

Svar

På Fedora 32:

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

Svar

Fungerade på CentOS Linux 8 –

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

Min demo

Svar

I Fedora 33-riktlinjerna ger det följande efter att ha ändrat Grub

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

Och ja jag vet att det här inlägget är 6 år gammalt

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *