centos7中安装win10搭建双系统

近期有在centos主机上再装个windows构建双系统的需求,在网上查了一下发现绝大多数都是在先有windows的前提下再安装linux的教程。在先有linux(centos)后再安装windows的情况下的教程还不是太多,少数是先有ubuntu后安装windows,这些资料也为我的摸索提供了帮助。最终还是摸索着成功在centos7主机上成功安装了windows10双系统,过程如下…

一、准备一台centos主机

首先准备一台安装有centos7的主机。

本文中所有内容均在虚拟环境中完成。如需在物理机中操作,将iso文件制作成启动盘即可。

请添加图片描述

二、调整分区

需要在CentOS的硬盘上为Windows 10留出足够的空间。可以使用gparted来调整分区大小。

此处下载gparted镜像文件并修改虚拟环境中的镜像信息。
请添加图片描述

virtualbox中启动后立刻按F12选择CD-ROM启动进入如下页面,选第一个继续:
请添加图片描述

请添加图片描述

语言选择可以选择切换成中文:

在这里插入图片描述

接下来就进入到了gparted操作界面。

这里我把27.8G未分配的空间分配为给windows使用的ntfs格式并应用操作:
在这里插入图片描述

在这里插入图片描述

这样分区工作就做好了。

三、安装windows10

在virtualbox中选择win10的iso文件:
在这里插入图片描述

同样启动后F12选择CD-ROM启动。

接下来就算正常的windows安装程序,将windows安装在刚刚新建的分区中:
在这里插入图片描述

安装完成后进入系统查看,系统被正常安装在了刚刚分配的ntfs空间中:
在这里插入图片描述

四、修复GRUB

windows系统安装完成后重启电脑发现直接进入到了windows中,并没有centos和windows可供选择。那么原先的centos去了哪里?

可能是因为GRUB引导加载程序没有正确的设置为默认引导管理器,或者windows安装过程中覆盖了MBR(主引导记录)或EFI分区,导致GRUB无法启动。

准备centos的iso文件到虚拟机中,选择CD-ROM启动。
选择Troubleshooting:

在这里插入图片描述

选择Rescue a CentOS system:

在这里插入图片描述

进入到Rescue界面选择1:

在这里插入图片描述

输入return进入shell:

在这里插入图片描述

在shell中输入:

chroot /mnt/sysimage
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

完成后输入exit退出chroot环境。

如果重启后找不到windows,可能是因为GRUB没有正确的检测到windows安装。
在这里插入图片描述

尝试重新生成GRUB配置文件,以便它能够检测到所有可用的操作系统。

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

如果还是不行,尝试手动添加windows启动项。

首先找到windows分区的UUID:

blkid

在这里插入图片描述

编辑GRUB配置文件:

nano /etc/grub.d/40_custom

添加windows启动项:在打开的文件中,添加以下内容(将UUID替换为您的Windows分区的UUID):

menuentry 'Windows 10' {
    insmod part_gpt
    insmod ntfs
    set root='UUID=YOUR_WINDOWS_PARTITION_UUID'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

重新生成GRUB配置文件:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

做到这一步发现还是不行,GRUB界面出现了Windows 10,但是选择它后却提示:no server is specified

来观察原本CentOS可用的启动项:
在这里插入图片描述

发现系统是在使用BIOS引导模式,而不是EFI引导模式。这就意味着在GRUB配置中应该使用BIOS风格的设备命名(例如,hd0,msdos1)而不是EFI分区。

所以重新编辑GRUB配置文件,将原本添加的win10相关的内容修改为:

menuentry 'Windows 10' {
    insmod part_msdos
    insmod ntfs
    set root='(hd0,msdos2)' # 修改为您的Windows分区的实际位置
    chainloader +1
}

我的windows安装位置是/dev/sda4,对应修改set root=‘hd0,msdos4’

修改后文件内容:
在这里插入图片描述

修改完成后重新生成GRUB配置文件:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

重启后即可正常在GRUB中选择centos或者windows启动。