Ubuntu(Debianでもそうだと思います)には、自動的に実行されるupdate-grub
という名前のシステムスクリプトがありますgrub-mkconfig -o
とgrub構成ファイルの正しいパス。
Red Hatベースのディストリビューションに同様のコマンドはありますか?
そうでない場合は、どのようにシステムは、新しいカーネルバージョンがインストールされたときに更新するgrub構成ファイルの場所を認識していますか?
回答
特定のアクション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でスクリプトを分析した後、構成ファイルのパスがシンボリックリンク/etc/grub2.conf
から読み取られていることがわかりました。 。したがって、正しいgrub2-mkconfig
行は次のようになります。
grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)"
コメントに記載されているように、、または/etc/grub2-efi.cfg
。実際には、両方のリンクが同時に存在し、異なる場所を指している可能性があります 。 readlink
への-e
フラグは、ターゲットファイルが存在しない場合にエラーになりますが、私のシステムには両方が存在します…コマンドを確認してください、私は推測します。
コメント
- CentOS 7では、リンクは
/etc/grub2.cfg
liのようです。 > - grub2-mkconfig –output = / boot / grub2 /grub.cfgはfedoraマニュアルで承認された方法のようです
- CentOS 7固有のgrubステップの詳細については、公式wikiを確認してください。 wiki.centos.org/HowTos/Grub2
- UEFIシステムを使用している場合は、'
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のマニュアルページから:
-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)
回答
vi
または
、変更を保存し、:wqでエディターを閉じます!
これは、RedHatまたはCentOSでgrubを更新するために実行する必要があるものです:
grub2-mkconfig -o /boot/grub2/grub.cfg
/bin/kernel-install
を生成します。後で参照できるように、この情報を含めるように回答を編集してください。