web-dev-qa-db-ja.com

RHEL / Fedora / CentOSシステムのupdate-grubと同等ですか?

Ubuntu(そして私もDebianだと思います)には、update-grubという名前のシステムスクリプトがあり、grub構成ファイルの正しいパスでgrub-mkconfig -oを自動的に実行します。

Red Hatベースのディストリビューションに同様のコマンドはありますか?

そうでない場合、新しいカーネルバージョンがインストールされたときに、システムはどのようにしてgrub構成ファイルがどこに更新されるかを認識しますか?

42
pqnet

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-カーネルのインストールをスクリプト化するツール

14
HBruijn

Fedoraでスクリプトを分析した後、構成ファイルのパスがsymlink /etc/grub2.conf。正しいgrub2-mkconfig行はこうです:

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

コメントで述べたように、それは/etc/grub2.cfg、または/etc/grub2-efi.cfg UEFIシステム上。実際、両方のリンクが同時に存在する可能性があり、異なる場所を指しているです。 -eフラグをreadlinkに指定すると、ターゲットファイルが存在しない場合はエラーが発生しますが、私のシステムには両方が存在します...コマンドを確認してください。

28
pqnet

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オプション。シンボリックリンクが存在するファイルに解決されない場合、出力がstdoutに表示されるため、問題が発生したことがわかります。

Readlinkのmanページから:

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

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 を参照してください

7
theJPster

viまたはvimでgrubファイルを編集し、変更を保存して:wqでエディターを閉じます!

これは、RedHatまたはCentOSでgrubを更新するために実行する必要があるものです。

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

Ubuntuのupdate-grubスクリプトは実際には grub-mkconfig のスタブであり、あまり苦労せずに他のディストリビューションに適合させることができます。ここに全体があります:

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

これは CentOS wiki および他のここでの回答で推奨されていることを効果的に行います-唯一の違いは、コマンドとgrubgrub2出力パス。

0
mwfearnley

CentOS Linux 8で作業-

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

My Demo

0
ShubhamDubey