近期有在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启动。