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
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)
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 avgrub.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
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
/bin/kernel-install
i stedet. Rediger svaret ditt for å inkludere denne informasjonen for fremtidig referanse