为了让Windows 的重装维护等工作不影响到Ubuntu的正常引导,我一般在安装完成Ubuntu后都会想办法将MBR信息写回Windows兼容的代码,而将Ubuntu的引导作为windows 启动管理器 bootmgr的一个条目.
1. 在Ubuntu 9.10之前,使用grub4dos很容易就能满足要求了,首先使用系统自带的bcdedit工具添加一条bootsector的记录
bcdedit /create /d "description" /application bootsector
bcdedit /set {id} device partition=c:
bcdedit /set {id} path \grldr.mbr
bcdedit /displayorder {id} /addlast
其中的 description 可以自己定义,,再将下载好的grub4dos中的grldr.mbr和grldr两个文件都放到c盘下,重启后就能选择添加的这个bootsector来引导到Ubuntu叻,由于grub4dos能够自动搜索各分区的menu.lst文件,因此如果仅仅为了引导到Ubuntu而没有别的要求我们也不用自己额外地去写一个menu.lst文件叻.最后再去PE下使用bootsect或者bootrec工具来修复MBR为windows 兼容的代码即完成所有的操作.
PS:如果是存在隐藏的活动分区同时需要将grub4dos的引导文件也放入这里,那么需要使用 diskpart 来添加/移除 盘符,添加bootsector的第二句命令中指定的partiton也应该根据情况修改!
2. 在Ubuntu 9.10中改变了默认的启动管理器为 Grub2 ,无疑 Grub2 带来了更为先进的特性如模块化的设计等,可惜却没法轻易的和前面一样通过grub4dos来引导了,还好grub2的开发人员还是提供给了我们类似的方法
和前面一样添加一个bootsector项,但是第三句 为 path \g2ldr.mbr ,然后将 g2ldr.mbr 和 g2ldr 两个文件 (哪有?google一下就出来叻)放到活动分区下(一般C盘..恩,以后不重复了),由于grub2 不会搜索所有的分区寻找配置文件,所以还需要在Ubuntu下将相关的文件全拷过来, 默认 即/boot 目录的所有文件, 在制作时没有另外指定参数的g2ldr会读取 /boot/grub2/grub.cfg 文件来引导系统,如果grub.cfg的信息都正确的话,理论上成功启动也就没问题叻,最后,还是修复MBR搞定~
3. 其实有种最简单的方法通吃以上两种情况的,就是直接将MBR内容做成一个引导文件,然后通过bootmgr来引导,方法如下:
在Ubuntu下终端敲入
sudo dd if=/dev/sda of=/media/win/grub2 bs=512 count=1
就是使用 dd 命令将硬盘前512字节的内容复制到为 grub2这个文件 , /media/win 为某个windows 盘符的挂载路径,根据自己情况修改,grub2这个名字可以自定义,接下来还是去windows下建立bootsector条目, 修改第三条的为参数路径为 path \grub2 再将dd命令生成的grub2文件拷入C盘,,修复MBR即可.这个算是最简单也最通用的办法叻,推荐!