方法适用于
(1)先装Linux后装windows,Linux无启动引导(或无法启动)
(2)linux,windows双系统,重装windows后,Linux无法启动
(3)Linux,windows双系统,无法进入windows
(4)类似于上面两种情况的也行
以下方法,以Ubuntu 12.04和windows7 旗舰版双系统为例
方法适用于
(1)先装Linux后装windows,Linux无启动引导(或无法启动)
(2)linux,windows双系统,重装windows后,Linux无法启动
(3)Linux,windows双系统,无法进入windows
(4)类似于上面两种情况的也行
以下方法,以Ubuntu 12.04和windows7 旗舰版双系统为例
步骤
制作U盘(或读卡器+SD卡)启动盘(LiveCD)
下载Ubuntu12.04的iso文件,并把它刻录到U盘(或读卡器+SD卡)上
从U盘启动
重启电脑,进入BIOS(开机时按住F2、Delete等,这根据你的机器而定,不过大多为F2、Delete)。(我的主板为华硕,请根据你的主板继续以下步骤)
点击启动菜单,选择你的启动U盘(或把U盘图标拖到最前面)
启动U盘后,点击try Ubuntu(或使用Ubuntu)。不要选择Install选项,不然你就会重装系统(虽重装后能正确启动两系统,但被重装的系统的资料可能会丢失)
组合键Ctrl+Alt+T,打开终端
输入命令sudo fdisk -l
找到你Linux安装的分区
我在这假设为sda8
输入以下代码
sudo mount /dev/sda8 /mnt /* 挂载Linux所在分区到mnt/下 */
sudo grub-install --root-directory=/mnt /dev/sda /*安装grub*/
执行完后,重启电脑。
进入BIOS,启动菜单,选择第一项(即你安装Linux的硬盘,根据你的情况而定)
终于,出现了grub引导界面,就选择你的操作系统吧。
如果完成以上步骤还没成功,请继续以下步骤
完成上面的步骤,你就可以进入Ubuntu了(如果不行执行步骤四,进入Ubuntu使用模式,看步骤9)
组合键Ctrl+Alt+T,打开终端,
执行
sudo update-grub
重启电脑,就可以出现grub引导界面了
如果以上步骤你无法实现,可以用工具软件
执行以下代码
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get updatesudo apt-get install -y boot-repair && (boot-repair &)
【也可分步执行
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)
】
打开应用程序,点击推荐修复,然后等待。在这个步骤完成后,重启机器,你就会重新看到GRUB,实现双启动
---步骤9 来源于http://linux.cn/article-2525-1.html/
欢迎大家转载、引用
现在不少人都在自己的PC机上安装了双系统,其中包括了Linux/Windows的双系统。但如果在Linux系统先存在的情况下,安装了Windows系统,那么,Linux的系统引导将会消失而没法进入该系统。这种情况下没必要重装Linux系统(当然这是一个非常简单的恢复双系统方法),因为只是少了进入Linux的“门”而已,只要将“门”弄好即可。这里采用的方法是重装grub来恢复“门”。其余的方法还有使用easybcd,但本人运气不好~加之技术水平太菜了~所以折腾了很久都没成功~若有哪位高人成功地用easybcd修复了mbr~非常欢迎交流~~~~
重装grub的方法(以下的方法是在Ubuntu 12.10/Win8双系统中使用成功的):
1.下载一个Ubuntu的安装镜像~做成一个USB Live~这个Linux LiveCD用于进入Ubuntu。
2.进入USB Live(根据机子不同方法也不同)后~选择“试用Ubuntu”一项(即“Try Ubuntu”)。
3.打开终端,执行以下命令(本人Ubuntu的/boot目录是在sda1):
显示为"No Error Report"即可。sudo -i mkdir /media/tmp mount /dev/sda1 /media/tmp grub-install --root-directory=/media/tmp /dev/sda
4.这时候重启计算机,不进入USB Live,可以见到熟悉的Linux引导了~选择进入Ubuntu。但这时候Windows不在引导目录中,或者是只有过去的Windows在引导目录中。
5.打开终端,执行以下命令:
这时会列出/boot下的文件和新的引导目录,出现"done"后即可~sudo update-grub2
6.重启吧~如果两个系统都能启动自如~那么恭喜你~大功告成了~
事件:一机子装xp与ubuntu双系统,重装xp或修复xp后,启动机子,原来的登陆选择操作系统不见了。
原因:重装xp后,MBR被xp写入信息导致grub无法工作。引导扇区在每个分区里都存在,但是我们常说的主引导扇区是硬盘的第一物理扇区。它由两个部分组成:即主引导记录MBR和硬盘分区表DPT。在总共512字节的主引导分区里其中MBR占446个字节(偏移0-- 偏移1BDH),DPT占64个字节(偏移1BEH--偏移1FDH),最后两个字节“55,AA”(偏移1FEH偏移1FFH)是分区的结束标志。主引导记录中包含了硬盘的一系列参数和一段引导程序。引导程序主要是用来在系统硬件自检完后引导具有激活标志的分区上的操作系统。
解决方案:
(1)从CD-ROM启动,从Live CD启动进入桌面。打开终端或者切换到一个tty(Ctrl+Alt+F1)。
- 输入:sudo -i ##获得超级用户权限
- 输入:grub
- 输入:find /boot/grub/stage1 ## 如果不知道x是多少,输入find命令反馈的数据
- 输入:root (hdX,Y) ##root和(hdX,Y)之间是有一个空格的。X是硬盘数,从零开始,Y是根所在的分区
- 输入:setup (hdX) ##如果想用xp进行多系统引导就写(hd0,x)
- 输入:quit ##退出grub。
重新启动,不出意外的话,可以看到XP和UBUNTU的双系统引导咯,不过在本人机子上行不通。下面介绍方法(2),本人实验成功。
(2) 利用grub4dos第一步到下面这个网站上下载一个最新版的grub4dos:http://download.gna.org/grub4dos/ 。将文件夹里的grldr和grub.exe,及menu.lst拷贝到系统盘根目录下。其他的文件就暂时不用理会了,我们这里不需要。
第二步找到根目录下的boot.ini这个文件,右键单击去掉该文件的“只读”属性。用记事本打开boot.ini,在最后的空白行里添加 c:/grldr="Start with GRUB4DOS"第三步、重新启动电脑,选择Start with GRUB4DOS,然后选择”enter command line”输入如下命令行:
root (hdX,Y)setup (hdX)。
重启即可。在xp,ubuntu 8.04 下实验通过。
因为是Centos6.3和win7双系统,重装win7之后MBR被改写了,原来装的Centos也是引导装在MBR, 所以导致了无法进入Centos,于是用Centos的U盘启动盘进入rescue模式,先用df -h得知各个盘所对应的硬盘号 然后找出boot所在的分区,具体可如下操作:
用df -h查看硬盘hdX还是sdX;其中hd代表的式IDE硬盘,X为a~z,代表是第几块,想我的有一个U盘,一个硬盘,显示的时候U盘显示成了sda,硬盘显示成sdc;反正要找到你的硬盘的表示符,还要看硬盘是否有/boot挂在的分区,如果有说明boot是一个独立的分区,要不然就是和根分区/是在同一个分区。输入grub进入grub命令行,
把MBR写到给有/boot目录的那个分区的超级块中,命令如下:
grub进入grub命令行setup (sd1,1),因为我用的是U盘引导,所以U盘变成了sda了(就是sd0是 我的U盘),成功写入后把这个超级块导出(这个超级块其实就是MBR的内容)
dd if=/dev/sdc2 of=/home/win7/linux.img
如果不知道该导出那个设备,可以用df -h 得到,win7是我用mkdir /home/win7 ,然后mount/dev/sdc10 /home/win7 把一个fat32的盘挂到linux下然后导出的,之后就可以进入win7拿到这个文件了,然后记得编辑/boot/grub/menu.lst文件,使得这个超级块可以正确引导Centos和Win7,然后进入win7,生成的linux.img放到C盘启动盘,建一个boot.ini文件,也可以从XP中考一个过来,加上以下红色语句引导Centos所在分区的MBR
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
C:\linux.img="Centos_6_3"然后再win7启动的时候就可以看到 “Centos_6_3”这个启动项了,进去之后就可以正确引导centos了。
加上以下的menu.lst作为一个参考:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,1)
# kernel /vmlinuz-version ro root=/dev/sdb9
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenutitle CentOS (2.6.32-279.el6.i686)
root (hd0,1)
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=52e27277-6afc-4a02-96c9-230d0a1d377f rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.el6.i686.imgtitle Windows7
rootnoverify (hd0,0)
chainloader +1
注:好像grub中硬盘、U盘都是用hd表示,所以在menu.lst中不会有sd之类的;sda,hda只在linux下用来表示IDE还是sata接口把,这只是我的猜测,不一定准确