现在没事就喜欢玩玩Ubuntu,今天早上一打开电脑,登上百度,就看到有人问关于Windows 和Ubuntu 双系统的问题。我玩Ubuntu 的时间其实也不长,有一年多一点的时间了吧。去年11月,笔记本的系统坏了一次,F11还原的时候崩溃了,每次开机就进入还原,而且还原不成功,很快就重启……没办法,拿去惠普金牌给重装了系统,当时硬盘的分区表坏掉了,把整个硬盘都格式化了,我有很多东西在里面的,全丢了……
那个时候,对重装系统一无所知,没想过那些问题的,不知道一个操作系统的引导有那么麻烦,对引导程序写在MBR 和DBR (PBR)里面,而不是以文件形式存在,在操作系统里面看不到,感到很困惑。从那以后,意识到弄懂操作系统的安装非常重要,于是在网上下载了很多操作系统光盘来自己联系安装,微软原版的、修改版的以及Ghost版本的都用过不少。一次无意中在网上看到了Ubuntu ,说这个系统蛮好,还可以安装在U盘上,这算是初步接触Ubuntu 了。后来一次同寝室的同学,F11还原的时候点了取消,结果可想而知,和我一样,出现了分区表损坏,使用PE 光盘,都找不到硬盘了,想要使用Ghost来安装系统,结果行不通。后来我用我的Ubuntu U盘竟然成功地启动了他的计算机,可以识别他的硬盘,于是通过U盘在Ubuntu 中将Ghost 拷贝到他的硬盘,再安装了一个含Ghost 的Dos 工具箱,在DOS 里面启动Ghost ,给他安装了一个Ghost 版本的Windows XP 。那次事件让我觉得Ubuntu 这家伙还真是很牛啊!对Ubuntu 愈加喜爱,后来了解了一些Ubuntu 的知识,它每6个月都会发布一个新版本,新版本一出来,我就赶忙下载了下来,从Ubuntu 9.10 一直到现在的Ubuntu 10.10。
玩Ubuntu ,把我的好多U盘都做成了引导盘了,我的U盘不少,但是可以用的却一个都没有了……
好多U盘里面都是多重引导,觉得在一个U盘里面只做一个系统太浪费。用了这么多引导程序,还是觉得Bootmgr 是最好用的,所以习惯用Bootmgr 去引导所有的系统。Bootmgr 本来是用来引导Vista 和Windows 7 ,在硬盘和光盘上都可以引导,而且使用非常方便,微软提供的bcdedit 命令非常好用!想要用它来引导Windows XP 和Ubuntu 却不成功。Windows XP 在硬盘和光盘上使用的引导不同,直接将光盘拷贝到U盘是用不了的,想把光盘放在U盘里面用,不过没有成功过,只有修改版的才可以,原版根本不行。我向来是希望以最小的改动来达到目的的,不喜欢使用被别人修改过的,而自己不了解的东西,太不透明了,而且每个人的习惯差异很大,别人改动的,对我来说不一定好用,可能有太多冗余,累赘!干脆不用别人的,自己动手!Bootmgr 引导Windows XP 光盘看来是不行了,引导已经安装好的Windows XP 倒是可以,但是要把微软的系统安装在USB 可移动存储设备上,实在是太困难了,只能用PE ,加载Wim 镜像到内存。
Bootmgr 引导Ubuntu ,试验了很久,先是从Ubuntu Live USB 开始的。以前版本的Ubuntu 都很容易就成功了,Ubuntu 10.10 不知怎么回事,刚开始试了几次都不行,后来又好了,其实采用的方法都是一样的。大概是一种万能的办法,但是成功确实是要讲概率的。先制作一个Ubuntu Live USB ,引导程序是syslinux,(Live CD 用的是 isolinux ),使用bootice 提取U盘分区的DBR(PBR),命名为syslinux.pbr ,存放在U盘根目录,www.6688.cc然后把Windows 7 的PE 光盘解压到U盘根目录,将Bootmgr 引导程序写入MBR,使用,命令”Bootsect /nt60 X: /force /mbr”,然后使用bcdedit 命令:
bcdedit /store X:\boot\bcd /create {45c374b2-8460-11df-8950-0024814b7667} /d “Ubuntu” /application bootsector
bcdedit /store X:\boot\bcd /set {45c374b2-8460-11df-8950-0024814b7667} device boot
bcdedit /store X:\boot\bcd /set {45c374b2-8460-11df-8950-0024814b7667} path \syslinux.pbr
bcdedit /store X:\boot\bcd /displayorder {45c374b2-8460-11df-8950-0024814b7667} /addfirst
这样Ubuntu 的引导项就添加进去了,显示在选择菜单的最上面。
这样还是Ubuntu Live USB ,启动太慢,每次都要选择使用,跟安装好的Ubuntu 相比,处于劣势,而且一般不会讲casper-rw 文件设置太大,这就对安装软件产生了限制,所以希望安装一个Ubuntu 系统。习惯把Windows 7 的PE 和Ubuntu 放在一个U盘上。在硬盘上,使用wubi安装使用过Ubuntu ,也完全安装过,虚拟机里面也用过,在虚拟机里面用得最多,因为要解决锐捷比较麻烦,Ubuntu 无法识别我的网卡,还要安装网卡驱动……真要崩溃,我没办法联网,也不知道需要什么样的网卡驱动,惠普根本就没有提供Linux 的驱动……自锁了!没办法,只好在虚拟机里面玩玩。
做Ubuntu 和Windows 的双系统,还是很简单,但是大多都是先安装Windows ,www.linuxidc.com再安装Ubuntu ,最后MBR 里的引导程序是Grub 或者Grub2 ,这样会自动添加Windows 的引导项,以供选择。但是我们平常使用Windows 还是比Ubuntu 要频繁得多的,每次都要这样一次一次的选择,太麻烦了,希望能够用Bootmgr 来引导Ubuntu 。这种想法很早就有了,一直都没能成功,在网络上搜索,都没有找到解决方案。今天看到有人跟我有同样的想法,于是我想再试试看,争取把它解决。想到了使用wubi ,在使用wubi 安装的Ubuntu 中就是由Bootmgr 来引导Ubuntu 的,但是拷贝了wubi的两个关键文件-wubildr和wubildr.mbr,还是不行。觉得问题用该是出在另外一个文件-wubildr.cfg,这个是配置文件,这个文件里面写的是wubi 安装使用的虚拟磁盘root.disk 和swap.disk ,现在我的Ubuntu 是完全安装的,直接使用这个文件肯定不行,必须要进行修改。经过多次修改最终终于获得了成功,活动的主分区的根目录里面有4个启动Ubuntu 的关键文件,以上3个和grub.cfg ,grub.cfg 是Ubuntu 分区的grub 目录拷贝过来的,不需要修改。
wubildr.cfg文件修改后如下:
set show_panic_message=true
set root=(hd0,2)
if [ -e /boot/grub/grub.cfg ]; then
if configfile /boot/grub/grub.cfg; then
set show_panic_message=false
fi
else
if [ -e /grub/grub.cfg ]; then
if configfile /grub/grub.cfg; then
set show_panic_message=false
fi
fi
fi
if [ ${show_panic_message} = true ]; then
echo “It is not possible to boot from the Ubuntu image.”
echo “Please verify that the Ubuntu installation was not removed.”
echo “If that is not the case, please check that the Windows filesystem”
echo “is not corrupted: reboot into Windows and run: chkdsk /r”
echo “Then try again.”
fi
修改BCD 文件的命令:
bcdedit /store X:\boot\bcd /set {bootmgr} locale “zh-CN”
bcdedit /store X:\boot\bcd /set {bootmgr} description “Windows 启动管理器”
bcdedit /store X:\boot\bcd /timeout 10
bcdedit /store X:\boot\bcd /set {default} description “Windows 7 PE”
bcdedit /store X:\boot\bcd /set {default} locale “zh-CN”
bcdedit /store X:\boot\bcd /set {memdiag} locale “zh-CN”
bcdedit /store X:\boot\bcd /set {memdiag} description “内存检测工具”
bcdedit /store X:\boot\bcd /create {45c374b2-8460-11df-8950-0024814b7667} /d “Ubuntu 10.10” /application bootsector
bcdedit /store X:\boot\bcd /set {45c374b2-8460-11df-8950-0024814b7667} device boot
bcdedit /store X:\boot\bcd /set {45c374b2-8460-11df-8950-0024814b7667} path \wubildr.mbr
bcdedit /store X:\boot\bcd /displayorder {45c374b2-8460-11df-8950-0024814b7667} /addfirst
bcdedit /store X:\boot\bcd /enum all /v
向磁盘写入主引导:
bootsect /nt60 X: /force /mbr
写入这些之后,一切OK!终于成功了,不容易啊,花了好久才解决!
还有其他方法,可以使用bootice 提取Ubuntu 分区,保存为ubuntu.pbr ,在将它写入引导文件BCD 的,一种万能的方法,但是,并不一定能成功。也可以使用EasyBCD,这种方法简单,但是不透明,对软件的依耐性太高,也不太好。还是自己动手解决是最好的。