Еквівалентна версія оновлення для систем RHEL / Fedora / CentOS?


36

У Ubuntu (і, мабуть, і в Debian) є системний скрипт, update-grubякий називається автоматично, виконується grub-mkconfig -oз правильним шляхом для файлу конфігурації grub.

Чи є якась подібна команда для дистрибутивів на основі Red Hat?

Якщо ні, то як система знає, де слід встановити файл конфігурації grub, коли встановлена ​​нова версія ядра?

Відповіді:


14

Конкретні дії, які повинні відбутися під час встановлення або вилучення пакету RPM, включаються до самого пакету RPM у розділах перед-встановлення, після встановлення, попереднього видалення та після видалення.

Для кожного встановленого пакету RPM ви можете запитувати в базі даних RPM точні сценарії, що входять до rpmкоманди:

rpm -q --scripts <package-name>

Запуск цієї команди на пакеті ядра для CentOS 6 повертається серед інших:

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

З посібника:

new-kernel-package - інструмент для встановлення ядра скрипта


2
/bin/kernel-installзамість цього виконується та сама команда Fedora 20 . Будь ласка, відредагуйте свою відповідь, щоб включити цю інформацію для подальшої довідки
pqnet

3
Саме тому я почав свою відповідь з кроків, необхідних для з'ясування. Я думаю, що запит сценаріїв установки, ймовірно, буде досить універсальним у світі RPM, що допоможе вам зрозуміти, як здійснюється оновлення ядра. Таким чином, моя відповідь витримає тест часу набагато краще, ніж лише іменування інструменту / команди / підтримки-скрипту, який ви вже продемонстрували, дуже залежить від випуску та розповсюдження.
HBruijn

3
Так @ HBruijn право. У Fedora, RHEL та CentOS є занадто велика мінливість, щоб дати єдину відповідь, краще показати, як її знайти.
slm

24

Проаналізувавши сценарії у Fedora, я зрозумію, що шлях файлу конфігурації зчитується із симпосилання /etc/grub2.conf. Правильний grub2-mkconfigрядок такий:

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

Як зазначається в коментарях, це може бути /etc/grub2.cfgабо /etc/grub2-efi.cfgсистема UEFI. Насправді обидва посилання можуть бути присутніми одночасно і вказувати на різні місця . -eПрапор readlinkвидасть помилку , якщо цільовий файл не існує, але в моїй системі і існував ... Перевірте ваші команди, я думаю.


5
На CentOS 7 посилання, схоже, є/etc/grub2.cfg
Антон

6
grub2-mkconfig --output = / boot / grub2 / grub.cfg, здається, затверджений спосіб у посібнику по Fedora
Кендрік,

1
Щоб дізнатись більше про кроки, що стосуються CentOS 7, виберіть
sshow

2
Якщо у вас є система UEFI, вам захочетьсяsudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
Крейг Рінгер

10

У Fedora я використовую:

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

тому що виконання без жодного варіанту readlinkповернення відносного шляху та grub2-mkconfigпомилка:

$ 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

Я використовую -eпараметр, щоб, якщо symlink не вирішив файл, який існує, вихід виводиться на stdout, щоб я знав, що щось пішло не так.

На головній сторінці для readlink:

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

6

У Fedora /etc/grub2.cfg символьна посилання вказує на версію BIOS. У системі UEFI використовуйте:

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

У CentOS:

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

Як правило, ви можете використовувати замість цього:

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

Див. Https://docs.fedoraproject.org/f27/system-administrators-guide/kernel-module-driver-configuration/Working_with_the_GRUB_2_Boot_Loader.html#sec-Editing_a_Menu_Entry


2

редагуйте файл grub за допомогою viабо vim, збережіть зміни та закрийте редактор за допомогою: wq!

Ось що потрібно запустити, щоб оновити grub в RedHat або CentOS:

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

0

update-grubСкрипт в Ubuntu насправді просто заглушкаgrub-mkconfig , і вона може бути адаптований до інших дистрибутивів , не надто багато болю. Ось вона у всій повноті:

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

Це фактично робить те , що рекомендується в вікі CentOS , а в інших відповідях тут - єдина відмінність полягає в тому , що вам потрібно змінити , grubщоб grub2в команді і шляхи виходу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.