标题: 实例分享: 用BOOTICE工具在U盘上实现SYSLINUX与GRUB4DOS双启动
tdq868xin (神仙的本能)
版主
Rank: 7Rank: 7Rank: 7
断 剑


UID 328196
精华 0
积分 16828
帖子 1311
威望 4129
阅读权限 100
注册 2009-7-5
来自 中国 成都
发表于 2009-8-30 13:52  资料  短消息  加为好友 

实例分享: 用BOOTICE工具在U盘上实现SYSLINUX与GRUB4DOS双启动

首先要感谢Pauly提供的强大BOOTICE工具;希望采用了本文方法制作启动U盘的朋友回帖反馈,谢谢!

效果:

1.启动文件所在分区根目录下只有GRLDR文件和BOOT文件夹;

2.启动时2秒内按“空格键”进入grub4dos菜单,否则进入SYSLINUX菜单;

3.SYSLINUX、grub4dos和BOOTMGR三个引导菜单之间可以相互任意切换。

4.本文最后有三张效果图。

下面把我的整个操作过程用图献给朋友们:

一、准备一个U盘(本人用的是一个2G金士顿)

        下载BOOTICE工具:http://bbs.wuyou.com/viewthread.php?tid=57675&highlight=BOOTICE

        下载附件备用:内有bcd.vbs、syslinux.cfg和grldr.exe

二、BOOTICE工具实现双启动:

1.U盘进行分区及格式化

注:BOOTICE会自动优先选择可移动磁盘,比如U盘,如果没有插上可移动磁盘,目标磁盘为你的硬盘,但硬盘是不会被它分区及格式化的,“分区及格式化”选项为灰色,防止误操作。


注:根据需要对U盘进行分区和格式化,本人选择的是“HDD模式(双分区)”,“交换隐藏分区和数据分区”很有用,后面会详细说到。

注:根据需要和喜好设置分区大小,文件系统,卷标,是否执行格式化,是否可见(只能选一个,可随便先选一个,后面可根据需要交换隐藏分区和数据分区)。



注:此步可能会出现错误提示,如出现请点“继续”。



注:通过上面的步骤已经完成了对U的分区及格式化,效果如下:

注:一般来说,我们都喜欢把启动文件、PE等放在第一个分区,隐藏起来,我们要把文件写入第一个分区,对第一个分区进行操作就得用“交换隐藏分区和数据分区”把第一个分区显示出来,操作如下:


注:先执行“交换隐藏分区和数据分区”,出现下图成功提示后点取消,返回上级操作界面。

交换后效果如下:

2.在第一个分区建立SYSLINUX引导


注:根据个人情况选择,本人选择的是第三项,因为这样做LDLINUX.SYS为内置,不用担心被误删除


注:成功后效果如下:

3.U盘添加GRUB4DOS的主引导记录



注:为了实现SYSLINUXGRUB4DOS双启动,本人选择了“优先尝试引导原来的MBR”,启动热键为默认的“空格”,延时时间为2秒,其余为默认设置。


现在SYSLINUXGRUB4DOS双启动的引导操作已经完成。

三、拷贝启动和PE所需要文件到第一分区(BOOT
文件结构如下:

注:

1.GRLDR文件采用了内置配置菜单(可减少menu.lst文件),推荐使用GRLDR.EXE修改内置菜单,如把GRLDR.EXE与要修改的GRLDR放在同一文件夹内,打开GRLDR.EXE时会自动导入此文件夹里的GRLDR,界面如下:

本人的GRLDR菜单如下:

timeout 10


default 9


color cyan/blue white/magenta


find --set-root /boot/grub/grubhere.id


splashimage /boot/grub/2008.xpm.gz


foreground 0000ff


find --set-root /boot/grub/grubhere.id


fontfile /boot/grub/muifont.gz


title 0DOS


find --set-root /boot/grub/grubhere.id


kernel /boot/grub/Memdisk.gz c=80 h=2 s=18 floppy


initrd /boot/dostools/DOS.img


title 1GHOST


find --set-root /boot/grub/grubhere.id


kernel /boot/grub/Memdisk.gz c=80 h=2 s=36 floppy


initrd /boot/dostools/GHOST11.img


title 2DISKGEN


find --set-root /boot/grub/grubhere.id


kernel /boot/grub/Memdisk.gz c=80 h=2 s=18 floppy


initrd /boot/dostools/DISKGEN.img


title 3PASSWORD


find --set-root /boot/grub/grubhere.id


kernel /boot/grub/Memdisk.gz c=80 h=2 s=18 floppy


initrd /boot/dostools/password.img


title 4】切换到syslinux菜单


find --set-root /boot/grub/grubhere.id


chainloader /boot/grub/syslinux.te


title 5】启动WindowsPE菜单


find --set-root /boot/grub/grubhere.id


chainloader /boot/PE/bootmgr


title 6】启动WinPEiso


find --set-root /boot/grub/grubhere.id


map --mem /boot/grub/winpe.iso (hd32)


map --hook


chainloader (hd32)


boot


title 7】本机硬盘启动


map (hd0) (hd1)


map (hd1) (hd0)


rootnoverify (hd1,0)


makeactive


chainloader +1


title 8】重启计算机


reboot


title 9】关闭计算机


halt


title 10Grub命令行


commandline


2.BCD文件,本人是采用一个VBS脚本来生成的,便于修改,脚本如下:


Dim WshShell, FSO


Set WshShell = WScript.CreateObject("WScript.Shell")


Set FSO = WScript.CreateObject("Scripting.FileSystemObject")



WSHShell.run "bcdedit /createstore G:\bcd", 0, TRUE



WSHShell.run "Bcdedit /store G:\bcd /create {bootmgr} /d ""Windows Boot Manager""", 0, TRUE


WSHShell.run "Bcdedit /store G:\bcd /set {bootmgr} device boot", 0, TRUE


WSHShell.run "Bcdedit /store G:\bcd /set {bootmgr} locale ZH-CN", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /timeout 5", 0, TRUE



Set getGUID = WshShell.Exec("bcdedit /store G:\bcd /create /d ""返回SYSLINUX菜单"" /application bootsector")


Do While getGUID.Status = 0



WScript.Sleep 100


Loop




'Fun little set of code to grep out the GUID



strGUID = getGUID.StdOut.ReadAll



arr1GUID = Split(strGUID, "{")



arr2GUID = Split("{"&arr1GUID(1), "}")



strGUID = arr2GUID(0)&"}"




WSHShell.run "bcdedit /store G:\bcd /set "&strGUID&" device boot", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&strGUID&" path \boot\Grub\syslinux.te", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&strGUID&" locale ZH-CN", 0, TRUE



WSHShell.run "Bcdedit /store G:\bcd /set {bootmgr} displayorder "&strGUID&" /addfirst", 0, TRUE



WSHShell.run "Bcdedit /store G:\bcd /set {bootmgr} default "&strGUID&"", 0, TRUE



Set getGUID = WshShell.Exec("bcdedit /store G:\bcd /create /d ""返回GRUB4DOS菜单"" /application bootsector")


Do While getGUID.Status = 0



WScript.Sleep 100


Loop




'Fun little set of code to grep out the GUID



strGUID = getGUID.StdOut.ReadAll



arr1GUID = Split(strGUID, "{")



arr2GUID = Split("{"&arr1GUID(1), "}")



strGUID = arr2GUID(0)&"}"




WSHShell.run "bcdedit /store G:\bcd /set "&strGUID&" device boot", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&strGUID&" path \boot\Grub\grldr.mbr", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&strGUID&" locale ZH-CN", 0, TRUE



WSHShell.run "Bcdedit /store G:\bcd /set {bootmgr} displayorder "&strGUID&" /addfirst", 0, TRUE




WSHShell.run "bcdedit /store G:\bcd /create {ramdiskoptions}", 0, TRUE


WSHShell.run "Bcdedit /store G:\bcd /set {ramdiskoptions} locale ZH-CN", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set {ramdiskoptions} ramdisksdidevice boot", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set {ramdiskoptions} ramdisksdipath \boot\PE\boot.sdi", 0, TRUE




Set getGUID = WshShell.Exec("bcdedit /store G:\bcd /create /d ""Microsoft Windows PE"" /application OSLOADER")


Do While getGUID.Status = 0



WScript.Sleep 100


Loop




'Fun little set of code to grep out the GUID



strGUID = getGUID.StdOut.ReadAll



arr1GUID = Split(strGUID, "{")



arr2GUID = Split("{"&arr1GUID(1), "}")



ttrGUID = arr2GUID(0)&"}"




WSHShell.run "bcdedit /store G:\bcd /set "&ttrGUID&" device ramdisk=[boot]\boot\PE\boot.wim,{ramdiskoptions}", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&ttrGUID&" path \windows\system32\boot\winload.exe", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&ttrGUID&" osdevice ramdisk=[boot]\boot\PE\boot.wim,{ramdiskoptions}", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&ttrGUID&" locale ZH-CN", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&ttrGUID&" systemroot \windows", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&ttrGUID&" winpe yes", 0, TRUE


WSHShell.run "bcdedit /store G:\bcd /set "&ttrGUID&" detecthal yes", 0, TRUE



WSHShell.run "Bcdedit /store G:\bcd /set {bootmgr} displayorder "&ttrGUID&" /addfirst", 0, TRUE



新建一个记事本,把上面脚本拷到记事本,文件另存为VBS后缀名,如bcd.vbs,运行bcd.vbs后在G盘根目录下将生成BCD文件,拷到相应目录。注意:前提是有BCDEDIT.EXE文件,XP系统里没有的。VISAWin7里可以直接运行。


3.SYSLINUX.TE文件的获取:

SYSLINUX.TE文件是用来进行启动菜单切换的,可以从GRUB4DOSBOOTMGR菜单切换到SYSLINUX菜单。




注:把syslinux.te.bin文件名改为syslinux.te,取消bin后缀,以te为后缀,此步为个人喜好。然后把文件拷贝到相应目录。


4.GRLDR.MBR文件是用来从BOOTMGR菜单切换到GRUB4DOS用的。


5.SYSLINUX.CFG内容如下:


prompt


default 5


timeout 60


TOTALTIMEOUT 150


F1 readme.txt


F2 syslinux.cfg


default vesamenu.c32


MENU BACKGROUND wall.png


MENU WIDTH 48


MENU HSHIFT 32


MENU ROWS 8


MENU HELPMSGROW 23


MENU TIMEOUTROW 15


MENU TABMSGROW 16


MENU CMDLINEROW 16


menu color screen 37;40 #00000000 #00000000 none


menu color border 30;40
#ff60CA00 #00000000 none


menu color title 1;36;40 #f01291a9 #00000000 none


menu color unsel 37;40 #ff60CA00 #00000000 none


menu color hotkey 37;40 #FF2D28 #00000000 std


menu color sel 7;37;40 #ffffffff #ff60CA00 none


menu color hotsel 37;40
#FF2D28 #00000000 std


menu color scrollbar 30;44 #00000000 #00000000 none


menu color tabmsg 37;40 #DCAB06 #00000000 std


menu color cmdmark 1;36;40 #ff60CA00 #00000000 none


menu color cmdline 37;40 #ff60CA00 #00000000 none


menu color pwdborder 30;47 #ffff0000 #00000000 std


menu color pwdheader 31;47 #ffff0000 #00000000 std


menu color pwdentry 30;47 #ffff0000 #00000000 std


menu color timeout_msg 1;36;44 #f01291a9 #00000000 none


menu color timeout 37;40 #FF2D28 #00000000 std


menu color help 10;37;40 #FF2D28 #00000000 std


menu color msg07 37;40 #90ffffff #00000000 std


MENU TITLE TDQ's Tools Disk


LABEL DOS


MENU LABEL [1]
DOS


kernel /boot/syslinux/memdisk c=80 h=2 s=18 floppy


append initrd=/boot/DOSTOOLS/DOS.img


TEXT HELP



Run DOS.


ENDTEXT



LABEL Passord


MENU LABEL [2]
Passord


kernel /boot/syslinux/memdisk c=80 h=2 s=18 floppy


append initrd=/boot/DOSTOOLS/Password.IMG


TEXT HELP




Passord.


ENDTEXT


LABEL GHOST


MENU LABEL [3]
GHOST


kernel /boot/syslinux/memdisk c=80 h=2 s=36 floppy


append initrd=/boot/DOSTOOLS/ghost11.img


TEXT HELP



Run GHOST.


ENDTEXT


LABEL DISKGEN


MENU LABEL [4]
DISKGEN


kernel /boot/syslinux/memdisk c=80 h=2 s=18 floppy


append initrd=/boot/DOSTOOLS/diskgen.img


TEXT HELP



Run DISKGEN.


ENDTEXT


LABEL Grub4dos


MENU LABEL [5]
Grub4dos


MENU DEFAULT


kernel /boot/syslinux/ldntldr


append initrd=/grldr


TEXT HELP



Run Grub4dos.


ENDTEXT


LABEL Windows PE


MENU LABEL [6]
Windows PE


kernel /boot/syslinux/ldntldr


append initrd=/boot/PE/bootmgr


TEXT HELP



Run Windows PE.


ENDTEXT



LABEL Boot from harddisk


MENU LABEL [7]
Boot from harddisk


KERNEL /boot/syslinux/chain.c32


append hd0


TEXT HELP



Boot from harddisk.


ENDTEXT


LABEL reboot


MENU LABEL [8]
reboot


kernel /boot/syslinux/reboot.c32


TEXT HELP



Reboot.


ENDTEXT



6.WINPE.ISO采用grub4dos方式引导,ISO文件为老九老毛桃070911版,在此感谢老九老毛桃创造的经典。


7.BOOT.WIM来自WAIK3.0,现在PE3.0已经开始流行。


8.其他文件主要自互联网和WIN7安装盘及WAIK3.0,在此不一一详述了,感谢网上的高手朋友提供相应文件!


四、VMware运行效果:





五、补充说明:
1.如果第一分区(BOOT)为当前激活分区,一切正常;如果使用“交换隐藏分区和数据分区”后出现数据分区(DATA)为当前激活分区,SYSLINUX将不能使用;请将第一分区(BOOT)置为当前激活分区。
2.启动设置完成后,可使用“交换隐藏分区和数据分区”将BOOT分区隐藏,避免误操作,文件夹美观。
3.三个启动菜单可根据需要修改,WIM文件的PE建议用BOOTMGR启动,ISO文件的建议用GRUB4DOS启动。

4.在windows7中“交换隐藏分区和数据分区”可能出现提示成功却显示不对,按Pauly大大提供的解决方案为:退出U盘,重新插入,即可正常识别。
5.第二分区(DATA)根目录下不能存放GRLDR文件,否则开机时按空格会先调用此GRLDR,造成错误,另一解决方案为创立MBR主引导纪录时给GRLDR重命名,如TGRLDR,原拷入第一分区(BOOT)的GRLDR也相应重命名为TGRLDR。


[ 本帖最后由 tdq868xin 于 2009-9-2 21:09 编辑 ]



查看积分策略说明
附件
2009-8-30 13:52
  下载次数: 1341
启动菜单.part1.rar (100 KB)
 
2009-8-30 13:52
  下载次数: 1136
启动菜单.part2.rar (55.99 KB)
 
顶部
双响炮
上尉
Rank: 4



UID 70258
精华 0
积分 2618
帖子 177
威望 378
阅读权限 70
注册 2005-2-27
发表于 2009-8-30 14:47  资料  短消息  加为好友 

图片怎么全都看不见呀

顶部
tdq868xin (神仙的本能)
版主
Rank: 7Rank: 7Rank: 7
断 剑


UID 328196
精华 0
积分 16828
帖子 1311
威望 4129
阅读权限 100
注册 2009-7-5
来自 中国 成都
发表于 2009-8-30 15:17  资料  短消息  加为好友 

不会吧,我这里能看到啊

顶部
haiou327 (YY写写)
超级版主
Rank: 8Rank: 8


UID 53789
精华 0
积分 75491
帖子 4036
威望 12770
阅读权限 150
注册 2004-9-2
来自 汕头
发表于 2009-8-30 15:23  资料  短消息  加为好友  添加 haiou327 为MSN好友 通过MSN和 haiou327 交谈

图片链接有问题.请修正..

顶部
tdq868xin (神仙的本能)
版主
Rank: 7Rank: 7Rank: 7
断 剑


UID 328196
精华 0
积分 16828
帖子 1311
威望 4129
阅读权限 100
注册 2009-7-5
来自 中国 成都
发表于 2009-8-30 15:25  资料  短消息  加为好友 

不好意思,弄错了,正在重新编辑……
已经完成重新编辑。

[ 本帖最后由 tdq868xin 于 2009-8-30 16:01 编辑 ]

顶部
lhsz
专业军士
Rank: 3Rank: 3



UID 272218
精华 0
积分 726
帖子 14
威望 43
阅读权限 50
注册 2008-7-16
发表于 2009-8-30 17:23  资料  短消息  加为好友 

不错 帮顶~~ ~~

顶部
天涯海角1216
版主
Rank: 7Rank: 7Rank: 7
学无止境


UID 293678
精华 6
积分 34153
帖子 2307
威望 7920
阅读权限 100
注册 2009-1-19
来自 江苏
发表于 2009-8-30 18:27  资料  短消息  加为好友  QQ
很好的!
不过可以用我设计的http://bbs.wuyou.net/viewthread.php?tid=147929&extra=page%3D1
来安装也可以!

能把你的2张GRUB背景图发一下吗?
谢谢!!!





顶部
blsmzli
少尉
Rank: 4



UID 273561
精华 0
积分 1477
帖子 78
威望 137
阅读权限 70
注册 2008-9-13
发表于 2009-8-30 18:31  资料  短消息  加为好友  添加 blsmzli 为MSN好友 通过MSN和 blsmzli 交谈
好帖子,我等下测试下。呵呵。

顶部
tdq868xin (神仙的本能)
版主
Rank: 7Rank: 7Rank: 7
断 剑


UID 328196
精华 0
积分 16828
帖子 1311
威望 4129
阅读权限 100
注册 2009-7-5
来自 中国 成都
发表于 2009-8-30 18:47  资料  短消息  加为好友 


QUOTE:
原帖由 天涯海角1216 于 2009-8-30 18:27 发表
很好的!
不过可以用我设计的http://bbs.wuyou.net/viewthread.php?tid=147929&;extra=page%3D1
来安装也可以!

能把你的2张GRUB背景图发一下吗?
谢谢!!!

好的,已经上传,希望对你有用



查看积分策略说明
附件
2009-8-30 18:48
  下载次数: 377
背景.part1.rar (100 KB)
 
2009-8-30 18:48
  下载次数: 332
背景.part2.rar (77.83 KB)
 
顶部
hwd6
中将
Rank: 7Rank: 7Rank: 7



UID 69349
精华 2
积分 21890
帖子 1563
威望 5211
阅读权限 99
注册 2005-2-21
发表于 2009-8-30 22:21  资料  短消息  加为好友 
这个功能在去年已经实现了,用grubinst_gui.exe就可以:
◇使用技巧:
1.实现syslinux和grldr双重启动:先用HP格式化工具格成FAT格式,然后用UltraISO的usb-hdd+模式写入U盘,再启动grubinst_gui.exe,选择U盘,选中   整个MBR,优先使用原来的MBR,最后写入grub引导信息,然后复制内附的grldr到U盘根目录下。这样,以后默认从syslinux引导,如果syslinux引导失败,则可以按空格键从grub引导。由于两种引导方式有一定互补性,将大大增强兼容性。
http://bbs.wuyou.com/viewthread.php?tid=103903&extra=page%3D1





顶部
 



当前时区 GMT+8, 现在时间是 2010-9-3 18:09
闽ICP备05002490号

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 无忧启动 - Archiver - WAP