安装 Windows 10 + Centos 7 双系统共存
第一步 准备工作
分区
给CentOS 系统单独创建一个分区,具体看空闲硬盘的大小决定。
- 右键桌面上 [我的电脑] 或者 [此电脑] 图标,选择 [管理] → [计算机管理] → [存储] - [磁盘管理]
- 选择一个空闲空间较大的分区,右键选择 [压缩卷(H)...]
- 在弹出的对话框中输入需要分配给 CentOS 系统的空间大小,以 MB 为单位
- 输入完毕后,点击对话框右下角的 [压缩] 按钮执行压缩即可
注意:压缩出的新分区,不要执行 [新建简单卷],否则稍后 CentOS 不识别,到此步即可
下载 CentOS 7 系统文件
到 CentOS官网 下载 ISO 文件,DVD 版即可。
制作优盘启动盘
同样很简单:
- 准备一个优盘,备份里面所有你认为不能删的文件,稍后将会格式化此优盘
- 到 UltraISO官网 下载软件
- 安装,我基本是用完就卸载,所以,除了安装路径改下,其他全部默认
- 运行 UltraISO,选择试用,选择主界面菜单栏里的[文件] → [打开],选择你刚下载好的 CentOS 7 镜像
- 选择菜单栏里的 [启动] → [写入硬盘映像]
- 在弹出框中确认选中的优盘无误,其他选项保持默认,无需修改,直接点击下方的 [写入] 按钮,执行制作优盘启动盘,稍后确认制作成功的提示信息即可
准备工作到此结束
第二步 从优盘启动安装
调整 BIOS 引导顺序
- 插入刚刚制作的优盘启动盘,重启电脑,开机阶段按
F2
、F8
或F12
进入BIOS
- 切换到
Boot
界面,找到优盘启动项,使用F5
或F6
调整其顺序至第一位,即从优盘启动 - 按
F10
保存并退出BIOS
,即可从优盘引导启动。 - 稍后进入一个标题为
CentOS 7
的黑白界面:
图片加载中...
同时提示 Press Tab for full configuration options on menu items.
和 Automatic boot in 60 seconds...
。
-
默认选中的是 第一项即
图片加载中...Install CentOS 7
,按Tab
键,下方的提示信息将显示为vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207x20x86_64 rd.live.check quiet
-
移动光标,删除
图片加载中...LABEL=CentOS\x207x20x86_64 rd.live.check
这部分,并用linux dd
替换,最终的内容为vmlinuz initrd=initrd.img linux dd quiet
-
确认无误后回车,可以看到如下界面
图片加载中...
这里可以看到,界面下方有4列,分别是DEVICE
、TYPE
、LABEL
和UUID
,LABEL
这一列就是驱动器名称,据此找到你的优盘,并记下对应DEVICE
列的值,一般是sdb4
。 -
强制关闭计算机后再开机,回到刚才倒计时那个界面,依旧按
图片加载中...Tab
键,修改启动参数,这次修改为vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 rd.live.check quiet
,这里的sdb4
替换成你刚才记下的自己优盘对应的DEVICE
列的值。
-
确认无误后回车,稍等片刻就可以看到暖暖的界面啦!
图片加载中...
开始安装
- 上面的系统语言根据需要自行选择(为了防止系统自动生成家目录下有
桌面
、下载
这类中文名路径,切换路径的时候还要修改输入法,比较麻烦,所以这里我保持默认,即English
),这里主要说下第二步的INSTALLATION SUMMARY
。
图片加载中...
选择需要安装的基础软件
- 点击
SOFTWARE
下的SOFTWARE SELECTION
选择一些需要安装的基础软件,这里只选择安装一个桌面软件GNOME Desktop
就够了,选择完成之后点击左上角的Done
回到INSTALLATION SUMMARY
主界面。
图片加载中...
磁盘分区
-
点击
图片加载中...SYSTEM
下的INSTALLATION DESTINATION
选择安装位置,这里可以看到我们之前压缩出来的那个新分区,以及优盘分区。
选中那个新分区,并选中Other Storage Options
→Partitioning
下的I will configure partitioning
选项,切记,一定要选中此项,否则整个硬盘的数据都将被删除!!!
确认无误后,点击左上角的Done
。
-
这一步对硬盘进行分区,可以点击
图片加载中...Click here to create them automatically
即可让安装程序自动创建分区,非常方便,也可以点击左下角写有AVAILABLE SPACE
字样的红色区域上方的+
按钮手动创建分区。
选择手动分区的话,要注意单位,这里我选择自动分区。分区完成并且确认无误后,点击左上角的Done
结束对硬盘的分区操作。下面我讲下手动分区操作步骤。
点击 +
按钮,在弹出的对话框中选择新分区挂载的路径,并输入新分区的大小,这里我们设置新分区的大小为 6 GB,并挂载在 根目录 /
下。点击 Add mount point
保存分区信息。
此时,可以看到新分区已经出现在左侧栏里了,但分区的单位并不对,默认刚才输入的单位是 MiB
并显示为 KiB
,这里我们修改为 MiB
即可,点击右下角 Update Settings
保存修改后的信息。
以同样的方式添加
swap
等分区,添加完成后,点击左上角的 Done
按钮,完成对磁盘的分区。如果没有给 /boot
进行分区,会在第一次点击 Done
后收到警告信息。可以点击 Click for details
查看警告原因,然后点击 Close
后再次点击一次 Done
;也可以忽略警告信息,再点一次 Done
。图片加载中...
忽略警告信息,点击两次
Done
之后,可以在弹出的对话框中看到,即将对磁盘进行修改的摘要信息,直接点击 Accept Changes
,开始对硬盘执行分区操作。图片加载中...
- 回到
INSTALLATION SUMMARY
界面,待分区执行完成后,SYSTEM
下的INSTALLATION DESTINATION
下的黄色感叹号就没有。点击右下角的Begin Installation
按钮开始安装CentOS
系统。
图片加载中...
初始化账户
-
安装进度界面可以看到
图片加载中...USER SETTINGS
下,ROOT PASSWORD
提示需要给root
账户设置密码(root
账户默认是没有密码的),USER CREATION
提示创建一个普通用户。下面我们按照提示完成对账户的初始化。
-
点击
图片加载中...USER SETTINGS
下的ROOT PASSWORD
,给root
账户设置密码。如果设置的密码强度不够,需要点两次Done
按钮忽略警告信息,完成对root
账户的初始化。
-
完成对
图片加载中...root
账户初始化后,可以看到USER SETTINGS
下USER CREATION
的黄色感叹号已经消失了,说明初始化root
账户的密码后,创建普通账户已经变成一个可选项。
但推荐仍创建一个普通账户,以便平时使用,而非平时直接使用
图片加载中...root
账户,这样可以减少使用过程中的误操作,以及root
账户密码泄露的风险。点击USER CREATION
,创建一个新的账户,同样ROOT PASSWORD
一样,如果密码强度不够,请点击两次Done
按钮。
完成安装
- 约15 ~ 30 分钟后,CentOS 7 的安装就大功告成啦。为了避免重启后再次从优盘启动,可以先拔掉优盘,再点击
Reboot
按钮重启计算机;也可以在重启时进入BIOS
调整引导顺序,恢复硬盘作为第一引导盘。
- 开机后会看到一个黑白屏的启动菜单,并且有一个默认选项,屏幕下方有一个 5 秒的倒计时,若 5 秒内没有任何操作,将使用默认选中的内核启动系统,也可以使用上下键进行切换并按回车键,即可使用选中的内核启动系统。这里默认即可。
第三步 找回 Windows 10 启动项
可能大家都注意到了,上面重启之后,已经无法进入之前的 Windows 10 系统。是的,CentOS 7 不能在安装过程中设置之后的启动项,不像 Ubuntu 那样,在安装 Ubuntu 的过程中,就可以选择启动项,因此这时候就无法进入 Windows 10 了。
不过,不用担心,因为 Windows 10 系统的引导信息以及数据都是还在的,我们只需要在 CentOS 7 中找回 Windows 10 的引导信息并添加到启动菜单中就可以了。
- 启动 CentOS 7 并使用事先设定的账户,登录系统。这里我使用的是非
root
账户登录的。
安装 ntfs-3g
- 右键桌面,打开一个终端。执行以下命令安装
ntfs-3g
:
sudo yum install -y ntfs-3g
之所以需要安装 ntfs-3g
,是因为 Windows 家族专用的文件系统,CentOS 7 默认不能识别,而要想在 CentOS 7 系统中找回 Windows 10 的引导信息,势必要让 CentOS 7 系统识别 Windows 10 的文件系统,故安装此库。
更新 Grub2 启动菜单,找回 Windows 10
- 执行以下命令即可找回 Windows 10 引导信息:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
这一条命令,是让 grub2
自动扫描磁盘中已经安装的所有系统的引导信息,并将其加入到启动菜单中。重启一下计算机,在上面提过的启动菜单界面,是不是可以看到一个有 Windows
字眼的启动项啦?这就是你的 Windows 10!切换到此项,回车,我 Windows 10 又回来啦!
第四步 修复启动菜单界面 Windows 版本显示错误的问题
虽然 Windows 10 已经找回,然而,不尽如人意的是,引导 Windows 10 的菜单项上的 Windows 系统的版本并非“Windows 10”,而是“Windows 7”或 “Windows 8.1”等。
初步推测,此启动项上显示的 Windows 版本号,取决于你从何版本的 Windows 升级到 Windows 10的(若你是从 Windows 7 升级到 Windows 10 的,那此启动项的文字就会显示“Windows 7”字眼,对于从 Windows 8.1 升级也是一样的道理。未考虑直接安装 Windows 10 的情况)。
需要说明的是,这里只是一个文字显示错误,对正常使用没有丝毫影响。但你有强迫症的话,请继续往下看。
修复显示错误
我已经打好了一个 patch,放到了这里了,登录已安装好的 CentOS 7 系统,打开一个终端,并这行以下命令即可:
- 下载patch
wget https://gist.githubusercontent.com/liangzai-cool/59f0c29a528305a9aa1c3971aeef604b/raw/316a739240b388ff46ee95d38d2c7a97dcd53cbf/20microsoft-win10.patch
- 安装patch
((sudo cp 20microsoft-win10.patch / && cd / && sudo patch -p0 ) < 20microsoft-win10.patch)
错误原因浅析
- 启动菜单是执行
Grub2
的命令后,由Grub2
生成的 -
Grub2
本身并不能识别磁盘中已安装的操作系统,它是依赖os-prober
这个库来识别的 -
os-prober
本是为debian
系统编写的,其在debian
系统下不能识别Windows 10
的问题已经修复 - CentOS 下的
os-prober
目前最新版本依旧是1.58
,该版本依旧存在此问题,貌似 CentOS 下的os-prober
无人维护。问题代码位置是/usr/libexec/os-probes/mounted/20microsoft