检查已安装的 grub2 模块

检查已安装的 grub2 模块

我运行 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.efigcdx64.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”命令列出所有已加载的内核/驱动程序模块

相关内容