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


36

Ubuntu(およびDebianでも同様です)には、grub構成ファイルの正しいパスupdate-grubで自動的に実行されるシステムスクリプトがありgrub-mkconfig -oます。

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
Fedora 20で同じコマンドを実行すると、/bin/kernel-install代わりに結果が得られます。回答を編集して、今後の参照用にこの情報を含めるようにしてください
pqnet 14

3
それがまさに、私が答えを見つけ出すために必要なステップから始めた理由です。インストールスクリプトのクエリは、カーネルの更新がどのように行われるかを理解する上で、RPMの世界ではかなり普遍的であると思われます。そうすることで、私の答えは、すでに実証済みのツール/コマンド/サポートスクリプトのみに名前を付けるよりもはるかに優れた時のテストに耐えることができ、リリースとディストリビューションに大きく依存します。
HBruijn 14

3
うん@HBruijnの権利。Fedora、RHEL、CentOSには非常に多くのばらつきがあるため、単一の答えを提供するのではなく、見つけ方を示すのに適しています。
slm

24

Fedoraでスクリプトを分析した後、設定ファイルのパスがsymlinkから読み取られることに気付きました/etc/grub2.conf。したがって、正しいgrub2-mkconfig行は次のとおりです。

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

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


5
CentOSの7上のリンクがあると思われる/etc/grub2.cfg
Anthonの

6
GRUB2は-mkconfig --output =の/ boot / GRUB2 / grub.cfgは、Fedoraで承認された方法のマニュアルのようです
ケンドリック

1
CentOS 7固有のgrubステップの詳細については、公式wiki:wiki.centos.org/HowTos/Grub2
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シンボリックリンクが存在するファイルに解決しない場合、出力がstdoutに表示されるようにオプションを使用して、何か問題が発生したことを確認します。

readlinkのmanページから:

      -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

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

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

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

0

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

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

これは、CentOS wikiで推奨されていることを効果的に実行します。他の回答では、唯一の違いは、コマンドと出力パスを変更grubする必要があることですgrub2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.