Hegwin.Me

长风破浪会有时,直挂云帆济沧海。

Windows7 + Ubuntu 双系统下,如何升级到 Windows 10

Windows 10 upgrade from Windows 7 dual boot with Ubuntu

我有一台台式电脑,购买于2014年。它是 Windows 7 + Ubuntu 14.04 的双系统,我考虑很久要把 Windows 7 升级到 Windows 10,但这个过程存在潜在的问题,让我迟迟没有下手。我最近终于下定决心,对他进行升级,这里分享一下我升级的过程。

在购买这台电脑时,微软已经发布了 Windows 8,但是 Win 8 由于一些激进的修改,在国内并不太流行,所以卖家保守地给我安装了 Windows 7 Pro 系统。我买这台电脑主要是为了娱乐,但是偶尔也会用它编程,所以在 Win 7 之外,我给他安装了 Ubuntu 14.04 桌面版(一个 Linux的发行版本),构成了双系统的PC。在需要进行编程的时候,我会切换到 Linux 系统。

问题在哪

在安装 Ubuntu 时,它会附带安装 GNU GRUB,这是一个操作系统引导程序,它使得用户在保留 Windows 的同时安装Linux操作系统。安装完成后,在开机时会有 GNU GRUB的界面,允许我在启动时选择用 Windows 还是 Ubuntu 系统,还算方便。

3551681717090_.pic.jpg

但是成也 GRUB,败也 GRUB。作为一个系统引导程序,它需要写入主硬盘的第一物理扇区,因此它也覆盖了 Windows 的 MBR。MBR的全名叫做主引导记录(Master Boot Record),也被称为主引导扇区,是计算机开机以后访问硬盘时所必须要读取的第一个扇区。这里面包含了系统启动的信息,如果它被破坏,那就会导致无法启动操作系统。

在这样的背景下,如果贸然升级 Windows 或者使用其自带的系统修复,很可能Windows中C盘的内容被更新了,但是 Windows 的 MBR 没有被恢复。这样就会产生一个灾难——下次电脑开机时,BIOS 无法通过 MBR找到操作系统来启动,此时无论是 Windows 还是 Linux 你都无法进入。

这时会有一个解决方案,我们需要使用 Windows DVD 或者 U盘来修复 Windows MBR。在国内,更主流的一个情况是,电脑城的维修师傅(或者你的程序员男友)会利用包含Windows PE的U盘来修复 MBR,方能使得 Windows 操作系统可以正常引导和加载。

升级的动机

促使我下定决心升级的原因有二:

  1. 我已经有了 MacBook Pro M1 作为编程的主力,写代码不再依赖 Ubuntu 系统。

  2. 我想玩的游戏《仙剑奇侠传7》,不支持 Windows 7,它最低系统要求是 Windows 10;而《魔兽世界》的10.0资料片,在 Windows 7上有各种 bug,在Windows 10 相对比较正常。

果然,娱乐才是第一生产力。

所以,我将 Windows 7 升级到 Windows 10的一个背景是我可以放弃 Ubuntu 系统;因此,我也需要释放 Ubuntu 所占用的硬盘分区,将其恢复给 Windows 系统。

步骤

  1. 检查 Ubuntu 硬盘分区内的文件,备份有用的文件

  2. 恢复 Windows 的引导程序:利用 MBRFix 修复主引导记录,将其替换成 Windows 的引导程序

  3. 回到 Windows 操作系统,利用自带的“磁盘管理”,格式化原先 Ubuntu 占用的硬盘空间,再将其分配给 Windows

  4. 购买 Windows 10 激活码(请支持正版软件哟),在微软官方下载 MediaCreationTool 升级到 Windows 10

以上是主要的思路。其中,我们可能遇到一些其他的问题:

  1. Windows 10 升级对C盘的空间有一定需求,如果C盘空间不足,而清理Ubuntu得到的硬盘空间和C盘不连续,那么扩展C盘空间的时候,自带的磁盘管理工具并不能将释放出的空间加到C盘里。这时,我们需要安装额外的分区助手工具,比如傲梅,它可以让我们自由的分区,它的文档也很简单易懂。

  2. 如果在 Win 7升级到 Win 10的过程中出现一些错误,比如我就遇到一个错误,它的错误码是 0x80072F8F-0x20000。这时,我们可以去谷歌或者 Bing 搜索“Windows 10 + 错误码”,一般就可以得到答案。比如我这个错误,从官方下载一个修复工具 MicrosoftEasyFix51044 运行后就可以解决。

修复MBR

我们需要网上下载一个名为 MBRFix.exe 的工具,虽然从名字看它是Windows下的执行文件,但它其实是一个命令行工具。

3541681717089_.pic.jpg

我们需要进入Windows的 cmd 工具来执行它。如果你的操作系统在第一块硬盘上,默认情况下面这条命令就可以解决问题(请谨慎):

MbrFix.exe /drive 0 fixmbr /yes

我们可以执行 MbrFix.exe /? 来查看文档,或者在他的网站上查看说明。我建议是先利用 MbrFix.exe /drive 0 driverinfo 来查看驱动信息,然后再运行 fixmbr 来修复。

原理

虽然之前提到了MBR,但是并没有说的很具体,这边可以细说一下在 Win + Linux 启动时发生了什么。

我这里只说 BIOS 启动。BIOS启动的时候会去读取 MBR,MBR里包含引导程序和分区信息的指针。Linux的引导程序是GRUB,Windows 7的引导程序是BCD。GRUB可以识别到Windows系统,并写入boot文件中的,反之BCD却不行。画图来解释一下就是这样:

Dual-OS-launch.png

< Back