当前位置: 首页 > news >正文

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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

现状:

笔记本有一块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:

233410_PSC7_2447371.png

 

5,此时我们已经进入了ubuntu,在这里要做的就是一件事:更新引导项。输入update-grub或者 update-grub2 就可以了。命令完成之后会有一个“done”,我们可以看到有“windows 7”这样的字眼。正常的步骤,到这一步就结束了,重启之后,我们就可以进入到win7系统了。但是,这里也有一个小插曲:如果你跟我一样,尝试了好几次重装c盘才成功了,那么就可能在你尝试进入win7的时候发生类似这种报错:“错误:hd1 cannot uuid_X 错误:get C/H/S values”。这个原因还是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个红框:

233801_vWLl_2447371.png

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吧。。。
 

转载于:https://my.oschina.net/u/2447371/blog/913910

相关文章:

  • WebApi 接口参数不再困惑:传参详解
  • Sublime编译器快捷键大全
  • Scala 闭包
  • ElasticSearch5.x实践_day01_04_ElasticSearch增删改查
  • PHP 开源框架 MiniFramework 发布 0.10.0 版
  • kdev-ruby 停止开发,原 maintainer 转用其它编辑器
  • 人们对互联网的误解到底有多深?
  • Atlassian发布Bamboo 6.0和Bitbucket Server 5.0
  • 3.文件拷贝
  • 窗口对象被缩放的操作监听
  • 关于开源软件的奇怪经济学
  • JAVA常见算法题(二十五)
  • A10 负载均衡模拟器下载安装及license免费激活详细介绍
  • 学习JAVA,如何从入门到精通
  • VC++ 监视文件(夹)
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Docker: 容器互访的三种方式
  • JS 面试题总结
  • Laravel 实践之路: 数据库迁移与数据填充
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • linux学习笔记
  • markdown编辑器简评
  • mockjs让前端开发独立于后端
  • OSS Web直传 (文件图片)
  • Puppeteer:浏览器控制器
  • Python 基础起步 (十) 什么叫函数?
  • python大佬养成计划----difflib模块
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue2.x学习三:事件处理生命周期钩子
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 闭包--闭包作用之保存(一)
  • 从setTimeout-setInterval看JS线程
  • 分类模型——Logistics Regression
  • 学习JavaScript数据结构与算法 — 树
  • 一些css基础学习笔记
  • 异常机制详解
  • 在weex里面使用chart图表
  • 怎么把视频里的音乐提取出来
  • # Java NIO(一)FileChannel
  • #13 yum、编译安装与sed命令的使用
  • $NOIp2018$劝退记
  • (1)Nginx简介和安装教程
  • (4.10~4.16)
  • (编译到47%失败)to be deleted
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (四) 虚拟摄像头vivi体验
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)Google的Objective-C编码规范
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)详解PHP处理密码的几种方式
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库