这一篇是写给有兴趣自己折腾启动盘的读者看的,没兴趣的同学直接无视它吧~ 。◕‿◕。
万能启动盘的基本制作方法和附件下载,请参考:
《装系统不求人——利用Grub4dos打造万能启动盘》
http://www.paincker.com/sysinst-create-bootable-disk
基本使用方法请参考:
《装系统不求人——万能启动盘使用简介》
http://www.paincker.com/sysinst-bootable-disk-manual
万能启动盘原理浅析
grub4dos是一个功能很全的BootLoader,也是我们的启动盘中最核心的东西。BootLoader之间可以互相加载。在我们的万能启动盘中:
-
启动盘使用grub4dos启动ISO镜像和IMG镜像,实际上这些镜像本身就是可启动的,可以直接烧录到U盘中成为独立的启动盘(可使用UltraISO软件实现),自身也包含了BootLoader。
-
而我们则是利用grub4dos加载了这些镜像的BootLoader,间接启动镜像,从而实现了一个启动盘中集成多个启动盘的效果。
-
grub4dos还可以直接加载硬盘上的BootLoader,从而我们的启动盘中有了“从硬盘启动”的选项,选中后会直接跳转到硬盘启动电脑。
-
可以使用grub4dos加载Windows的BootLoader,从而启动Windows。同样,还可以利用grub4dos引导Linux系统镜像,从而安装Linux系统,在之后的文章中会有用到。
-
通过添加想要的ISO和IMG镜像,例如Win8 PE,再修改万能启动盘中grub4dos的配置文件menu.lst,启动盘的功能可以无限扩展下去。
-
也正因此,所以它被称为“万能启动盘”,果然是功能强大,十八般武艺样样精通啊~
定制Message文件
可以利用附件中的MsgDiyer工具自己制作message文件(message文件在U盘的boot文件夹里面)。message文件中包含了背景图片、中文字体、菜单支持等内容。
下载各种系统的镜像文件
这个我就不多说了,可以在网上找找,比如Win8 PE ISO镜像
,保存到U盘~
前面说了,这些镜像本身也是可启动的。如果有兴趣,你可以从VirtualBox虚拟机直接启动Win8PE的ISO镜像,还可以用UltraISO软件将其直接烧写进U盘,做成Win8 PE启动盘。当然这会破坏万能启动盘的grub4dos,从而降级成为只有Win8 PE一项功能的启动盘。
附:UltraISO烧写镜像到U盘的方法简介
-
下载附件中的UltraISO并以管理员身份运行,并选择菜单-文件-打开,选中可启动的ISO文件即可打开。再选择菜单-启动-写入硬盘映像,如图。
附件下载链接:
http://pan.baidu.com/s/1c08NJs0 -
硬盘驱动器中选择U盘,写入方式一般用USB-HDD+,然后点击写入即可(写入前会格式化U盘,注意备份数据)。
修改menu.lst文件
Grub4dos默认加载menu.lst作为配置文件,用于输出选项菜单并启动相应的系统。本文给出一些menu.lst的用法示例,更具体的写法可以参考附件中grub-tools
启动盘工具包中的《grub4dos初级教程》。
一个完整的menu.lst参考:
-
timeout 20
-
default 0
-
gfxmenu (hd0,0)/boot/message
-
title [1] 启动Win7PE精简网络版
-
map (hd0,0)/boot/imgs/win7pe.iso (hd32)
-
map --hook
-
chainloader (hd32)
-
boot
-
title [2] 启动Ghost 11.0.2
-
map --mem (hd0,0)/boot/imgs/ghost.img (fd0)
-
map --hook
-
chainloader (fd0)+1
-
rootnoverify (fd0)
基本语法
- 使用
#
开头可作为注释 - timeout 20表示等待20s启动默认项
- default 0表示默认启动第一项
- gfxmenu (hd0,0)/boot/message加载message文件
- 每一条启动项菜单以title开始,表示标题,后面是要执行的操作。
文件路径写法
grub4dos使用的文件路径使用的是Linux风格的写法。
完整路径示例:(hd0,0)/boot/message
,表示启动盘中boot子目录下的message文件。
-
设备名。
cd
表示光驱(或USB-CDROM),fd
表示软驱(或USB-FDD),hd
表示硬盘(或USB-HDD)。 -
设备编号。每种类型的设备按照识别的顺序,编号从0开始递增。grub4dos自身所在的设备最先被识别,所以这里U盘启动盘为
hd0
。 -
分区编号。分区编号可以参考《装系统不求人——硬盘的秘密》。
-
子目录和文件。
-
设备名、设备编号、分区编号,三者组成完整的分区,例如
(hd0,0)
。 -
如果路径中没有指定分区,则默认以root作为分区。
-
通过
root
指令可以指定root分区;还可以使用find --set-root
指令自动指定root分区。例如下面的三段代码:-
#直接加载分区(hd0,0)中的menu2.lst文件
-
configfile (hd0,0)/menu2.lst
-
#指定root分区为(hd0,0)
-
root (hd0,0)
-
#加载root分区下的menu2.lst文件
-
configfile /menu2.lst
-
#按编号顺序,搜索每个分区根目录是否包含menu2.lst文件,并将最先找到的分区设为root
-
find --set-root (hd0,0)
-
#加载root分区下的menu2.lst文件
-
configfile /menu2.lst
-
menu.lst常用写法示例
-
启动ISO光盘镜像
title 启动ISO光盘镜像:Win7PE
map (hd0,0)/boot/imgs/win7pe.iso (hd32)
map --hook
chainloader (hd32)
boot
-
启动IMG软盘镜像
title 启动IMG软盘镜像:Ghost 11.0.2
map --mem (hd0,0)/boot/imgs/ghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
-
从硬盘启动
title 从硬盘启动
rootnoverify (hd1)
chainloader +1
-
加载其他配置文件
title 加载配置文件:menu2.lst
configfile (hd0,0)/menu2.lst
-
进入Grub命令行
title 进入GRUB命令行
commandline
-
加载BootMgr,从而启动Win 7/8
BootMgr是Windows NT6.x系统的BootLoader,Windows NT6.x包括Win 7/8/Vista等
这里的
find --set-root /bootmgr
语句,会按编号顺序,自动在所有分区根目录搜索bootmgr文件,如果找到,则将最先找到的分区设置为root
。之后所有没有指定分区的文件路径,就默认在
root
分区,所以chainloader /bootmgr
语句,就是用chainloader
指令启动了root分区下的bootmgr文件,也就是Win7/8的BootLoader。title 启动Win Vista/7/8
find --set-root /bootmgr
chainloader /bootmgr
boot
-
加载NTLDR,从而启动Win XP
NTLDR是Windows NT5.x系统的BootLoader,Windows NT5.x包括Win XP等
title 启动Win XP
find --set-root /ntldr
chainloader /ntldr
boot