背景:笔记本电脑上之前只安装了 CentOS 8。后来加装了 Windows 7,结果没有 CentOS 的启动菜单了。
  
  磁盘分区情况:

sda1    Windows C:
sda2    Windows D:
sda3     /boot
sda5     swap
sda6     /
sda7     /home

 

  解决步骤:

1. 下载一个CentOS8 iso安装镜像(可以是boot盘),并使用 Win32DiskImager写入U盘。
2. 从U盘启动,进入安装界面时,选择 Troubleshooting,然后选择 Rescue a CentOS Linux system。
3. 进入rescue环境,输入1(选择continue),将会把在硬盘上找到的Linux系统挂载到 /mnt/sysimage。然后回车,激活shell。
4. 切入硬盘Linux系统:chroot /mnt/sysimage
5.重新安装grub2: grub2-install /dev/sda
注意是 grub2,而不是 grub。

此时,重启系统,发现 CentOS 启动菜单已恢复:

  CentOS Linux (4.18.0-80.e18.x86_64) 8 (Core)
  CentOS Linux (0-rescue-...) 8 (Core)

但是,没有Windows的启动项。

6. 进入CentOS,vim /etc/grub.d/40_custom, 添加:

menuentry 'Windows 7' {
  insmod ntfs
  set root='hd0,msdos1'
  chainloader +1
}

保存,退出。
注:这里 msdos1 表示Windows系统盘在第一个分区。

7. 重新生成grub2配置: grub2-mkconfig -o /boot/grub2/grub.cfg
8. 重启电脑,发现多出了 Windows 启动项。

参考:
1、centos7引导Windows,实现双系统选择启动
https://blog.csdn.net/qq_20906903/article/details/78431248
2、安装centos7 windows7 (32位) 双系统以及grub2引导windows 7
https://blog.csdn.net/liu454638324/article/details/49621525?locationNum=4&fps=1