Odpowiednik update-grub dla systemów RHEL / Fedora / CentOS?

W Ubuntu (i chyba także w Debianie) jest skrypt systemowy o nazwie update-grub, który automatycznie wykonuje grub-mkconfig -o z poprawną ścieżką do pliku konfiguracyjnego GRUBA.

Czy istnieje podobne polecenie dla dystrybucji opartych na Red Hacie?

Jeśli nie, w jaki sposób czy system wie, gdzie jest plik konfiguracyjny grub do aktualizacji po zainstalowaniu nowej wersji jądra?

Odpowiedź

Konkretne działania, które musi się zdarzyć, gdy pakiet RPM jest instalowany lub usuwany, są zawarte w samym pakiecie RPM w fazie przedinstalacyjnej, poinstalacyjnej, przed odinstalowaniem i po odinstalowaniu Sekcje.

Dla każdego zainstalowanego pakietu RPM możesz wysłać zapytanie do bazy danych RPM o dokładne skrypty zawarte w poleceniu rpm:

rpm -q --scripts <package-name> 

Uruchomienie tego polecenia na pakiecie jądra dla CentOS 6 zwraca między innymi:

postinstall scriptlet (using /bin/sh): <snip> /sbin/new-kernel-pkg --package kernel --install 2.6.32-431.17.1.el6.x86_64 || exit $? 

Z instrukcji:

new-kernel-package – narzędzie do instalacji jądra skryptów

Komentarze

  • uruchamianie tego samego polecenia w Fedorze 20 zamiast tego daje /bin/kernel-install. Zmień swoją odpowiedź, tak aby zawierała te informacje do wykorzystania w przyszłości.
  • Właśnie dlatego zacząłem odpowiadać od kroków potrzebnych do sprawdzenia. Myślę, że odpytywanie skryptów instalacyjnych może być dość uniwersalne w świecie RPM, pomagając ci zrozumieć, w jaki sposób odbywa się aktualizacja jądra. W ten sposób moja odpowiedź wytrzyma próbę czasu znacznie lepiej niż samo nazwanie narzędzia / polecenia / skryptu wsparcia, które już zademonstrowałeś, jest bardzo zależne od wydania i dystrybucji.
  • Tak @HBruijn ' ma rację. ' jest zbyt duża zmienność w Fedorze, RHEL i CentOS, aby udzielić jednej odpowiedzi, lepiej pokazać, jak ją znaleźć.

Odpowiedź

Po przeanalizowaniu skryptów w Fedorze zdaję sobie sprawę, że ścieżka do pliku konfiguracyjnego jest odczytywana z linku symbolicznego /etc/grub2.conf . Prawidłowa linia grub2-mkconfig to:

grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)" 

Jak zauważono w komentarzach, może to być /etc/grub2.cfg lub /etc/grub2-efi.cfg w systemie UEFI. W rzeczywistości oba linki mogą być obecne w tym samym czasie i wskazywać na różne lokalizacje . Flaga -e do readlink spowoduje błąd, jeśli plik docelowy nie istnieje, ale w moim systemie oba istnieją … Sprawdź swoje polecenia Chyba.

Komentarze

  • W CentOS 7 linki wydają się być /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg wydaje się być zatwierdzonym sposobem w podręczniku Fedory
  • Więcej informacji o krokach grubych specyficznych dla CentOS 7 znajdziesz na oficjalnej wiki: wiki.centos.org/HowTos/Grub2
  • Jeśli masz system UEFI, ' Chcę sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Nie widzę sensu robienia readlink

Odpowiedz

W Fedorze używam:

grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)" 

ponieważ wykonuję bez opcji readlink zwraca ścieżkę względną, a grub2-mkconfig zwraca błąd:

$ 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 

Używam -e tak że jeśli dowiązanie symboliczne nie „t rozwiązuje się do istniejącego pliku, wyjście jest wyświetlane na standardowym wyjściu, więc wiem, że coś poszło nie tak.

Ze strony podręcznika readlink:

 -e, --canonicalize-existing canonicalize by following every symlink in every component of the given name recursively, all components must exist 

Odpowiedź

W Fedorze dowiązanie symboliczne /etc/grub2.cfg wskazuje na wersję BIOS. W systemie UEFI użyj:

$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg 

W CentOS:

$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg 

Ogólnie możesz zamiast tego użyć:

$ sudo grub2-mkconfig -o $(readlink -f /etc/grub2-efi.cfg) 

Zobacz 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

Odpowiedź

edytuj plik grub za pomocą vi lub vim, zapisz zmiany i zamknij edytor za pomocą: wq!

Oto, co musisz uruchomić, aby zaktualizować grub w RedHacie lub CentOS:

grub2-mkconfig -o /boot/grub2/grub.cfg 

Odpowiedź

Zgodnie z dokumentacją RedHat :

Zmiany w /etc/default/grub wymagają przebudowania pliku grub.cfg w następujący sposób:

  • W systemie BIOS- na komputerach opartych na systemie UEFI wydaj następującą komendę jako root:

    ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

  • Na komputerach z systemem UEFI następujące polecenie jako root:

    ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Odpowiedź

Skrypt update-grub w Ubuntu to w rzeczywistości tylko stub dla grub-mkconfig i można go bez problemu zaadaptować do innych dystrybucji. Oto całość:

#!/bin/sh set -e exec grub-mkconfig -o /boot/grub/grub.cfg "$@" 

To skutecznie robi to, co jest zalecane w CentOS wiki iw innych odpowiedziach tutaj – jedyna różnica polega na tym, że musisz zmienić grub na grub2 w poleceniu i ścieżce wyjściowej .

Odpowiedź

W Fedorze 32:

 sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg  

Odpowiedź

Pracowałem na CentOS Linux 8 –

sudo grub2-mkconfig --output=/boot/grub2/grub.cfg 

Moje demo

Odpowiedź

W wytycznych Fedory 33 po zmianie Gruba

$ sudo grub2-mkconfig --output=/boot/grub2/grub.cfg

I tak, wiem, że ten post ma 6 lat

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *