记一次ubuntu下通过grub引导win7 双系统

前端之家收集整理的这篇文章主要介绍了记一次ubuntu下通过grub引导win7 双系统前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

现状:

笔记本有一块120G的固态硬盘(放置在光驱硬盘位),装了ubuntu的系统。还有一块750G的机械硬盘(笔记本自带的硬盘),纯粹用来存储。

遇到的问题:

有时候需要windows环境,比如某些软件(qq,word,ie等)只能在windows下才能。但是利用跑在固态硬盘下的ubuntu中使用vmware,将 windows虚拟机安装在普通硬盘里面,使用时有时候会很卡,用的很不爽,而且硬盘容量也是固定的。所以会有装一个双系统的需求。

做法:

网上很多例子,都是在 安装了 win7 再安装 ubuntu的双系统。在win7下,将硬盘割出一块空闲盘,再使用u盘安装 ubuntu,然后在win7里面使用 easybcd 添加ubuntu的引导项。win7下安装ubuntu的难度不大,很容易成功,网上也有很多教程。但是反过来,在 ubuntu下 安装 win7的双系统,就不太容易了,而且问题频出,教程也相对较少。下面记录的是我的一次成功的经历,适合有装机经验的同学,希望能给他人一些参考。

1,首先你得割出一块空间给 win7。我这里因为有两块硬盘,750G的机械硬盘的C盘(ntfs格式),我就可以分给win7使用,所以我就相当于已经分割好了空间了。有些同学可能没有多余的硬盘,可以使用gparted 命令进行操作,具体可自行百度

2,其次,得有安装介质,u盘,光盘均可。我用的是u盘,将u盘做成启动盘。我在ubuntu的vmware里面,开了一个win7虚拟机,利用“大白菜”这个装机工具,将u盘做成了启动盘。用“大白菜”启动u盘,有一个好处,就是将来引导的时候,我们可以随意选择 windows 的iso镜像文件,还有一个重要的操作:激活分区!这个操作在后面会讲。“大白菜”也是一个傻瓜式的工具,且包含了各种类型的引导,winpe,win2003,win2008等,兼容各种台式机、笔记本,总有一款适合你。这个还是非常强悍的,有些老笔记本用“老毛桃”等工具无法成功引导,使用“大白菜”的win2008pe的增强版,就可以引导成功。最好将windows的iso拷贝到u盘里备用。

3,接下来就开始从 u盘启动,进入“大白菜”的选项了,这里我选win8pe,选这个兼容性最好的。进去之后,点击装机,“还原分区”-》选择 windows iso -》选择要还原的盘符(我这里选C盘盘)。然后,等着就行了。完了之后,就要进行很重要的一步了:点击 分区工具(比如 diskgenius),选中你的 C 盘,右键选择 “激活分区”。这一步如果没有的话,后面就会一直报 windows无法完成安装,一直让你重启的错误。所以这也是我推荐 “大白菜”的原因,如果没有“大白菜”,还得通过其他办法去激活分区,还不如一次性到位的好。

4,装完之后,重启就可以了,这时会进入到 ubuntu。正常情况下是可以直接进入 ubuntu的,这里会有一个小插曲。如果你是像我一样,在ubuntu开机的时候,就将windows的几个分区挂载到 /mnt里面去的话,那么你就会在这里等待 1min30s的时间,而且进不了系统,你还会看见一个类似于这样的报错:a start job is running for dev-disk-by uuid <disk-partition-uuid>。这个原因是:你重装了C盘,势必会格式化C盘,导致C盘的 uuid 变化,生产了新的uuid。而你当时将 C盘挂载到 ubuntu里面的/mnt 里面的时候,使用的是老的uuid,所以ubuntu尝试挂载C盘的时候,uuid变化了,一直挂不上去,除非你更改为新的uuid。解决办法是:进入维护模式,也即 maintenance(直接按enter即可),输入 df -h 查看一下你的C盘是哪块磁盘,我这里是/dev/sdb1,然后输入blkid 查看一下所有磁盘的uuid,找到/dev/sdb1的uuid,记下这个新的uuid,然后 vi /etc/fstab,找到/dev/sdb1对于的老uuid,用新的uuid替换掉他,reboot即可。

下面是 blkid 的结果,可以看到 uuid:

5,此时我们已经进入了ubuntu,在这里要做的就是一件事:更新引导项。输入update-grub或者 update-grub2 就可以了。命令完成之后会有一个“done”,我们可以看到有“windows 7”这样的字眼。正常的步骤,到这一步就结束了,重启之后,我们就可以进入到win7系统了。但是,这里也有一个小插曲:如果你跟我一样,尝试了好几次重装c盘才成功了,那么就可能在你尝试进入win7的时候发生类似这种报错:“错误:hd1 cannot uuid_X错误:get C/H/Svalues”。这个原因还是uuid!即便你使用update-grub命令去更新引导项,但是在 /boot/grub/grub.cfg 文件里面的win7的引导项里面的uuid,依然不会更新为c盘的新的uuid,需要你手动将新的uuid替换到win7对于的引导项里面去。做法就是:vi /boot/grub/grub.cfg(不同版本可能目录不完全一样),找到 win7对于的引导项,修改uuid为新的uuid。然后 update-grub就可以了。重启进入win7就可以了。

下面是 cat /boot/grub/grub.cfg 的结果,我们需要改的 uuid 就是下面的3个红框:

6,正常情况下,我们是可以进入win7的,但是,这里也有一个小插曲,如果你像我一样,遇到这样的错误:“安装win7出现无法配置在此计算机硬件上运行”,不要惊慌,按下shift+F10,弹出一个cmd窗口,输入cd oobe 回车,再输入msoobe.exe回车,会弹出另一个界面,按照提示进行即可,完成后回到错误弹窗界面单击确定,系统重启,之后一切正常(引用:https://jingyan.baidu.com/article/7908e85c90113baf481ad238.html)。到这里,才算是真正的完成了ubuntu下安装win7双系统 的工程。

总结起来:

1,腾出一块 ntfs 的地给win7;

2,利用“大白菜”制作u盘启动盘;

3,进入“大白菜”系统,使用你自己下载的windows镜像对c盘进行还原,然后将c盘激活分区。

4,进入ubuntu,更新引导项。

----------------------------------

总结一下遇到的问题和解决方法

1,Windows启动的时候报错:WINDOWS无法完成安装,若要在此计算机上安装windows,请重新启动安装。

解决办法:将C盘分区激活

2,Windows启动的时候报错:安装win7出现无法配置在此计算机硬件上运行。

解决办法:按下shift+F10,弹出一个cmd窗口,输入cd oobe 回车,再输入msoobe.exe回车,会弹出另一个界面,按照提示进行即可,完成后回到错误弹窗界面单击确定,系统重启,之后一切正常。

3,无法进入Ubuntu,报错:a start job is running for dev-disk-by uuid <disk-partition-uuid> ,并且卡在这里 1min30s之久。

解决办法:修改/etc/fstab里面的uuid,用新的uuid将里面所有的老的uuid 替换掉。新的uuid来自于命令 blkid(它的寓意应该是 block id)

4,尝试进入Windows时报错:error: hd0,msdos1 cannot get C/H/S values

解决办法:修改 /boot/grub/grub.cfg 里面的引导项的uuid,用新的uuid替换老的uuid,然后使用命令 update-grub 进行更新。

============================

最后,题外话,我的笔记本有一个蛋疼的地方,由于我是两块硬盘,所以当我开机的时候,虽然能看到

ubuntu

ubuntu高级

ubuntu recovery

windows 7

等等这些选项,但是其实,我进入的是 ubuntu的固态硬盘,当我选择 “windows7”想要进入机械硬盘里面的win7的时候,总是提示我“没有这个分区”!!!what's the fuck!!!我在固态硬盘上的时候,看不到机械硬盘,所以提示我说没有这个分区?!所以我现在要进入win7的话,就得使用一种很奇特的方式:先是按住F12,选择“hard drive”的启动,然后再选项列表里面选择“windows7”才能顺利进入。而且只有这种方式才能进去!我猜测他是想让我选中 机械硬盘 才让我进入win7?但是不管我怎么修改硬盘模式 AHI 与 ACHI 的切换,legacy 与uefi 切换,hard drive 与 diskette drive 的切换,各种切换组合都试过了,都不行!这个我实在是不知道为啥,期待大神给予解答。所以,我以后应该会很少进入 win7吧。。。

猜你在找的Ubuntu相关文章