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
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)
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 afgrub.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
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
/bin/kernel-install
i stedet. Rediger dit svar for at inkludere disse oplysninger til fremtidig reference