|
这个回复在您的另一个帖子里有,觉得这儿更合适:
潜水学习一周后,上来跟P大反馈情况:
本人使用Win7 旗舰版,用FBT_V 1.605 格式化U盘,然后把“0PEv1.2.6(2011-05-02)4in1_262MB”放入可见区 /0PE 目录下,解开放入的,总共有五个文件夹和一个grldr 文件。最后把grldr 转移到UD区。重新启动,进入BIOS 选择U盘启动,直接进入Fbinst, 然后停了停,好像是3秒,然后就进入了0PE 4in1,很好用!
另外,本人一周以来每天都在倒腾这个U盘,看了不少帖子,试了好多次,前面的就有一次成功的,就是用Plantsoot 的“百草霜fbinst&0PE合盘FBA制作过程【2011-2-1更新为春节版】”教程做成的,对比了一下,自己想加入更多合盘,发现都没有成功,然后又大量看了很多帖子,实验过程发现原因就是没有正确配置好菜单,于是才慢慢得学习什么“fd”"hd""ud""cd""pd""nd"之类的,进而发现“&&”“||”"!"的意思,进而发现“find --set-root” 的强大,今天一大早起来,想了想,觉得P大的那个grldr 菜单一定很强大,于是打开看了半天,有些真的看不懂,我想0PE之所以能做到“统一天下”“丰简由人”可能是与其中的一些配置文件有关,当然整体架构也要恰到好处,不知道是不是这个grldr 菜单在其中起到了很重要的作用,本人在校大学生,有些可能很菜,希望P大能指点,有时间的话,能不能把您那个菜单做个详细的注解,就像sratlf那样。我贴一下s 大的菜单注解:
#==================== 初始化命令组(菜单头)部分=========================
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.
color blue/green yellow/red white/magenta white/magenta
# 设置菜单颜色
timeout 30
# 菜单等待时间
default /default
# 设置默认菜单项,需default文件配合,可参见目录索引 default 部分
#====================菜单项(菜单正文)=================================
title find and load NTLDR of Windows NT/2K/XP
# 设置菜单项标题
fallback 1
# 本项菜单执行出错的话就转到菜单项1(本菜单文件中为下一菜单项)继续执行
# (本项菜单为菜单项0,菜单项从0开始编号)
find --set-root --ignore-floppies --ignore-cd /ntldr
# 在所有设备的根目录下查找 ntldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根,未找到则执行 fallback 1
map () (hd0)
# 将 ntldr 所在设备(现在的当前设备) 映射为 第一磁盘(hd0)
map (hd0) ()
# 将 第一磁盘(hd0) 映射为 ntldr 所在设备(现在的当前设备)
map --rehook
# 使仿真生效
find --set-root --ignore-floppies --ignore-cd /ntldr
# 在所有设备的根目录下查找 ntldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根
chainloader /ntldr
# 加载当前设备根目录下的 ntldr 文件
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项
title find and load BOOTMGR of Windows VISTA/2K8/win7
# 设置菜单项标题
fallback 2
# 本项菜单执行出错的话就转到菜单项2(本菜单文件中为下一菜单项)继续执行
find --set-root --ignore-floppies --ignore-cd /bootmgr
# 在所有设备的根目录下查找 bootmgr文件,忽略软驱和光驱设备,找到的话就将该设备设为根,未找到则执行 fallback 2
map () (hd0)
# 将 ntldr 所在设备(现在的当前设备) 映射为 第一磁盘(hd0)
map (hd0) ()
# 将 第一磁盘(hd0) 映射为 ntldr 所在设备(现在的当前设备)
map --rehook
# 使仿真生效
find --set-root --ignore-floppies --ignore-cd /bootmgr
# 在所有设备的根目录下查找 bootmgr文件,忽略软驱和光驱设备,找到的话就将该设备设为根
chainloader /bootmgr
# 加载当前设备根目录下的 bootmgr 文件
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项
title find and load CMLDR, the Recovery Console of Windows NT/2K/XP
# 设置菜单项标题
fallback 3
# 本项菜单执行出错的话就转到菜单项3(本菜单文件中为下一菜单项)继续执行
find --set-root --ignore-floppies --ignore-cd /cmldr
# 在所有设备的根目录下查找 cmldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根,未找到则执行 fallback 3
map () (hd0)
# 将 ntldr 所在设备(现在的当前设备) 映射为 第一磁盘(hd0)
map (hd0) ()
# 将 第一磁盘(hd0) 映射为 ntldr 所在设备(现在的当前设备)
map --rehook
# 使仿真生效
find --set-root --ignore-floppies --ignore-cd /cmldr
# 在所有设备的根目录下查找 cmldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根
chainloader /cmldr
# 加载当前设备根目录下的 cmldr 文件
#####################################################################
把您那个经典的菜单也贴一下,毕竟是您的原创,您来注解应该是最完美的,这样有助于菜鸟们更本质地举一反三,当然更利于0PE的普及、传播:
terminal console
debug off
checkrange 20110501:-1 read 0x8278 || clear && pause --wait=0 Too Old Grub4Dos Version. && pause You should use grub4dos-0.4.5b-2011-05-01 or above. && reboot
write 0x60368 0
checkrange 0x80 read 0x8280 && write 0x60368 1
checkrange 0x23 read 0x8280 && checkrange 0x80 calc *0x82B9&0xff && write 0x60368 1
echo -e \n\nPress a key within 3 seconds:
echo -e \n\t<Enter>--Continue(by default)\n\t<Esc>--Grub4Dos Commandline\n\t<Space>--Load 0PE.ISO into memory entirely\n
set tkey= && pause --wait=3 && set /A tkey=*0x4CB00
if not exist tkey commandline
debug off
set mapmem=
if /i "%tkey%"=="0x20" set mapmem=1
set tkey=
if not exist PEISO set PEISO=/0PE/0PE.ISO
set SRS0PE=/0PE/SRS/
checkrange 0x21 read 0x8280 && pxe detect NotExist
write 0x60064 0
write 0x6006C 0
write 0x60130 0
checkrange 0x21 read 0x8280 && write 0x60064 1
set noacc=
read 0x60064 && set noacc=1 ! if not exist (bd)/BOOT/GRUB/USB_ACC.0PE set noacc=1
if not exist noacc (bd)/BOOT/GRUB/USB_ACC.0PE --time-out-disable:0
default 0
timeout 0
title
echo
echo 0PE by Pseudo
read 0x60064 || cat --length=0 /0PE/0PE.GZ && goto 2 ! echo
read 0x60064 || cat --length=0 %PEISO% && goto 1 ! echo
read 0x60064 || cat --length=0 /0PE.ISO && set PEISO=/0PE.ISO && goto 1 ! echo
find --devices=uh --set-root /0PE/0PE.GZ && goto 2 ! echo
find --devices=uh --set-root %PEISO% && goto 1 ! echo
find --devices=uh --set-root /0PE.ISO && set PEISO=/0PE.ISO && goto 1 ! echo
find --devices=cfp --set-root /0PE/0PE.GZ && goto 2 ! echo
find --devices=cfp --set-root %PEISO% && goto 1 ! echo
find --devices=cfp --set-root /0PE.ISO && set PEISO=/0PE.ISO && goto 1 ! echo
cat --length=0 (pd)/0PE/0PE.GZ && rootnoverify (pd) && goto 2 ! echo
cat --length=0 (pd)%PEISO% && rootnoverify (pd) && goto 1 ! echo
cat --length=0 (pd)/0PE.ISO && set PEISO=/0PE.ISO && rootnoverify (pd) && goto 1 ! echo
pause Error:/0PE/0PE.GZ, /0PE/0PE.ISO and /0PE.ISO not found!
title
read 0x60064 && goto 3
if not exist noacc goto 3
map %PEISO% (0xff) || goto 3
map --hook
(0xff)/BOOT/GRUB/USB_ACC.0PE --time-out-disable:0 || echo
map --unmap=0xff
map --rehook
goto 3
title
set noacc=
set mapmem=
dd if=(md) of=(md) bs=1 count=8 skip=0x829c seek=0x60130
echo
read 0x60064 && pxe || echo
echo Device of 0PE.GZ:
debug on
root || echo :(:(:(:(:(:(
debug off
checkrange 0xC0 read 0x8280 && write 0x6006C 1
read 0x6006C && cdrom --stop
echo Loading /0PE/0PE.GZ...
map --mem ()/0PE/0PE.GZ (hd)
map --hook
read 0x6006C && cdrom --init
read 0x6006C && map --hook
write --offset=200 (hd-1,0)/BAT/_ENV.BAT set PEISO=%PEISO%\r\n
cat --locate=/ --replace=\\ (hd-1,0)/BAT/_ENV.BAT
set PEISO=
if exist ()/0PE/GRUB.0PE (hd-1,0)/BIN/FAT copy /o ()/0PE/GRUB.0PE (hd-1,0)/GRUB.EXE || pause /0PE/GRUB.0PE not found. && reboot
echo && configfile (hd-1,0)/BAT/M1.LST
title
echo Device of 0PE.ISO:
debug on
root || echo :(:(:(:(:(:(
debug off
echo Loading %PEISO%...
read 0x60064 && checkrange 0x21 read 0x82A0 && set mapmem=1
checktime
if not exist mapmem echo Direct map %PEISO% && map %PEISO% (0xff) || set mapmem=1 && echo Warnning: Fail to direct map %PEISO%, try to map with --mem.
if exist mapmem echo Map %PEISO% with --mem && map --mem %PEISO% (0xff) || pause Error: Fail to map --mem %PEISO% (0xff). && reboot
checktime
map --hook
rootnoverify (0xff)
goto 2
我理解您一定很忙,如果时间允许,还是希望您能做一些类似的工作。
最后代表广大菜鸟们向P大致敬、问好!
祝一切安康!
一只不断飞翔的菜鸟 |
|