windows7与ubuntu多系统引导

30 篇文章 1 订阅
19 篇文章 0 订阅

正常安装请参考:Windows10+Ubuntu18.04双系统安装成功心得:https://blog.csdn.net/lnfxbianxiu/article/details/80394284

多引导U盘制做工具:

1、YUMI 或 YUMI UEFI:https://www.pendrivelinux.com/yumi-multiboot-usb-creator/

2、RUFUS:https://github.com/pbatard/rufus

 

常用的操作系统引导程序和其配置文件列表: 

操作系统引导程序配置文件引导程序版本工具
dosio.sys,msdos.sys,command.comconfig.sys、autoexec.bat  
windows xp、windows 2000NTLDRboot.inint5.0 
windows vista、windows 7BOOTMGRbcdnt6.0bootsect、bcdedit、bcdboot
linuxlilomenu.lst  
linuxgrubmenu.lst  

 

bootsect可以在windows7安装光盘下的BOOT目录下找到。

bcdedit、bcdboot位于系统windows下。

 

windowsxp与linux多系统: http://blog.csdn.net/kl222/article/details/1554406

windows 7 引导 linux:

1、先装linux,再装windows7的情况。

装完linux后,  备份MBR,linux下使用如下命令:

MBR安装在:/dev/hda

# dd if=/dev/hda of=/root/linux.bin bs=512 count=1

MBR安装在:/dev/hda10

#sudo dd if=/dev/sda10 of=/media/ubuntu/系统保留/linux.bin bs=512 count=1

 

再安装windows7。

把前面备的的linux.bin文件复制到C:盘根目录。或者从U盘中启动ubuntu13.1 。把linux.bin文件复制到windows7的系统目录下。/dev/sda1 on /media/k/系统保留

 

2、先装windows7,再装linux的情况。

装linux时,注意不要把MBR写到主活动分区中。因为主活动分区中已经存储了windows7的MBR。如果不幸覆盖了,你可以按后面的方法恢复。http://hi.baidu.com/ok558/item/1583d7eaa2e206d1eb34c930

 (插入windows 7安装光盘,从光盘启动电脑,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输入:bootrec /fixmbr
回车。这样也就重写了mbr。)

 

在命令行下执行下面语句:

C:\>bcdedit /create /d "ubuntu" /application bootsector

项{544313b4-2257-11e3-a2c6-94955791f210} 成功创建。

C:\>bcdedit /set {544313b4-2257-11e3-a2c6-94955791f210} device partition=\device\harddiskvolume1

C:\>bcdedit /set {544313b4-2257-11e3-a2c6-94955791f210} path \linux.bin

C:\>bcdedit /displayorder {544313b4-2257-11e3-a2c6-94955791f210} /addlast

 

 

查看刚加入的条目: 

C:\>bcdedit

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=\Device\HarddiskVolume1
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
resumeobject            {544313b0-2257-11e3-a2c6-94955791f210}
displayorder            {current}
                        {544313b4-2257-11e3-a2c6-94955791f210}
toolsdisplayorder       {memdiag}
timeout                 30

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {544313b2-2257-11e3-a2c6-94955791f210}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {544313b0-2257-11e3-a2c6-94955791f210}
nx                      OptIn

实模式启动扇区
---------------------
标识符                  {544313b4-2257-11e3-a2c6-94955791f210}
device                  partition=\Device\HarddiskVolume1
path                    \linux.bin
description             ubuntu

 

 进入系统后,计算机->属性->系统属性->高级->启动和故障恢复 中可以设置默认启动的操作系统。

 

解决 windows 主分区(mbr)丢失:

从windows7启动盘启动,按shift+f10进入命令行,执行:

bootrec /fixmbr

重新启动即可。

 

解决 grub 丢失:

 

1、用 Ubuntu 12.04 的 Live CD 光盘启动系统,启动光盘后不要选安装而选试用;

2、打开终端,输入终端命令: sudo fdisk -l 此时可以看到显示出来的整个硬盘上所有分区的列表,请记录下 Ubuntu 根分区 / 和/boot分区安装的位置;

3、在终端输入命令:

sudo -i  (取得root特权)

mount  /dev/sdaX  /mnt (X 为记录下的 Ubuntu 根分区)

mount  /dev/sda*  /mnt/boot (*为 Ubuntu /boot分区,/boot没有单独分区则不要执行这个命令)

grub- install  –root-directory=/mnt/  /dev/sda  (注意此命令中 root 前面是两个减号横杠,这个会把 grub安装到第一个盘上的主分区上)

如果要安装到指定的分区:

grub- install  –root-directory=/mnt/  /dev/sdaX

4、执行完以上步骤和命令,重新启动系统,这时您会看到熟悉的Grub启动菜单。

 

参考:

 

http://blog.csdn.net/kl222/article/details/1554406

http://blog.163.com/panyonglong_917/blog/static/17947455201042611273940/

http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=396667

http://www.pobeta.com/bcd-ubuntu.html

http://hi.baidu.com/fyyfly/item/6bff54f6d1850fb530c1997b

bcdedit使用:http://technet.microsoft.com/zh-cn/library/ee921507.aspx

http://hi.baidu.com/ok558/item/1583d7eaa2e206d1eb34c930

 

Windows下设置Ubuntu引导项: https://www.cnblogs.com/yhjoker/p/7326454.html

 

windows7引导故障的解决  mbr修复

先让我们看一下windows7的启动过程的常识:
电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取 活动主分区的PBR(分区引导记录,也叫dbr,究竟该叫什么,网络上争论未休,我们姑且叫它pbr吧),PBR再搜寻分区内的启动管理器文件 BOOTMGR,在BOOTMGR被找到后,控制权就交给了BOOTMGR。BOOTMGR读取\boot\bcd文件(BCD=Boot Configuration Data ,也就是“启动配置数据”,简单地说,windwows7下的bcd文件就相当于xp下的boot.ini文件),如果存在着多个操作系统并且选择操作系 统的等待时间不为0的话,这时就会在显示器上显示操作系统的选择界面。在我们选择启动WINDOWS7后,BOOTMGR就会去启动盘寻找 WINDOWS\system32\winload.exe,然后通过winload.exe加载windows7内核,从而启动整个windows7系 统。
可以把这个过程简单地概括为:BIOS-->MBR-->DPT-->pbr--> Bootmgr-->bcd-->Winload.exe-->内核加载 -->整个windows7系统
本文就来说一说MBR-->DPT-->pbr--> Bootmgr-->bcd这一段可能出现的故障的解决。


mbr出现问题,主要是mbr代码被改写,因为被改写的代码不同,所以出错信息也各不相同。比如我们装了windows7与ubuntu双系 统,ubuntu改写了mbr,在我们把ubuntu所在的分区格式化后,既进不了windows7,也进不了ubuntu,开机的时候会出现如图的错误 提示:


[图一]
解决的办法就是重写mbr。对于重写mbr,我们所熟知的是在dos下用fdisk /mbr命令进行重写。fdisk /mbr所重写的mbr与xp是兼容的,但是,与windows7已经不那么兼容了。实践表明:用fdisk /mbr命令重写windows7的mbr后,需要重建bcd,否则不能正常启动windows7。有网友指出,这里面的原因是fdisk /mbr命令改写了mbr中的硬盘签名。一般的分区工具都是可以重写mbr的,比如diskgenius,它所重写的mbr与windows7是兼容的。 也可以用bootrec /fixmbr命令重写。要运行 Bootrec.exe 工具,必须启动 Windows RE。为此,请按照下列步骤操作:
插入windows 7安装光盘,从光盘启动电脑,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输入:bootrec /fixmbr
回车。这样也就重写了mbr。


[图二]

分区表存在问题,对于这个问题,限于篇幅,不做详细探讨。
系统盘不是活动的主分区,这种情形只要用分区工具(比如diskgenius)把系统盘设为活动的主分区即可。

pbr出现问题,主要是pbr代码被改写,因为被改写的代码不同,所以出错信息也不相同。比如WINDOWS7系统的活动分区,却被写入了适合于XP的 pbr,这样开机的时候就会出现如图的提示:


[图三]
简单的解决办法就是用bootrec /fixboot命令重写pbr:
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在命令提示符中输入:bootrec /fixboot
回车。这样也就重建了活动分区的pbr。

这里面还有一个常用的命令也要提一下,这就是bootsect:
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输 入:bootsect /nt60 sys /mbr
回车。这个命令会改写活动分区的pbr,并同时会改写mbr,使得mbr和pbr适合于windows7和vista。
bootsect.exe程序位于windows7安装光盘的boot目录下,可以把这个文件提取出来,在xp下的命令行可以运行这个程序,也可以在 winpe下的命令行运行这个程序,因而这个程序在使用时很方便。而bootrec.exe命令的使用就没这么方便了。所以BOOTSECT命令被应用得 更为广泛一些。
另外有一个要点需要指出,vista的安装光盘里面的boot文件夹也存在着这个小工具,但vista的bootsect命令没有/mbr参数,因而它只 能改写pbr,而不能改写mbr,这是必须要注意的。实践表明:把一个硬盘的mbr清零,然后运行windows7的bootsect命令,确实可以发现 mbr被恢复正常。这也就表明了windows7的bootsect命令的确能够重写mbr。
另外,bootsect命令也可以重写xp的mbr和pbr,而这也是bootrec命令所做不到的。xp的恢复控制台用fixmbr命令改写mbr,用 fixboot命令改写pbr。




如果是引导文件的问题,一般可以用bcdboot命令重新写入引导文件:
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在命令提示符中输入:
bcdboot x:\windows /s x:
注意,这前一个x:是windows7的windows文件夹所在的盘,一般是c:,如果你的不是c盘,请改为对应的盘符。这后一个x:是活动主分区的盘 符所在,一般也是c盘。所以这个命令一般的写法是:
bcdboot c:\windows /s c:
但需要注意,在windows re环境下所看到的盘符与你在windows7下所看到的盘符未必一样。所以需要首先用dir /a命令确认各盘是否正确。
比如:
cd /d c:
dir /a
这两个命令的作用是,首先进入c:盘的根目录,然后显示c盘根目录下的所有文件和文件夹,根据所显示的文件或者文件夹,可以判断这个盘具体是你在 windows7下所看到的哪一个盘。
windows7的引导文件主要是bootmgr和boot文件夹里面的文件,而boot文件夹里面的文件主要是bcd文件。bcdboot命令会在指定 的分区内重新写入全部windows7的引导文件。

如果只是bcd文件有问题,则可以用bootrec命令重建bcd:
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在命令提示符中输入:
bootrec /RebuildBcd  
这个命令如果搜到没有写入bcd的windows7或者vista的操作系统,会提示你是否写入,按提示输入Y也就会写入了的。
或者用bcdedit命令手动改写bcd,但操作要复杂得多。


具体案例分析:
案例一:怪事,系统盘不是活动的主分区
在网上看到一则求助,windows7系统运行正常,只是在磁盘管理中所看到的则是:系统盘不是活动的主分区。


[图四]
我们在安装了一键还原精灵装机版后,在开机的时候按下F11键可以启动一键还原程序。但我们在格式化系统盘后,在开机的时候仍是可以这样操作的。而所谓的 pbr是高级格式化的时候产生的。这表明了,一键还原精灵的启动代码不是写入了活动分区的pbr(如果是的话,在格式化的时候已经被清除了),而是写入了 MBR。通过在MBR中设定首先读取一键还原精灵的隐藏分区,然后才读取活动的主分区。那么,现在我们所遇到的这种情形是不是也通过改写mbr而指向特定 的分区?

假设mbr没有问题,那么问题就可能出在pbr(也就是所谓的dbr),win7的pbr中写入的代码应该是去找bootmgr,但如果这个代码中规定了 要找的是另外的一个特殊的文件,而再通过这个文件去启动另一个分区中的bootmgr,这样就能实现把另一个不是活动的主分区变为系统盘的目的。

通过上面的分析,我们可以得到结论:问题不是出在mbr,就是出在pbr,解决的办法就是先试着重建mbr,如果不能解决,那就可以肯定问题出在pbr, 只要重建pbr就能解决问题的。
于是首先重建mbr,问题依旧,然后再重建pbr,问题果然得到解决。

案例二:
开机的时候出现:
BOOTMGR is missing
press ctrl+alt+del to restart.

翻译成汉语就是:bootmgr缺失,按Ctrl + Alt + Del重新启动

这是很常见的故障。既然是bootmgr缺失,我们一般只要用bcdboot命令重建引导文件即可。
这种情形产生的原因,一般可能有:bootmgr文件确实没有了,这是最为常见的。一种则是由磁盘错误导致的,这种情形下,在winpe下运行一下 chkdsk /f命令也可能解决。有朋友使用 Diskeeper 对MFT碎片进行整理,开机的时候也出现了这个提示。估计可能是用DISKEEPER进行的MFT磁盘整理后,这或者是diskeeper的一个bug, 因而不建议用diskeeper进行mft碎片整理。

一位网友因为好奇。把C盘设成了活动的(active partition )。是这样设置活动的:对计算机点右键-管理-硬盘管理。右键点C盘,设置为活动的。靠。怎么回事啊。
重启后居然无法启动!显示bootmgr is missing,Ctrl+Alt+Delete to restart。然后还是如此。

这是从网上找到的一个案例,分析可以得出结论。他所装的windows7应该存在着一个隐藏的“系统保留”分区,这个隐藏的系统保留分区才是真正的活动主 分区,而他的c盘则应该不是活动的。他把c盘设为活动,这也就意味着取消了“系统保留”分区的活动状态。但引导文件是在“系统保留”分区,而不是在c 盘,c盘变成了活动的主分区,mbr就会启动c盘的pbr,而c盘的pbr又会去c盘找bootmgr,但c盘没有bootmgr,所以出错也就是必然的 了。解决的办法其实只要简单地再把系统保留分区设为活动即可。
这位朋友制造了问题,但好象并没能最后解决问题。真所谓会者不难,难者不会。




案例三:开机的时候出现:
BOOTMGR is compressed
Press Ctrl+Alt+Del to restart
翻译成汉语就是:
bootmgr被压缩,按Ctrl + Alt + Del重新启动

这种情形产生的原因是因为对系统盘进行了压缩。奇怪的是,对于这种情形,我们用bcdboot命令重建引导文件却并不能解决。
但是,我们可以运行命令:compact /u /a /f /i /s c:\*
这样可以使得问题得到解决。compact程序位于windows\system32文件夹下,所以我们要先用CD命令进入windows \system32目录。这里是假设c:盘是bootmgr所在的盘,如果不是,要改为对应的盘符。
网上有朋友用这个命令的时候并没有解决问题,原因则在于,这位朋友所运行的命令是:compact /u /a /f /i /s c:\
没有后面这个*,所以命令并没有实现运行者的目的。从命令本身所提供的帮助说明来看,这个*似乎是没有必要的,但实际操作表明,这个*是必须的。
这个命令会把已经压缩的C盘文件完全解压,真所谓解铃还須系铃人。
注意,只运行命令:compact /u /a /f /i c:\bootmgr
并不能解决问题。
有网友发现,运行“Bootrec.exe /fixmbr、Bootrec /fixboot"然后重启,这样可以解决问题。测试表明,其实只需要运行Bootrec /fixboot这一个命令即可。这是另类的解决的办法。猜想可能是,对驱动压缩后,PBR中的BPB表并没有随之修改,所以BPB表中所记录的分区信息 与实际的分区信息不一致。运行Bootrec /fixboot命令后重写了bpb,这样就使得二者变为了一致。
实践表明:用bootsect命令也能实现对这个问题的解决。
有网友发贴,说是装了xp与vista双系统,启动vista系统出现了BOOTMGR is compressed ,于是他在xp下取消了系统盘的压缩状态。但这位网友的话未必可信,因为如果ntldr也被压缩了的话,则xp启动的时候会出现:
ntldr is compressed
Press Ctrl+Alt+Del to restart
除非这位朋友只压缩了bootmgr,而没有压缩ntldr,但这一般不太可能。这种压缩一般是对整个盘进行压缩的时候产生的,如果压缩指定文件的话,一 般不会有人去压缩bootmgr和ntldr的。实践表明,在windows7下,即便指定对整个的系统盘进行压缩,一般也不能压缩bootmgr的,会 提示拒绝访问,但是,在开机的时候仍会出现出错提示:bootmgr is compressed



案例四:
先装的windows7,后装的linux,在linux系统出问题后,既进不了linux,也进不了windows7,这里面的原因是mbr和活动分区 的pbr被改写。只要重建mbr和活动分区的pbr,也就可以进入windows7了。最简单的办法是用bootsect命令解决:
bootsect /nt60 sys /mbr

案例五:
先装的windows7,后装的xp,没有了windows7的启动项:
这个需要三步解决问题:
一、用bcdboot命令重建windows7的引导文件。
二、用bootsect命令恢复windows7的mbr和pbr
三、进入windows7后,用bcdedit命令添加xp的启动项。

 

 

 

由于重装windows 7,原来的Grub启动菜单不见了,修复 Ubuntu 12.04 Grub 引导具体修 复方法如下:

1、用 Ubuntu 12.04 的 Live CD 光盘启动系统,启动光盘后不要选安装而选试用;

2、打开终端,输入终端命令: sudo fdisk -l 此时可以看到显示出来的整个硬盘上所有分区的列表,请记录下 Ubuntu 根分区 / 和/boot分区安装的位置;

3、在终端输入命令:

sudo -i  (取得root特权)

mount  /dev/sdaX  /mnt (X 为记录下的 Ubuntu 根分区)

mount  /dev/sda*  /mnt/boot (*为 Ubuntu /boot分区,/boot没有单独分区则不要执行这个命令)

grub- install  –root-directory=/mnt/  /dev/sda  (注意此命令中 root 前面是两个减号横杠,这个会把 grub安装到第一个盘上的主分区上)

如果要安装到指定的分区:

grub- install  –root-directory=/mnt/  /dev/sdaX

4、执行完以上步骤和命令,重新启动系统,这时您会看到熟悉的Grub启动菜单。

 

 

5. 重启

6. 我的机子重启后就进了grub界面,但没进grub菜单,所以又有下面的步骤,在grub>提示符下输入

7. find /boot/grub/stage1 (若boot单独分区则:find /grub/stage1)
此命令会得到个结果:(hdx,y)

8. root (hdx,y)

9. kernel /boot/grub/stage1
(boot单独分区则:kernel /grub/stage1)

10. boot
执行该命令后就转入到GRUB菜单,此时选择进入Ubuntu

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值