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
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)
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 avgrub.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
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
/bin/kernel-install
istället. Redigera ditt svar för att inkludera denna information för framtida referens