V Ubuntu (a myslím, že i v Debianu) existuje systémový skript s názvem update-grub
, který automaticky spustí grub-mkconfig -o
se správnou cestou ke konfiguračnímu souboru grub.
Existuje nějaký podobný příkaz pro distribuce založené na Red Hat?
Pokud ne, jak ví systém, kde je konfigurační soubor grub, který se má aktualizovat, když je nainstalována nová verze jádra?
odpověď
konkrétní akce, které musí se stát, když je balíček RPM nainstalován nebo odstraněn, jsou zahrnuty v samotném balíčku RPM v předinstalaci, po instalaci, před odinstalací a po odinstalaci sekce.
U každého nainstalovaného balíčku RPM můžete vyhledávat v databázi RPM přesné skripty obsažené v příkazu rpm
:
rpm -q --scripts <package-name>
Spuštění tohoto příkazu na balíčku jádra pro CentOS 6 se vrátí mimo jiné:
postinstall scriptlet (using /bin/sh): <snip> /sbin/new-kernel-pkg --package kernel --install 2.6.32-431.17.1.el6.x86_64 || exit $?
Z příručky:
new-kernel-package
– nástroj na instalaci jádra skriptu
Komentáře
Odpověď
Po analýze skriptů ve Fedoře si uvědomuji, že cesta ke konfiguračnímu souboru se čte ze symbolického odkazu /etc/grub2.conf
. Správný grub2-mkconfig
řádek je tedy:
grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)"
Jak je uvedeno v komentářích, může to být /etc/grub2.cfg
nebo /etc/grub2-efi.cfg
v systému UEFI. Ve skutečnosti mohou být oba odkazy přítomny současně a odkazující na různá umístění . Příznak -e
k readlink
vyprší, pokud cílový soubor neexistuje, ale v mém systému oba existovaly … Zkontrolujte své příkazy Myslím, že.
Komentáře
- Na CentOS 7 se odkazy zdají být
/etc/grub2.cfg
- grub2-mkconfig –output = / boot / grub2 / grub.cfg se zdá být schváleným způsobem v příručce fedora
- Další kroky grub specifické pro CentOS 7 najdete na oficiální wiki: wiki.centos.org/HowTos/Grub2
- Pokud máte systém UEFI, ‚ Budu chtít
sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
- Nevidím smysl dělat readlink
Odpovědět
Na Fedoře používám:
grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)"
protože provádím bez možnosti readlink
vrací relativní cestu a grub2-mkconfig
dává chybu:
$ 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
Používám -e
možnost ano že pokud symbolický odkaz nevyřeší existující soubor, výstup se zobrazí na stdout, takže vím, že se něco pokazilo.
Na stránce manuálu pro readlink:
-e, --canonicalize-existing canonicalize by following every symlink in every component of the given name recursively, all components must exist
Odpověď
Ve Fedoře odkazuje symbolický odkaz /etc/grub2.cfg na verzi systému BIOS. V systému UEFI použijte:
$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
V CentOS:
$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Obecně: místo toho můžete použít:
$ sudo grub2-mkconfig -o $(readlink -f /etc/grub2-efi.cfg)
Odpovědět
upravit soubor grub pomocí vi
nebo vim
, uložte změny a zavřete editor pomocí: wq!
To je to, co musíte spustit, abyste aktualizovali grub v RedHat nebo CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Odpovědět
Podle dokumentace RedHat :
Změny
/etc/default/grub
vyžadují znovu sestavení souborugrub.cfg
takto:
V systému BIOS- na bázi počítačů zadejte jako root následující příkaz:
~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Na počítačích založených na UEFI vydejte následující příkaz jako root:
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Odpověď
Skript update-grub
v Ubuntu je ve skutečnosti jen útržek pro grub-mkconfig
a lze jej bez přílišné bolesti přizpůsobit jiným distribucím. Zde je to celé:
#!/bin/sh set -e exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
Tím se efektivně provádí to, co se doporučuje ve CentOS wiki a v dalších odpovědích zde – jediný rozdíl spočívá v tom, že v příkazu a výstupní cestě musíte změnit grub
na grub2
.
Odpověď
Ve Fedoře 32:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
odpověď
Pracoval na CentOS Linux 8 –
sudo grub2-mkconfig --output=/boot/grub2/grub.cfg
Odpověď
V pokynech pro Fedoru 33 poskytuje po změně Grub následující:
$ sudo grub2-mkconfig --output=/boot/grub2/grub.cfg
A ano, vím, že tento příspěvek je starý 6 let
/bin/kernel-install
. Upravte svou odpověď tak, aby zahrnovala tyto informace pro budoucí použití.