自从安装了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. Android端通过HttpURLConnection上传文件到服务器

    Android端通过HttpURLConnection上传文件到服务器 一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HT ...

  2. mtk Android 编译命令自定义--添加版本号

    1. alps\build\core\Makefile文件:(参照CUSTOM_BUILD_VERNO) ifeq "" "$(SURPLUS_BUILD_VERNO)& ...

  3. Entity Framework Architecture

    http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx The following figure shows ...

  4. 计算机术语install和setup的区别

    作为安装程序的Setup文件是软件的开发者专门为其软件设计的.exe文件,是当前最为盛行的安装程序.在运行该Setup文件进行软件安装时,Setup除了进行复制.改名.解压和目录维护等基本安装工作外, ...

  5. STL容器的遍历删除

    STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...

  6. windows主机无法访问服务器

    在CentOS下安装配置hadoop的时候,总显示因为网络端口而导致主机无法访问服务器,遂打算先关闭一下防火墙. 偶然看到防火墙的配置操作说明,感觉不错.执行”setup”命令启动文字模式配置实用程序 ...

  7. hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等

    hibernate的保存hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别:一.预备知识:在所有之前,说明一下,对于hibernate,它的对象有三种状态,t ...

  8. Oracle数据库之一

    数据库(oracle) SQL --结构化查询语言,所有数据库基本通用 数据库是数据的仓库,用于存储数据. 内存.文件和数据库区别 内存中的数据是非持久的,关机之后就会消失. 文件和数据库中的数据都是 ...

  9. 什么是HotSpot VM & 深入理解Java虚拟机

    参考 http://book.2cto.com/201306/25434.html 另外,这篇文章也是从一个系列中得出的: <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> ...

  10. R语言,NA,NAN

    好莫名其妙的结果 is.na() #NA得不到的值is.nan() #NAN不可能的值is.infinite() #无穷的 x1<-NA x2<-0/0x3<-1/0 is.na(x ...