hotdll 发表于 2011-11-25 22:29:15

抛砖--ISO仿真光驱全自动无人职守安装WINDOWS 2K/XP/2003

一时兴趣,想让ISO仿真安装全自动。。。。

懒得写批处理直接写菜单了,配合最新的F6IMG使用。

菜单如下:


title04. 启动 ISO 安装原版系统 \n 安装说明\n 系统盘ISO文件名路径必须大写如:/WIN$.ISO/ISO/WIN$.ISO \n 默认ISO文件名为WIN$.ISO
if exist ()/BOOT/GRUB/F6IMG && command /BOOT/GRUB/F6IMG ! find --set-root /BOOT/GRUB/F6IMG && command /BOOT/GRUB/F6IMG
calc *0x475&0xff-1 && calc *0x82b8 && map (hd0) (hd1)
calc *0x475&0xff-1 && calc *0x82b8 && map (hd1) (hd0)
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map (hd0) (hd1)
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map (hd1) (hd0)
calc *0x475&0xff-1 && calc *0x82b8 && calc *0x82b9=*0x82b9&0xffffff00|0x81 > nul
map --e820cycles=3
map --hook
clear
echo - 安装说明:
echo - 系统盘ISO文件名路径必须大写如:/WIN$.ISO(hd0)/WIN$.ISO
echo - 默认文件名为: /WIN$.ISO
set /p /u wincd=请输入ISO文件名:
if %wincd%#==# set wincd=/WIN$.ISO
if not "%wincd:~,1%"=="/" set wincd=/%wincd%
if exist %wincd% || find --set-root --devices=uh %wincd% || echo 没有找到ISO文件!
map %wincd% (0xff) || map --mem %wincd% (0xff)
map --rehook
if exist (0xff)/I386/HOSTS && echo %wincd%> (0xff)/I386/HOSTS
insmod (1)/f6.mod
fat copy /o (1)/winnt.sif (0)/
cat --locatei=ProductID --number=1 (0)/winnt.sif | set sk=
if not %sk%#==# set /A sk=0x%sk%+0xA || && set key=ture && cat --locatei=ProductKey --number=1 (0)/winnt.sif | set sk=
if /i "%key%"=="ture" set /A sk=0x%sk%+0xB
if exist (0xff)/CDROM_IP.5 write --offset=%sk% (0)/winnt.sif BR8YY-4FV82-HR7DX-GGH89-W4PDJ && echo win2kSP4标准版
if exist (0xff)/CDROM_IS.5 write --offset=%sk% (0)/winnt.sif H6TWQ-TQQM8-HXJYG-D69F7-R84VM && echo win2kSP4服务武器版
if exist (0xff)/CDROM_IA.5 write --offset=%sk% (0)/winnt.sif KRJQ8-RQ822-YRMXF-6TTXC-HD2VM && echo win2kSP4高级服务器版
if exist (0xff)/WIN51IC.SP3 write --offset=%sk% (0)/winnt.sif JYF4F-8GQTQ-KT87M-PYXC3-MDF7G && echo 32位winxpsp3家庭版
if exist (0xff)/WIN51IP.SP3 write --offset=%sk% (0)/winnt.sif MRX3F-47B9T-2487J-KWKMF-RPWBY && echo 32位winxpsp3专业版
if exist (0xff)/WIN51AS write --offset=%sk% (0)/winnt.sif BBGTH-2VC48-J98CM-969J7-3YPMJ && echo 64位2003SP2标准版
if exist (0xff)/WIN51AA write --offset=%sk% (0)/winnt.sif BBGTH-2VC48-J98CM-969J7-3YPMJ && echo 64位2003SP2企业版
if exist (0xff)/WIN51IS.SP2 write --offset=%sk% (0)/winnt.sif JCB3T-9CDQ4-K2X38-2HXRB-VX8YB && echo 32位2003SP2标准版
if exist (0xff)/WIN51IA.sp2 write --offset=%sk% (0)/winnt.sif JCB3T-9CDQ4-K2X38-2HXRB-VX8YB && echo 32位2003SP2企业版
chainloader (0xff)

title08. 启动 Windows NT/2K/2K3/XP/VISTA/win7/2K8/WIN8 系统 \n 自动查找系统所在磁盘,并加载第一启动扇区!
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
calc *0x475&0xff-1 && calc *0x82b8 && map (hd0) ()
calc *0x475&0xff-1 && calc *0x82b8 && map () (hd0)
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map (hd0) ()
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map () (hd0)
calc *0x475&0xff-1 && calc *0x82b8 && calc *0x82b9=*0x82b9&0xffffff00|0x81 > nul
calc *0x475&0xff-1 && map --hook
if exist /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS || find --set-root --devices=h /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS
cat /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS | set wincd=
if not "%wincd:~,1%"=="/"echo -n> /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS
if exist (0)%wincd% root (0)/ || find --set-root --devices=uh %wincd%
if exist %wincd% && map %wincd% (0xff) || map --mem %wincd% (0xff)
if exist %wincd% map --hook
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
chainloader ()+1


hotdll 发表于 2011-11-25 22:33:48

回复 #1 hotdll 的帖子

使用注意:
1、为了保证速度和内存可用。请保证ISO文件的连续性。
ISO如果存放在硬盘上可以使用wincontig对该ISO进行整理。如果存放在U盘上,请确保ISO是U盘的第一个被复制过去的文件。否则ISO不连续。
2、ISO不连续的时候要求内存大于ISO的体积。最好还要再大至少64M到512M,以保证安装的系统有足够的剩余内存可以运行。
3、请验证最终要仿真的ISO的MD5值是不是正确值。特别是最终正版的MD5值。否则可能会安装失败。
4、菜单支持写入8种光盘的KEY,如果您的不是对应的ISO,请自己修改KEY
5、如果安装不成功,大部分是ISO的问题,请确定您的ISO刻成光盘安装没有问题。如果刻成光盘安装没有问题,通常这个方式也没问题
6、系统安装成功后,设备管理器会有一个未知设备,这个是WINVBLOCK仿真设备,您点右键直接删除即可。

HY 发表于 2011-11-25 22:39:31

不错,支持一下。谢谢分享!

都市浪子666 发表于 2011-11-25 23:52:08

饭大又出好东西了,前排就坐。。

2011回忆爱情 发表于 2011-11-26 04:18:59

四個問題

1. 如果是 硬碟呢?
2. 可否不載入內存(這樣應該就無 連續性要求吧?
3. WIN.iso 是否可放入子資料夾
4. winnt.sif<該檔案 我已自行設定好 包含 key 那該如何拿掉這段

527104427 发表于 2011-11-26 09:33:54

原帖由 hotdll 于 2011-11-25 22:29 发表 http://bbs.wuyou.net/images/common/back.gif
一时兴趣,想让ISO仿真安装全自动。。。。

懒得写批处理直接写菜单了,配合最新的F6IMG使用。

菜单如下:


title04. 启动 ISO 安装原版系统 \n 安装说明\n 系统盘ISO文件名路径必须大写如:/WIN$.I ...
哈哈,这个菜单,收下了

Plantsoot 发表于 2011-11-26 10:07:02

不错,终于出炉了,改天有空折腾下。

zhaohj 发表于 2011-11-26 10:39:21

最新版光盘文件可以不区分大小写了。

lanlanlei091 发表于 2011-11-26 10:44:56

还不会用F61MG,有空试下哈,哪位大大写个教程撒

[ 本帖最后由 lanlanlei091 于 2011-11-26 10:45 编辑 ]

fh123456 发表于 2011-11-26 16:48:31

回复 #2 hotdll 的帖子

用20111126.fba里菜单4启动iso安装系统在虚拟机里测试成功。实机安装在滚动条过后显示系统大概在39分钟完成安装后2-3秒蓝屏 代码是0x00000044

hotdll 发表于 2011-11-26 21:14:23

你 的ISO的问题
或者是U盘的问题
请确认MD5的值

fh123456 发表于 2011-11-26 21:25:42

回复 #11 hotdll 的帖子

是同一个U盘,同一个iso。虚拟机里能成功。实机安装却蓝屏

hotdll 发表于 2011-11-27 09:19:36

原帖由 2011回忆爱情 于 2011-11-26 04:18 发表 http://bbs.wuyou.net/images/common/back.gif
四個問題

1. 如果是 硬碟呢?
2. 可否不載入內存(這樣應該就無 連續性要求吧?
3. WIN.iso 是否可放入子資料夾
4. winnt.sif   
1 、本身就支持硬盘
2、本身默认就不载入内存。
3、ISO可以放到子文件夹,输入路径的时候包含子路径即可。
4、winnt.sif是集成到f6img中了。使用方法看我的菜单。包括序列号的更换。

hotdll 发表于 2011-11-27 09:20:28

回复 #12 fh123456 的帖子

我目前只遇到一台 索泰N61 主板 安装失败。提示显卡驱动冲突的蓝屏代码。

您用ISO刻成光盘试试。。

如果不蓝的话,可能是兼容性问题。

另外i建议你检查下md5码。

幸运的草测试好几次不成功。后来我让他检查md5码,结果他搞了三次才搞对。

[ 本帖最后由 hotdll 于 2011-11-27 09:22 编辑 ]

幸运的草 发表于 2011-11-27 09:47:04

在虚拟机上测试成功,很智能,解决了这种方式安装的不便,创意很好。
不过,发现一点小问题。楼主用的是菜单,有一定的局限性,容错机制不很健全。
比如:从硬盘启动,在我的电脑上启动不起来,提示找不到文件,可能我的是联想机有隐藏分区,这个分区是在第一分区。还有,如果硬盘上没有启动文件,也会出错。
再如,安装菜单中如果找不到输入的ISO文件,楼主的是提示“没有找到文件”,然后往下执行就出错。没有处理找不到文件后怎么办。
建议:用批处理比较好,可以处理复杂的情况,在安装部分如果能引入RUN的列表模块就更完美了。

我简单的修改了一下,在出错后返回主菜单(也可以返回其他菜单,用户可自行修改)。水平有限,请勿拍砖。


title04. 启动 ISO 安装原版系统 \n 安装说明\n 系统盘ISO文件名路径必须大写如:/WIN$.ISO/ISO/WIN$.ISO \n 默认ISO文件名为WIN$.ISO
if exist ()/BOOT/GRUB/F6IMG && command /BOOT/GRUB/F6IMG ! find --set-root /BOOT/GRUB/F6IMG && command /BOOT/GRUB/F6IMG
calc *0x475&0xff-1 && calc *0x82b8 && map (hd0) (hd1)
calc *0x475&0xff-1 && calc *0x82b8 && map (hd1) (hd0)
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map (hd0) (hd1)
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map (hd1) (hd0)
calc *0x475&0xff-1 && calc *0x82b8 && calc *0x82b9=*0x82b9&0xffffff00|0x81 > nul
map --e820cycles=3
map --hook
clear
echo - 安装说明:
echo - 系统盘ISO文件名路径必须大写如:/WIN$.ISO(hd0)/WIN$.ISO
echo - 默认文件名为: /WIN$.ISO
set /p /u wincd=请输入ISO文件名:
if %wincd%#==# set wincd=/WIN$.ISO
if not "%wincd:~,1%"=="/" set wincd=/%wincd%
if exist %wincd% || find --set-root --devices=uh %wincd% || echo 没有找到$%wincd% $ 文件! && pause --wait=3 && configfile (md)4+8
map %wincd% (0xff) || map --mem %wincd% (0xff)
map --rehook
if exist (0xff)/I386/HOSTS && echo %wincd%> (0xff)/I386/HOSTS
insmod (1)/f6.mod
fat copy /o (1)/winnt.sif (0)/
cat --locatei=ProductID --number=1 (0)/winnt.sif | set sk=
if not %sk%#==# set /A sk=0x%sk%+0xA || && set key=ture && cat --locatei=ProductKey --number=1 (0)/winnt.sif | set sk=
if /i "%key%"=="ture" set /A sk=0x%sk%+0xB
if exist (0xff)/CDROM_IP.5 write --offset=%sk% (0)/winnt.sif BR8YY-4FV82-HR7DX-GGH89-W4PDJ && echo win2kSP4标准版
if exist (0xff)/CDROM_IS.5 write --offset=%sk% (0)/winnt.sif H6TWQ-TQQM8-HXJYG-D69F7-R84VM && echo win2kSP4服务武器版
if exist (0xff)/CDROM_IA.5 write --offset=%sk% (0)/winnt.sif KRJQ8-RQ822-YRMXF-6TTXC-HD2VM && echo win2kSP4高级服务器版
if exist (0xff)/WIN51IC.SP3 write --offset=%sk% (0)/winnt.sif JYF4F-8GQTQ-KT87M-PYXC3-MDF7G && echo 32位winxpsp3家庭版
if exist (0xff)/WIN51IP.SP3 write --offset=%sk% (0)/winnt.sif MRX3F-47B9T-2487J-KWKMF-RPWBY && echo 32位winxpsp3专业版
if exist (0xff)/WIN51AS write --offset=%sk% (0)/winnt.sif BBGTH-2VC48-J98CM-969J7-3YPMJ && echo 64位2003SP2标准版
if exist (0xff)/WIN51AA write --offset=%sk% (0)/winnt.sif BBGTH-2VC48-J98CM-969J7-3YPMJ && echo 64位2003SP2企业版
if exist (0xff)/WIN51IS.SP2 write --offset=%sk% (0)/winnt.sif JCB3T-9CDQ4-K2X38-2HXRB-VX8YB && echo 32位2003SP2标准版
if exist (0xff)/WIN51IA.sp2 write --offset=%sk% (0)/winnt.sif JCB3T-9CDQ4-K2X38-2HXRB-VX8YB && echo 32位2003SP2企业版
chainloader (0xff)

title08. 启动 Windows NT/2K/2K3/XP/VISTA/win7/2K8/WIN8 系统 \n 自动查找系统所在磁盘,并加载第一启动扇区!
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
calc *0x475&0xff-1 && calc *0x82b8 && map (hd0) ()
calc *0x475&0xff-1 && calc *0x82b8 && map () (hd0)
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map (hd0) ()
calc *0x475&0xff-1 && calc *0x82b8 || if exist (hd0,0)/grldr map () (hd0)
calc *0x475&0xff-1 && calc *0x82b8 && calc *0x82b9=*0x82b9&0xffffff00|0x81 > nul
calc *0x475&0xff-1 && map --hook
if exist /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS || find --set-root --devices=h /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS
cat /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS | set wincd=
if not "%wincd:~,1%"=="/"echo -n> /WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS
if exist (0)%wincd% root (0)/ || find --set-root --devices=uh %wincd%
if exist %wincd% && map %wincd% (0xff) || map --mem %wincd% (0xff)
if exist %wincd% map --hook
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
chainloader ()+1 || chainloader /ntldr || chainloader /bootmgr || echo 没有找到硬盘的启动文件 && pause --wait=3 && configfile (md)4+8

[ 本帖最后由 幸运的草 于 2011-11-27 10:41 编辑 ]

hotdll 发表于 2011-11-27 10:28:05

chainloader /ntldr || chainloader /bootmgr || chainloader ()+1 || echo 没有找到硬盘的启动文件 && pause --wait=3 && configfile (md)4+8
在ghost的第二次启动或者是winpe安装iso的第二次启动
这个菜单会报错的。
因为启动的文件并不是ntldr。。。。。

幸运的草 发表于 2011-11-27 10:43:43

已修正,调整启动顺序,不调整启动也没问题,只是会慢几秒。


-----------------------------------------------------------
原来测试无修改的菜单,启动出错,重新测试,又能启动了。


晕!但如果硬盘没有分区或启动文件丢失还是会执行出错。修改后的菜单会在出错后自动返回。







[ 本帖最后由 幸运的草 于 2011-11-27 11:02 编辑 ]

notepad 发表于 2011-11-27 11:18:42

现成的菜单,拿来就能用,感谢楼主分享!

angelyh520 发表于 2011-11-28 23:06:42

我也试一下看..........

2012eye 发表于 2016-3-23 19:43:30

谢谢谢谢谢谢谢谢谢谢谢谢

mostary 发表于 2016-12-5 15:20:08

感谢分享,学习中。
页: [1]
查看完整版本: 抛砖--ISO仿真光驱全自动无人职守安装WINDOWS 2K/XP/2003