Ekvivalent aktualizace-grub pro systémy RHEL / Fedora / CentOS?

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

  • spuštění stejného příkazu na Fedoře 20 místo toho přináší /bin/kernel-install. Upravte svou odpověď tak, aby zahrnovala tyto informace pro budoucí použití.
  • Přesně proto jsem zahájil svoji odpověď kroky potřebnými k jejich zjištění. Myslím, že dotazování na instalační skripty bude pravděpodobně ve světě RPM docela univerzální, protože vám pomůže pochopit, jak probíhá aktualizace jádra. Tímto způsobem moje odpověď vydrží zkoušku času mnohem lépe než jen pojmenování skriptu nástroje / příkazu / podpory, který jste již prokázali, je velmi závislý na vydání a distribuci.
  • Jo @HBruijn ‚ má pravdu. ‚ Ve Fedoře, RHEL a CentOS je příliš velká variabilita na to, aby poskytla jedinou odpověď. Lepší je ukázat, jak ji najít.

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) 

Viz 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

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í souboru grub.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 

Moje ukázka

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *