无法挂载 /boot/efi 并且 Grub 菜单未更新

无法挂载 /boot/efi 并且 Grub 菜单未更新

我发现在更新并重新启动 centos 系统后,它仍然显示旧的 grub 菜单,并且新内核不存在。

启动后,链接/etc/grub2.cnf被破坏。我重新创建了这些

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg

这修复了链接,我可以看到 grub 配置文件看起来不错(以我有限的经验,我没有尝试验证文件的内容),但菜单没有更新。换句话说,在下次重新启动时,我再次看到一个非常旧的启动菜单,其中包含一些古老的内核版本,其中只有一个版本仍在系统上。

经过进一步的谷歌搜索,我发现 /boot/efi 分区是一个东西,应该安装它。它列在 /etc/fstab 文件中:

# grep efi /etc/fstab
UUID=E911-FC5F          /boot/efi               vfat    umask=0077,shortname=winnt,nofail  0 0

我创建了一个目录 /mnt/efi 并尝试挂载它以检查文件系统,但收到错误消息,指出 vfat 是未知文件系统类型

[root@app03 etc]# mount -t vfat /dev/sda1 /mnt/efi
mount: unknown filesystem type 'vfat'

我什至尝试使用 fstab 文件中的挂载选项:

[root@app03 etc]# mount -o umask=0077,shortname=winnt,nofail --verbose /dev/sda1 /mnt/efi
mount: unknown filesystem type 'vfat'

我尝试加载 vfat 模块但仍然遇到相同的错误

[root@app03 etc]# blkid /dev/sda1
/dev/sda1: SEC_TYPE="msdos" UUID="E911-FC5F" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="895f6027-a800-4f20-8d36-6b5c2f740d90" 
[root@app03 etc]# lsmod |grep vfat
[root@app03 etc]# modprobe vfat
[root@app03 etc]# lsmod |grep vfat
[root@app03 etc]# locate vfat
/usr/lib/modules/3.10.0-1062.18.1.el7.x86_64/kernel/fs/fat/vfat.ko.xz
/usr/lib/modules/3.10.0-1160.53.1.el7.x86_64/kernel/fs/fat/vfat.ko.xz
/usr/lib/modules/3.10.0-1160.76.1.el7.x86_64/kernel/fs/fat/vfat.ko.xz
/usr/lib/modules/3.10.0-1160.88.1.el7.x86_64/kernel/fs/fat/vfat.ko.xz
/usr/lib/modules/3.10.0-862.6.3.el7.x86_64/kernel/fs/fat/vfat.ko.xz
/usr/sbin/fsck.vfat
/usr/sbin/mkfs.vfat
/usr/share/man/man8/fsck.vfat.8.gz
/usr/share/man/man8/mkfs.vfat.8.gz
[root@app03 etc]# mount /dev/sda1 /mnt/efi
mount: unknown filesystem type 'vfat'
[root@app03 etc]# grep vfat /etc/filesystems 
vfat
[root@app03 etc]#

查看分区对我没有多大帮助:

[root@app03 etc]# fdisk -l /dev/sda
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 479.6 GB, 479559942144 bytes, 936640512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disk label type: gpt
Disk identifier: BBDE0244-EE22-420F-A32E-DC5CB3CF3540


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      2508799      1G  Microsoft basic 
 3      2508800    936638463  445.4G  Linux LVM       

我被困在了这里。我意识到我需要使用以下命令重新安装 grub,grub2-install --efi-directory=/boot/efi /dev/sda但是只要 /boot/efi 没有挂载,我担心这只会让事情变得更糟。

在本例中,/dev/sda1 是 EFI 系统分区,/dev/sda2 是 /boot 分区。

问题:

  1. 我可以重新创建EFI分区吗?这个有必要吗?它甚至有帮助吗?
  2. 我可以使用 /dev/sda2 分区来代替并安装它吗?
  3. 我有五台这样的应用程序服务器,但问题只存在于其中一台 - 这怎么可能发生?

如果它有帮助,在另一台按预期工作的服务器上,我会看到以下内容:

[root@app02 ~]# lsmod |grep vfat
vfat                   17461  1 
fat                    65950  1 vfat
[root@app02 ~]# mount -v |grep vfat
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
[root@app02 ~]# df -h |grep efi
/dev/sda1                         200M   12M  189M   6% /boot/efi

答案1

声称不支持文件系统类型的系统是否已vfat以某种方式得到强化?例如,其中的任何文件是否/etc/modprobe.d/包含以下行:

install vfat /bin/true

如果是这样,则系统可能已使用尚未针对以 UEFI 方式启动的系统完全更新的指令进行了强化。注释掉该行,然后尝试/boot/efi再次挂载 EFI 系统分区。

答案2

我认为您的问题是您的更新仅部分起作用(因为 EFI 未安装),但这使您在某些地方更新内核而在其他地方不更新内核之间陷入困境。尝试从 USB 驱动器启动,chroot 进入现在受到威胁的系统,然后从 chroot 中再次更新。

相关内容