|
我提出这个问题,起源于这几天淘了一块老主板,微星865G Neo2-P,04年出的,这个板的bios有两个到现在都没有解决的bug,1是不支持U盘启动,2是仅仅支持dos启动光盘。如果用win7光盘启动,会显示"can not boot from CD, code 5"。所以,我想到了一个问题,如何在dos环境下从硬盘安装win7。
我的解决路线是,将手上联想OEM win7 光盘的所有文件拷贝至D:\win7_32目录下,在D:\win7_32目录下拷贝三个文件:grub.exe, menu.lst,xcopy.exe, 同时在D:\win7_32目录下新增一个修改后的BCD(修改自D:\win7_32\boot中的BCD),这个BCD指向[boot]\win7_32\sources\dos_ins.wim, 其中新增的dos_ins.wim修改自D:\win7_32\sources中的boot.wim. 最后D:\win7_32目录下建立一个dos_ins.bat, 里面的命令为
copy .\bootmgr .. (将当前目录中的bootmgr 拷贝至D盘根目录)
md ..\boot (D盘根目录下新建boot目录)
xcopy /e .\boot\*.* ..\boot (将D:\win7_32\boot中的所有目录及文件拷贝至D:\boot)
copy /y .\bcd ..\boot (将D:\win7_32下的修改后的BCD覆盖D:\boot下的bcd)
grub (启动D:\bootmgr)
这些语句最终目的是载入D:\win7_32\sources\dos_ins.wim。我采取这个路线的理由是,OEM win7 光盘中仅仅需要增加几个文件,若用光盘安装,载入boot.wim,执行光盘上的install.wim , 拷贝至硬盘安装,载入dos_ins.wim,执行硬盘上的install.wim. 所以实现上述目标的关键在于修改原有的boot.wim, 使它指向硬盘上的install.wim。为了实现这个目标,我参考了victor888的经典帖
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=152716&highlight
参照该贴中的
==========================================
PE启动时会在X:\SOURCES目录下寻找setup.exe文件来进行安装, 如果SOURCES目录没有SETUP.EXE,那么winpeshl.exe会执行system32目录下的winpeshl.ini所指定的文件。如果winpeshl.ini没有指定程序或没有此文件,那么winpeshl.exe将会执行system32目录下的startnet.cmd文件,默认PE下存在此文件,会加载网络配置。我们解决这个boot.wim,可以使用imagex也可以使用sources目录的dism.exe。把这个文件内容变成:
QUOTE:
@echo off
for %%a in (c d e f g h i j k l m n o p q r s t u v w y z) do (if exist %%a:\boot\sources\install.wim x:\sources\winsetup.exe /installfrom:%%a:\boot\sources\install.wim)
exit
当然,要把setup.exe重命名为winsetup.exe
============================================
,我用imageX解开boot.wim, 将source下的setup.exe改名为winsetup,同时编辑windows\system32下的startnet.cmd
x:\sources\winsetup.exe /installfrom D:\win7_32\sources\install.wim
最后将修改后的文件打包为dos_ins.wim, 与原来的boot.wim 并列放置于 D:\win7_32\sources下
完成上述修改后,我在dos下做了测试, grub可以启动D:\win7_32\sources 下的dos_ins.wim, 但安装程序在选择完语言后提示未找到 cd/dvd 设备的驱动,此时如果将oem win7光盘放入光驱,则安装可以继续,但此时安装依然是光盘安装,老光驱吱吱叫的声音实在有些不爽。
所以,我想问的问题是,我对boot.wim的修改遗漏了什么,怎样才能让setup.exe 执行硬盘上指定目录中的istall.wim? |
|