自从安装了ubuntu14.04系统后(win7+ubuntu双系统),一直使用grub来引导win7和ubuntu,很长一段时间都使用的很好。突然前两天win7进不去了,无奈之下就用pe修复了win7的启动项,开机后grub的启动界面消失了,变为了windows的启动界面(笔者猜想,pe在修复win的启动项时,修改了mbr的内容,以前mbr中存放的是grub的部分程序,修复之后的mbr变成了win的引导程序,会去加载win所在分区的pbr,猜想不一定正确)。无论怎样,windows总算能进去了。接着,笔者又在win7下用EasyBCD添加了ubuntu的启动项,如下图:

类型选择了第一项GRUB(legacy),驱动器选择了ubuntu被安装所在的分区。添加成功后,重启发现进不去ubuntu了,一直是黑屏,左上角有个光标不停闪烁。在此,笔者又猜想可能是当初在装ubuntu14.04时,grub的部分程序仅仅被写入了磁盘的mbr中,而没有写入ubuntu分区的pbr(分区引导记录),因此一旦mbr中的grub被修改,就很难通过pbr进入ubuntu了。而笔者曾经在一篇博文中貌似看到过,ubuntu在安装时会把grub的部分程序在mbr和pbr中各拷贝一份,这样的话,通过mbr和pbr均能引导成功ubuntu。不知此猜想是否正确。然后笔者用U盘制作了ubuntu14.04的启动盘,在livecd模式中进行修复,步骤如下:

1.开机u盘启动,进入ubuntu安装程序,图形界面出来后,选择try ubuntu,不要选择install ubuntu。

2.之后便进入了ubuntu的体验环境。

3.打开一个Terminal

执行:sudo -i   (切换成root用户)

fdisk -l    (查看磁盘的分区情况,笔者的/boot目录是单独的分区,大小200M,因此一眼就看出了,分区设备为/dev/sda8)

mkdir /mnt/root    (目录创建在哪里不重要,目的是为了挂载/dev/sda8设备)

    mount /dev/sda8 /mnt/root

gurb-install --boot-directoty=/mnt/root /dev/sda     (安装grub,将其安装在/mnt/root/grub目录下,/dev/sda指示了/mnt/root所在的设备)

至此,会提示no error reported,安装成功。重启电脑后又恢复成了grub来引导。(笔者猜想,在进行grub安装时,又将mbr内容修改为grub的部分程序,才能在开机时出现grub的引导界面)

在grub的引导界面中,有多个启动项可供选择,其中第一个启动项是ubuntu,最后一个是win7启动项。笔者选择ubuntu,可以正常进入ubuntu中;选择win7时,又会出现win7的启动项选择界面(grub加载了win7所在分区的引导程序pbr),该界面有两个启动项,win7和ubuntu(该ubuntu启动项是以前用easyBCD设置的),此时再选择ubuntu的话,依然是黑屏,左上角光标闪烁,进不去系统。因此,笔者分析,上边的第二个猜想是错的,应该不是ubuntu所在分区的pbr没有被写入的原因,因为grub已经被修复了,grub部分程序一定被写入pbr中了,却还是进不去ubuntu系统。笔者大胆猜想,ubuntu14.04作为最新版的系统,会不会是grub版本的问题,于是在easyBCD中,重新制作ubuntu启动项,类型选择为第二项GRUB 2,结果重启后果然出现了grub的启动界面(说明了ubuntu分区的pbr中存放了grub的部分程序,启动顺序:开机,bois,mbr(grub部分程序),加载ubuntu分区的grub程序,grub启动项选择界面,选择win7,加载win7所在分区的pbr,读取bcd表,win的启动项选择界面,选择Ubuntu,加载ubuntu分区的pbr(grub部分程序 ,和mbr中内容相同,此处就用到了bpr,可见其并不多余),加载ubuntu分区的grub程序,grub启动项界面。绕了这么一大圈是为了证明笔者猜想),成功了。如下图:

在此,笔者大胆总结下,在安装win+ubuntu双系统时,其实无所谓安装顺序,大不了后安装的系统的引导程序覆盖掉了mbr,将启动界面变为了后安装系统的启动项。我们只要加以修复即可。如果后安装win的话,win的loadboot覆盖掉了mbr,没关系,我们进入win后,在easyBCD中设置一下ubuntu的启动项,驱动器选择ubuntu被安装的分区,类型选择时要小心,根据ubuntu的版本高低,选择第一项GRUB(legacy)或者第二项GRUB 2,高版本的话选第二项(此处如果选择不合适的话,照样无法启动ubuntu系统,会出现黑屏并且左上角光标闪烁的现象);如果后安装ubuntu的话,grub部分程序将覆盖掉mbr,这样更好,grub的启动界面上最后一项已经帮我们把win7的启动项自动添加上了,直接选择就可进入win。

ubuntu14.04修复启动项的更多相关文章

  1. Ubuntu14.04+ROS 启动本地摄像头

    STEP1安装usb_cam 创建一个工作空间,make一下 mkdir  -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make STEP2下面是安装usb_c ...

  2. nginx(二)----ubuntu14.04下启动或重启和关闭nginx

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *如有错误,请指正 *转载请注明出处 */ 一.启动 /usr/local/nginx/sbin/nginx或者cd /usr/ ...

  3. Caffe搭建:Ubuntu14.04 + CUDA7.0 + opencv3.0 + Matlab2014A

    从Hinton在science上发表深度学习训练开创新的文章以来,深度学习火了整整有3年多,而且随着新的硬件和算法的提出,深度学习正在应用于越来越多的领域,发挥其算法的优势. 实验室并没有赶上第一波深 ...

  4. Ubuntu14.04 dd命令克隆系统镜像安装到另一台机器上

    linux系统如果想做备份还原,使用ghost的时候经常出现问题,后来发现可以直接使用dd命令完成硬盘的克隆和还原.当拷贝完硬盘后,就可以拿这个硬盘放到其它设备上跑了.也就是完成了“烧写”了. 用U盘 ...

  5. Ubuntu14.04 使用本地摄像头跑ORB SLAM2(暂未完成)

    嗯 这个方法我暂时弄不出来,用了另外一个方法:SLAM14讲 第一次课 使用摄像头或视频运行 ORB-SLAM2 前面的准备: Ubuntu14.04安装 ROS 安装步骤和问题总结 Ubuntu14 ...

  6. Ubuntu14.04、win7双系统如何设置win7为默认启动项

    Ubuntu14.04.win7双系统如何设置win7为默认启动项 Ubuntu14.04.win7双系统设置win7为默认启动项方法: 在启动项选择菜单处记住windows 7对应的序号. 从上至下 ...

  7. ubuntu 14.04.02 LTS 启动项误写入 /dev/sda1 (win 7 loader) 修复

    问题描述: 在win7下安装Ubuntu14.04,由于启动项 /boot loader 安装位置错误(/dev/sda1 (win 7 loader) )导致无法进入Windows(在GRUB界面能 ...

  8. win7 ubuntu10.04双系统,重装win7后,修复双启动项

    进入ubuntu的liveCD(即在试用ubuntu里),在终端里操作 首先要找到自己的ubuntu系统挂载在那个sda下面.可以用sudo fdisk -l 这个命令.然后: 1. sudo -i ...

  9. windows和ubuntu14.04双系统设置默认启动项

    首先开机或者重启,在启动项选择菜单处记住win7对应的序号,从上至下的序号从0开始计数,我的win7系统选项处于第5个,那么序号就应该是4,记住后,打开ubuntu系统. 2 按下Ctrl+alt+T ...

随机推荐

  1. Ubuntu下搭建java开发环境

    JDK安装: 1. 在http://www.oracle.com/technetwork/java/javase/downloads/index.html上下载相应版本的JDK环境,这里我使用的是jd ...

  2. MTK6577 Android源代码目录

    MTK6577 Android源代码目录 1.     MTKAndroid4.0 源代码目录 (1)  makeMtk 整个工程编译或是构建(make/build)的入口. (2)  abi 应用程 ...

  3. 【转】Android横竖屏切换问题

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  4. UVa 1479 (Treap 名次树) Graph and Queries

    这题写起来真累.. 名次树就是多了一个附加信息记录以该节点为根的树的总结点的个数,由于BST的性质再根据这个附加信息,我们可以很容易找到这棵树中第k大的值是多少. 所以在这道题中用一棵名次树来维护一个 ...

  5. 一个小面试题sql

    一.            问答题 1简要说明分页是如何实现的. A:sqlserver: Select top(pagesize)  * from  student where id not in( ...

  6. BZOJ 1555 KD之死

    贪心,按t+w排序维护不一定放到拖车上的大根堆. #include<iostream> #include<cstdio> #include<cstring> #in ...

  7. 部署HBase远程访问的问题集合(Eclipse)

    实现远程访问HBase,可以通过Eclipse开发工具方便进行代码调试. 为了方便jar包各种版本的管理,才用maven进行代码构建 首先,下载并安装maven以及M2Eclipse插件 其次,配置m ...

  8. HDU 4766 Network

    题意   就是找到一个 位置 使得路由器可以覆盖所有英雄    可以不覆盖主人自己, 找到距离 主人房子最近的位置,距离为多少 没想到  其实是道水题啊!!  分三个情况讨论 第一个情况    如果 ...

  9. 查看mysql库大小,表大小,索引大小

    查看所有库的大小 mysql> use information_schema; Database changed mysql> selectconcat(round(sum(DATA_LE ...

  10. 【转】 [C/OC的那点事儿]NSMutableArray排序的三种实现(依赖学生成绩管理系统).

    原文网址:http://blog.csdn.net/ministarler/article/details/17018839 c语言实现的学生成绩管理系统是面向过程的,而OC实现的学生成绩管理系统则是 ...