在已有 Ubuntu 的基础上硬盘安装 Win7 实现双系统

.

.

.

.

.

LZ 的笔记本电脑一直安装的是 Ubuntu 系统,最近由于工作需要,要安装一个 Win7 系统。大家都知道,Linux 和 Windows 装双系统的时候要先装 Win 再装 Linux,并且要把 Win 安装在第一硬盘第一分区才行,可是 LZ 这 Ubuntu 已经使用了很久了,并不想把所有的配置都舍弃掉完全重装,于是经过了一天一夜的折腾,LZ 终于搞定了,并把这个过程记录下来。

由于折腾的时候没有截图,也没有把一些命令的输出给拷贝下来,所以现在也只能描绘场景和命令了,并不能给出命令执行的结果了。

先来看看 LZ 硬盘的情况:共有两块硬盘,暂且称之为 hd0 和 hd1 吧。hd0 是固态硬盘,有两个主分区,一个挂载在 /boot,一个挂载在 / 上。hd1 也有两个分区,一个是主分区挂载在 /home 上,另一个是逻辑卷,挂载着 swap。

硬盘的情况就是这样,由于 SSD 容量比较小,出于对使用寿命和 win 使用场景的性价比等考虑,决定不动 SSD,而是把 /home 缩小,腾出一部分空间分两个区给 win 用。

一开始 LZ 是把 /home 向前缩小,在 /home 与 swap 之间腾出 200GB 左右的空白空间来。可是安装 win 的时候出现了“安装程序无法创建新的系统分区,也无法定位现有系统分区”的错误提示,死活装不上,不知道是不是由于前面提到的“win 必须安装在第一硬盘第一分区”的原因,既然失败了,那就暂且不表了。

无奈之下 LZ 只好把整个 /home 分区向后移动,使这 200GB 的空间处于 hd1 的最前边,把 /home 和 swap 放在 hd1 的后面区域。

调整分区大小和创建分区的工具是 gparted,在 LiveCD 上可以直接使用,图形化界面,用起来比较简单,具体用法这里就不介绍了。

说说如何硬盘安装 win7:

先在空白空间上分两个区出来,一个作为 win 的 C 盘,一个作为安装盘(安装完系统之后可以把这个盘格式化掉,作为 D 盘用),暂且称它们为 p1 和 p2 吧。这个步骤可以在 LiveCD 上做,也可以在现有的 Ubuntu 上直接做,但是调整分区大小的动作一定要在 LiveCD 上做,因为被调整的分区(/home)在运行着的系统上是已经挂载的,除非先卸载掉它,不然不能直接调整它的大小。

先把 p2 分区挂载上来,然后把 win7 的安装盘里所有的文件和目录都拷贝到 p2 分区上。如果 win7 是 iso 镜像,可以直接挂载到某个目录上进行拷贝,如果是光盘则插入后系统会自动挂载,使用 cp -rv 即可全部复制。

现在可以重启系统用 grub2 来引导 p2 分区里面的 win 安装向导了。

重启后来到 grub 的引导菜单,按 c 键进入命令行模式:

grub> set root=(hd1,2)
grub> insmod ntfs
grub> ntldr /bootmgr
grub> boot

执行以上命令后,系统应该就启动 win 的安装向导了,接下来一步一步按照提示安装 win7 就行了。

可是就在此时意外又出现了,选择安装分区的时候依然提示“安装程序无法创建新的系统分区,也无法定位现有系统分区”,LZ 折腾了好久后发现,要把 hd0 拔掉,只用 hd1 进行安装才行。可是由于 grub 安装在 hd0 上了,拔掉 hd0 后 hd1,2 便无法启动了。于是只好用老毛桃 PE 启动,使用里面的小工具来将 d: 下的镜像安装到 c: 里,直至部署完成都没有出现问题 。

win 安装完毕周后,把 hd0 再插回去,用上面的命令进入 win7,没有出现任何问题。于是把 D: 格式化掉,重启进入 ubuntu,执行 update-grub 命令,使 grub 的菜单可以引导 win7,大功告成。