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 파티션입니다.
질문:
- EFI 파티션을 다시 만들 수 있나요? 이것이 필요한가요? 도움이 되나요?
- 대신 /dev/sda2 파티션을 사용하여 마운트할 수 있나요?
- 이러한 응용 프로그램 서버가 5개 있는데 그 중 하나에만 문제가 있습니다. 어떻게 이런 일이 발생할 수 있습니까?
도움이 된다면 예상대로 작동하는 다른 서버에서 다음이 표시됩니다.
[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에서 다시 업데이트해 보세요.