admin 管理员组

文章数量: 887021


2023年12月19日发(作者:target属性详解)

多系统菜单

多系统引导菜单的创建

所用到的工具:grub4dos

grub4dos是非常好的多重操作系统引导管理器。我们常常需要用grub4dos来引导多个操作系统,或者是通过grub4dos来引导启动操作系统的安装程序。

利用该工具的优点:可以兼容绝大部分的系统,包括Windows、Linux等高低版本的启动菜单的创建与管理:解决了低版本系统引导内核因无法兼容高版本系统引导内核而无法启动高版本系统的问题,或者不同类型系统之间无法启动别的系统的问题。利用该工具甚至可以启动ISO系统镜像和IMG镜像,只是启动ISO镜像时由于完全退出了grub,ISO由于失去了支持从原来的CD状态变成了一个完全读不懂得文件,所以启动后只能继续已经加载进内存的信息,有关ISO中的内容已经被完全隔绝,所以可以进PE,却不能进行有关克隆的操作。

该工具的 启动原理:该工具提供了兼容各个系统的运行文件,提取工具包里的适应当前系统的文件,在该系统中创建grub4dos的引导菜单,在启动系统时通过选择启动grub4dos,然后进入grub4dos的菜单管理界面,在该界面我们可以进入各个系统的引导内核或者创建编辑系统菜单,进入引导内核之后grub4dos<将退出取而代之的是要启动的系统的菜单选择界面,在该界面,是我们常见的系统启动菜单,我们就可以进入想要进入的系统了。该工具所起的作用相当于媒介的作用,从一个系统的引导内核转换到另一个系统的引导内核。

一:在系统中添加grub4dos的启动项(媒介启动必须)

在现有的操作系统上引导启动grub4dos

1、xp引导启动grub4dos

从grub4dos中提取一个名为grldr的文件,其它的都不需要。把这个文件放到xp系统盘的根目录下,然后用记事本打开系统盘根目录下的文件,请注意,这个文件是只读和隐藏的,先要去掉只读和隐藏,才能够看到和改写的。在里面最后添加一行如下:

c:grldr=grub4dos

请注意,这里的c:是假设你的系统盘是c盘。其实活动主分区在xp下都是c盘,所以你也没太可能是其它的盘吧。

1

多grub4dos了。

系统菜单

存盘后,在开机时候的操作系统选择菜单上,选择grub4dos进入,也就启动2、win7和vista引导启动grub4dos

从grub4dos中提取名为grldr和这两个文件放到windows 7的启动盘(windows 7的windows文件夹所在的盘)的根目录下。在记事本中写入如下命令,保存为:创建启动项.bat 右键以管理员身份运行,可以一键创建的启动项:

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

bcdedit /displayorder {ffffffff-8d96-11de-8e71-ffffffffffff} /addlast

bcdedit /timeout 5

@pause

另外,请在记事本中写入如下命令,保存为:删除启动项.bat,右键以管理员身份运行,可以删除我们用前一个批处理所建立的启动项:

bcdedit /delete {ffffffff-8d96-11de-8e71-ffffffffffff}

@pause

批处理其实是调用bcdedit命令添加的启动项,但没有写得很复杂(因为没有必要),所以如果已经存在着一个相同的{ffffffff-8d96-11de-8e71-ffffffffffff}标识符的话,则运行的时候会报错,但99.999%可以保证你的电脑上不会预先存在着这样的一个标识符的。如果有的话,你已经是很懂得bcdedit命令了的,所以不会用我这样的傻瓜式批处理的了。

下面让我们看看如何手动用bcdedit命令添加的启动项。

以管理员身份运行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中。

2

多系统菜单

再一条一条地运行如下四条命令:

bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx} device partition=c:

(这里面的c:是windows 7的启动盘,也就是你放grldr和这两个文件的盘,如果你的不是c盘,请改为对应的盘符)

bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx} path

bcdedit /displayorder {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx} /addlast

bcdedit /timeout 5

当你不再需要这个添加的的启动项的时候,你可以以管理员身份运行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/

在末尾添加一段如下:

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/

在末尾添加一段如下:

menuentry "Grub for Dos" {

3

多insmod ntfs

系set root=(hdx,y)

linux /

}

统菜单

注意,root (hdx,y),要把这里面的x和y改成你存放文件的硬盘编号和分区编号。

二、用grub4dos引导启动别的操作系统或者操作系统的安装程序。

1、grub4dos引导启动xp系统

文件的写法是:

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的写法都与这个是一样的。

4dos引导启动win7和vista

文件的写法是:

title win7

find --set-root /bootmgr

4

多boot

系chainloader /bootmgr

统菜单

4dos引导启动基于grub引导的linux系统。

由于grub引导的linux系统自带有文件,所以我们不需要自己手动建立文件,启动grub4dos后,它会自动搜索linux的文件并启动linux系统 。

4dos引导启动基于grub2引导的linux系统

文件的写法是:

timeout 0

default 0

title grub2

find --set-root /boot/grub/ /grub/

kernel /boot/grub/

boot

4dos引导启动ubuntu9.04的livecd

从网上下载ubuntu的iso文件,把它放在一个盘的根目录下,这个盘可以是ntfs的,也可以是fat32的,当然,它也可以是linux的文件系统.只是不要把这个文件放在你要安装系统的分区上就行了(这句纯是废话啦!)

用 winrar或者其它工具从iso文件中提取Casper下的vmlinuz和两个文件到这同一个盘的根目录下.

在这个盘的根目录下,新建一个文本文件,把它重命名为:

在这个文件里面写入如下命令:

title Install Ubuntu

find --set-root /

kernel /vmlinuz boot=casper iso-scan/filename=/

locale=zh_-8

initrd /

注意,这个命令里面的 是下载的iso文件的名字,你的文件可能不是这个名字,所以要把它改为你自己的文件的名字。

5

多系统菜单

4dos引导启动ubuntu9.10的livecd

从网上下载ubuntu的iso文件,把它放在一个盘的根目录下,这个盘可以ntfs的,也可以是fat32的,当然,它也可以是linux的文件系统.只是不要把这个文件放在你要安装系统的分区上就行了(这句纯是废话啦!)

用 winrar或者其它工具从iso文件中提取Casper下的vmlinuz和两个文件到这同一个盘的根目录下.

在这个盘的根目录下,新建一个文本文件,把它重命名为:

在这个文件里面写入如下命令:

title Install Ubuntu

find --set-root /

kernel /vmlinuz boot=casper iso-scan/filename=/

locale=zh_-8

initrd /

注意,这个命令里面的 是下载的iso文件的名字,你的文件可能不是这个名字,所以要把它改为你自己的文件的名字。

4dos引导启动fedora12的livecd

下载fedora 12 livecd的映象文件,比如:

提取内的LiveOS文件夹到一个分区的根目录下,提取内isolinux文件夹里的vmlinuz0 到这个分区的根目录下。

中写入如下内容:

title Fedora-12-i686-Live

find –set-root /vmlinuz0

kernel /vmlinuz0 root=live:LABEL=INSTALL rootfstype=auto ro liveimg quiet rhgb

initrd /

LABEL=INSTALL是指定了用来引导livecd的分区的卷标。需要把卷标INSTALL换成你自己的。在我的电脑里面看到的某个盘的名字,就是这个盘的卷标。如果你的分区没有卷标,在我的电脑里面右击它,点重命名,给它取一个名字即可。但不要用中文。grub可能不支持中文卷标。linux下可以用e2label 命令给分区指定卷标。

6

多系统菜单

4dos引导iso文件,文件的写法是:

title

find --set-root /xxxiso

map / (hd32) || map --mem / (hd32)

map --hook

chainloader (hd32)

4dos引导img文件,文件的写法是:

title

find --set-root --ignore-floppies /

map / (fd0) || map --mem / (fd0)

map --hook

chainloader (fd0)+1

rootnoverify (fd0)

7


本文标签: 文件 系统 引导 分区 启动