答案1
在分析了Fedora中的脚本后,我意识到配置文件路径是从符号链接读取的/etc/grub2.conf
。正确的grub2-mkconfig
行是:
grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)"
正如评论中所指出的,它可能是/etc/grub2.cfg
、 或/etc/grub2-efi.cfg
在 UEFI 系统上。实际上,两个链接可能同时存在并且指向不同的位置。如果目标文件不存在,但在我的系统上两者都存在,则标志将出错...我想请检查您的命令-e
。readlink
答案2
包括安装或删除 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
- 编写内核安装脚本的工具
答案3
在 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
选项,以便如果符号链接无法解析为存在的文件,输出将显示在标准输出上,这样我就知道出了问题。
从 readlink 的手册页中:
-e, --canonicalize-existing
canonicalize by following every symlink in every component of
the given name recursively, all components must exist
答案4
根据红帽文档:
更改后
/etc/default/grub
需要重建grub.cfg
文件,如下所示:
在基于 BIOS 的计算机上,以 root 身份发出以下命令:
~]# grub2-mkconfig -o /boot/grub2/grub.cfg
在基于 UEFI 的计算机上,以 root 身份发出以下命令:
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg