回答:
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
-カーネルのインストールをスクリプト化するツール
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
ターゲットファイルが存在しない場合はエラー出力が、私のシステムの両方で存在していた...あなたのコマンドを確認します、私は推測します。
/etc/grub2.cfg
sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
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
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を参照してください
update-grub
Ubuntu のスクリプトは実際にはのスタブにgrub-mkconfig
すぎず、他のディストリビューションにあまり苦労せずに適応させることができます。ここに全体があります:
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
これは、CentOS wikiで推奨されていることを効果的に実行します。他の回答では、唯一の違いは、コマンドと出力パスを変更grub
する必要があることですgrub2
。
/bin/kernel-install
代わりに結果が得られます。回答を編集して、今後の参照用にこの情報を含めるようにしてください