所用到的工具:grub4dos
利用该工具的优点:可以兼容绝大部分的系统,包括Windows、Linux等高低版本的启动菜单的创建与管理:解决了低版本系统引导内核因无法兼容高版本系统引导内核而无法启动高版本系统的问题,或者不同类型系统之间无法启动别的系统的问题。利用该工具甚至可以启动ISO系统镜像和IMG镜像,只是启动ISO镜像时由于完全退出了grub,ISO由于失去了支持从原来的CD状态变成了一个完全读不懂得文件,所以启动后只能继续已经加载进内存的信息,有关ISO中的内容已经被完全隔绝,所以可以进PE,却不能进行有关克隆的操作。
该工具的 启动原理:该工具提供了兼容各个系统的运行文件,提取工具包里的适应当前系统的文件,在该系统中创建grub4dos的引导菜单,在启动系统时通过选择启动grub4dos,然后进入grub4dos的菜单管理界面,在该界面我们可以进入各个系统的引导内核或者创建编辑系统
菜单,进入引导内核之后grub4dos<将退出取而代之的是要启动的系统的菜单选择界面,在该界面,是我们常见的系统启动菜单,我们就可以进入想要进入的系统了。该工具所起的作用相当于媒介的作用,从一个系统的引导内核转换到另一个系统的引导内核。
一:在系统中添加grub4dos的启动项(媒介启动必须)
在现有的操作系统上引导启动grub4dos
1、xp引导启动grub4dos
从grub4dos中提取一个名为grldr的文件,其它的都不需要。把这个文件放到xp系统盘的根目录下,然后用记事本打开系统盘根目录下的文件boot.ini,请注意,这个文件是只读和隐藏的,先要去掉只读和隐藏,才能够看到和改写的。在里面最后添加一行如下:
c:\grldr=grub4dos
存盘后,在开机时候的操作系统选择菜单上,选择grub4dos进入,也就启动grub4dos了。
2、win7和vista引导启动grub4dos
从grub4dos中提取名为grldr和grldr.mbr这两个文件放到windows 7的启动盘(windows 7的windows文件夹所在的盘)的根目录下。在记事本中写入如下命令,保存为:创建grldr.mbr启动项.bat 右键以管理员身份运行,可以一键创建grldr.mbr的启动项:
Bcdedit /create {ffffffff-8d96-11de-8e71-ffffffffffff} /d "grub4dos" /application BOOTSECTOR
Bcdedit /set {ffffffff-8d96-11de-8e71-ffffffffffff} device partition=%systemdrive%
bcdedit /set {ffffffff-8d96-11de-8e71-ffffffffffff} path \grldr.mbr
bcdedit /displayorder {ffffffff-8d96-11de-8e71-ffffffffffff} /addlast
bcdedit /timeout 5
@pause
另外,请在记事本中写入如下命令,保存为:删除grldr.mbr启动项.bat,右键以管理员身份运行,可以删除我们用前一个批处理所建立的启动项:
bcdedit /delete {ffffffff-8d96-11de-8e71-ffffffffffff}
@pause
批处理其实是调用bcdedit命令添加grldr.mbr的启动项,但没有写得很复杂(因为没有必要),所以如果已经存在着一个相同的{ffffffff-8d96-11de-8e71-ffffffffffff}标识符的话,则运行的时候会报错,但99.999%可以保证你的电脑上不会预先存在着这样的一个标识符的。如果有的话,你已经是很懂得bcdedit命令了的,所以不会用我这样的傻瓜式批处理的了。
下面让我们看看如何手动用bcdedit命令添加grldr.mbr的启动项。
以管理员身份运行cmd,在cmd中输入如下命令并回车(命令不区分大小写,但请注意命令中的空格):
bcdedit /create /d "ubuntu" /application BOOTSECTOR
这个命令会得到一个如同下面样式的标识符:
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx}
(比如: {2e850b34-8d96-11de-8e71-d1c665e3cb34})
为了避免手动写入标识符出错,我们可以在CMD中右击,点标记,然后拖动鼠标,选定这个{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx},再点一下右键,也就复制了。然后我们可以在CMD中右击,点粘贴,可以把我们复制的内容粘贴到CMD中。
再一条一条地运行如下四条命令:
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx} device partition=c:
(这里面的c:是windows 7的启动盘,也就是你放grldr和grldr.mbr这两个文件的盘,如果你的不是c盘,请改为对应的盘符)
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx} path \grldr.mbr
bcdedit /displayorder {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx} /addlast
bcdedit /timeout 5
当你不再需要这个添加的grldr.mbr的启动项的时候,你可以以管理员身份运行cmd,用下面的命令删除它:
bcdedit /delete {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx}
如果你忘了这个标识符{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx},可以以管理员身份运行cmd,输入bcdedit命令后回车,你可以到这个标识符的。
3.在基于grub引导的linux下添加grub4dos的启动项,比如ubuntu9.04和fedora12,都是基于grub引导的。
从grub4dos提取一个名为的文件,把这个文件放到一个盘的根目录下,然后:
用文本编辑器打开:/boot/grub/menu.lst
在末尾添加一段如下:
title grub4dos
root (hdx,y)
kernel /
boot
注意,root (hdx,y),要把这里面的x和y改成你存放文件的硬盘编号和分区编号,比如:(hd0,8),须要注意的是,ubuntu9.04使用的是grub,而不是grub2,它的硬盘编号也是从0开始的,这与grub2是一样的,但分区编号也是从0开始的,这与grub2不同。主分区是 0123,逻辑分区是 所以在grub2下如果是(hd0,9),在grub下就是(hd0,8)
4.在基于grub2引导的linux下添加grub4dos的启动项,比如ubuntu9.10
用文本编辑器打开:/boot/grub/grub.cfg
在末尾添加一段如下:
menuentry "Grub for Dos" {
insmod ntfs
set root=(hdx,y)
linux /
}
注意,root (hdx,y),要把这里面的xwin7显示隐藏文件和y改成你存放文件的硬盘编号和分区编号。
二、用grub4dos引导启动别的操作系统或者操作系统的安装程序。
1、grub4dos引导启动xp系统
menu.lst文件的写法是:
title winxp
find --set-root /ntldr
chainloader /ntldr
boot
请注意,这里find --set-root /ntldr的写法。这个命令的作用是,全盘搜索各分区根目录下的ntldr文件,搜到即停止并把这个文件所在的分区设为root分区。这就意味着,如果你的全盘根目录下只有一个ntldr文件,命令能很准确地定位。如果存在着多个,则命令是按照分区顺序进行搜索的,搜到了前面的,就不会再往后搜,所以可能不能准确地定位。解决的办法:1是全盘的根目录下只保留一个名为ntldr的文件,但有时这不太现实。2、在要引导的分区随便新建一个文件,给这个文件取一个名字,这个文件名字是全盘唯一的。然后把这一行改为:
find --set-root /你所新建的文件名
还有一种写法是,把这一行写成:
root (hdx,y)
这种写法需要准确地指定分区,这对于菜鸟有时不那么现实。
以下的find --set-root的写法都与这个是一样的。
2.grub4dos引导启动win7和vista
menu.lst文件的写法是:
title win7
find --set-root /bootmgr
chainloader /bootmgr
boot
3.grub4dos引导启动基于grub引导的linux系统。
由于grub引导的linux系统自带有menu.lst文件,所以我们不需要自己手动建立menu.lst文件,启动grub4dos后,它会自动搜索linux的menu.lst文件并启动linux系统 。
4.grub4dos引导启动基于grub2引导的linux系统
menu.lst文件的写法是:
timeout 0
default 0
title grub2
find --set-root /boot/grub/core.img /grub/core.img
kernel /boot/grub/core.img
boot
5.grub4dos引导启动ubuntu9.04的livecd
发布评论