我运行 CentOS 7。有没有办法(例如命令)来检查当前安装了哪些 grub2 模块?
答案1
Grub2 有两种版本。 UEFI 和老式 PC BIOS 系统。问题安装的模块可以引用 RPM 软件包提供的模块,也可以引用 grub 在磁盘上安装的模块。
GRUB 软件包。我的系统是一个电脑BIOS系统,这样就grub2
安装好了。 (grub2-efi*
将安装在 UEFI 系统上)。
$ yum list 'grub2*'
Installed Packages
grub2.x86_64 1:2.02-0.16.el7.centos base
grub2-tools.x86_64 1:2.02-0.16.el7.centos base
Available Packages
grub2-efi.x86_64 1:2.02-0.16.el7.centos base
grub2-efi-modules.x86_64 1:2.02-0.16.el7.centos base
RPM包安装的包
您可以列出已安装的 GRUB2 模块(由 RPM 软件包提供),这些模块可以安装在 /boot 或 EFI 分区上。 (我用于| head -n5
较小的示例):
$ find /usr/lib/grub/ -name "*.module"
/usr/lib/grub/i386-pc/cs5536.module
/usr/lib/grub/i386-pc/acpi.module
/usr/lib/grub/i386-pc/date.module
/usr/lib/grub/i386-pc/adler32.module
/usr/lib/grub/i386-pc/datehook.module
RPM包安装的包
您可以列出已安装的 GRUB2 模块(由 RPM 软件包提供),这些模块可以安装在 /boot 或 EFI 分区上(同样,我用于| head -n5
较小的示例):
$ find /boot/grub2/i386-pc -name "*.mod" | head -n5
/boot/grub2/i386-pc/acpi.mod
/boot/grub2/i386-pc/date.mod
/boot/grub2/i386-pc/adler32.mod
/boot/grub2/i386-pc/datehook.mod
/boot/grub2/i386-pc/affs.mod
嵌入的模块列表grubx64.efi
和gcdx64.efi
根据grub2 规范,这些EFI启动文件包含以下模块:
GRUB_MODULES=" all_video boot btrfs cat chain configfile echo efifwsetup \
efinet ext2 fat font gfxmenu gfxterm gzio halt hfsplus iso9660 \
jpeg loadenv lvm mdraid09 mdraid1x minicmd normal part_apple \
part_msdos part_gpt password_pbkdf2 png reboot search \
search_fs_uuid search_fs_file search_label sleep syslinuxcfg \
test tftp regexp video xfs"
%ifarch aarch64
GRUB_MODULES="${GRUB_MODULES} linux"
%else
GRUB_MODULES="${GRUB_MODULES} linuxefi multiboot2 multiboot"
%endif
答案2
您正在寻找一个rpm
命令 - 要么rpm -qa | grep grub
列出包名称中带有字符串“grub”的所有包,要么rpm -ql grub
列出作为包有效负载一部分的所有文件grub
。
答案3
首先,我认为这个问题本身就不清楚。
标题谈论“grub”,而问题详细信息没有谈论任何有关 grub 的内容。
因此,我假设您可能会要求以下两件事之一:
- grub 模块/文件 --> 使用“rpm -ql grub”命令列出 grub 提供的所有文件
- 所有模块(驱动程序/内核)--> 使用“lsmod”命令列出所有已加载的内核/驱动程序模块