今天师妹找我,说Win7装不了,一看:“无法将Windows安装到磁盘x的分区y”,点进去:“Windows无法安装到这个磁盘。这台计算机的硬件可能不支持启动到此磁盘。请确保在计算机的BIOS菜单中启用了磁盘的控制器。”
这个安装错误上次我想把Win7装进VHD的时候也遇到过,错误如图:
上次Google,大家都说,用RAID的,需要用peimg工具将RAID驱动灌装进安装文件才能正常识别,怕麻烦也就没去折腾,这次又遇到,就尝试解决下。
一查,peimg.exe是Windows AIK的一个PE工具,太好了,刚好存这Windows7 AIK一直都没空拿出来折腾,呵呵。
装完Windows7 AIK,怎么找都没找到peimg.exe,仔细一看,人家说的是Windows AIK,我装的那是Windows7 AIK……难道原来的工具没有了?搜“Windows7 AIK peimg”,终于找到,原来微软把很多原来xp下的部署工具整合成了一个Dism.exe,现在imagex.exe被放到了Program Files\Windows AIK\Tools\x86下面(64位的有对应的目录),这个新工具dism就在Program Files\Windows AIK\Tools\x86\Servicing下。也可以直接运行“部署工具命令提示”(需要以管理员身份运行,否则很多命令提示权限不够)。
一般认为,这种现象是缺少驱动造成的,解决办法是现将安装文件挂在到某个目录,然后用dism将驱动程序灌装进安装文件,最后打包形成带驱动的安装文件。我也尝试了上面的过程(出现同样错误的朋友,请现不要按照下面的步骤做,这个步骤未必合适,看完全文再做决定!)。
首先,将Windows安装文件目录(我的是7600,以前是流出一个装一个,所以到目前还保留着用版本号命名的习惯……不废话了,正题,正题……)下的Sources目录,找到install.wim,比如放在c:\sources下面,然后新建一个目录,为了挂在映像文件用,比如就c:\temp,接下来在“部署工具命令提示”下输入:dism /get-wiminfo /wimfile:C:\sources\install.wim。此命令用来查看wim文件信息,得到返回结果:
部署映像服务和管理工具
版本: 6.1.7600.16385
映像的详细信息: C:\sources\install.wim
索引: 1
名称: Windows 7 STARTER
描述: Windows 7 STARTER
大小: 7,983,637,109 个字节
索引: 2
名称: Windows 7 HOMEBASIC
描述: Windows 7 HOMEBASIC
大小: 8,003,795,881 个字节
索引: 3
名称: Windows 7 HOMEPREMIUM
描述: Windows 7 HOMEPREMIUM
大小: 8,445,655,979 个字节
索引: 4
名称: Windows 7 PROFESSIONAL
描述: Windows 7 PROFESSIONAL
大小: 8,326,968,857 个字节
索引: 5
名称: Windows 7 ULTIMATE
描述: Windows 7 ULTIMATE
大小: 8,485,352,280 个字节
操作成功完成。
发现我们需要的ULTIMATE版索引为5。接下来就可以通过命令,将U版的镜像文家挂接到temp目录下:F:\Program Files\Windows AIK\Tools\PETools>dism /mount-wim /wimfile:C:\sources\install.wim /index:5 /mountdir:C:\temp这时会显示:
部署映像服务和管理工具
版本: 6.1.7600.16385
正在安装映像
[=============== 26.0% ]
直到完成,就可以在Temp目录下看到安装文件了(效果和imagex /apply类似)。接下来,可以用dism /image:C:\temp /get-drivers命令查看已经安装的第三方程序,结果如下:
部署映像服务和管理工具
版本: 6.1.7600.16385
映像版本: 6.1.7600.16385
正在从驱动程序存储中获得第三方驱动程序列表…
驱动程序包列表:
已发布的名称 : oem0.inf
原始文件名 : prnms001.inf
内置驱动程序 : 否
类名称 : Printer
提供程序名称 : Microsoft
日期 : 2006/6/21
版本 : 6.1.7600.16385
操作成功完成。
可以看到,这个映像文件里面就只有一个打印机驱动……然后我们可以用dism /image:C:\temp /add-driver /driver:C:\driv\iaStor.inf来灌装驱动:(driv目录下的驱动应该是相应的RAID或者AHCI的驱动,不仅仅是inf文件,还包括cat和sys文件)
部署映像服务和管理工具
版本: 6.1.7600.16385
映像版本: 6.1.7600.16385
找到 1 个要安装的驱动程序包。
正在安装第 1 个,共有 1 个 – C:\driv\iaStor.inf: 驱动程序包已成功安装。
操作成功完成。
同样也可以把iaAHCI.inf安装。接下来,保存并卸载映像就大公告成了:dism /unmount-wim /mountdir:C:\temp /commit(这个过程可能要很久……因为要重新生成安装文件)
可惜的是,这么弄之后,还是出现同样的错误……这下麻烦了啊,还是不识别,怎么办呢?想到以前把Windows7装在VHD上前,是现把安装包灌进VHD,然后再从VHD引导进系统的,要不这么着试试?于是拿出imagex,继续折腾:
imagex /apply C:\sources\install.wim 5 X:这个命令用于把安装文件灌装到X盘,如果是在PE下,可以直接灌到C盘,也可以灌到VHD,把盘符改了就好。
然后重复上面的过程,用dism /image:X:\ /add-driver /driver:Y:\driv\iaStor.inf。其中X和Y都是盘符,这次是灌到物理磁盘上,而非映像,所以结束之后不用卸载了。这时候,盘上的文件相当于安装进行到复制完文件第一次重启前,只有两点不同,一是这些文件里面多了RAID驱动,二是还没有引导记录。
如果是没有系统的机器上,可以用bcdboot /s来制作引导,更推荐直接用win7的启动修复,一下子就好了。
以前有引导的系统可以用bcdedit来制作引导,具体过程就不多说了,后面我列几个参考文献,感兴趣的朋友可以看一下。当然也可以用启动修复,万能膏药……
总结下,其实前面一段弯路可以不走的,因为一开始安装程序引导的时候,并没有用到install.wim里面的内容,现在相同了,是另一个wim文件,boot.wim!如果把驱动灌到boot.wim,应该可以直接安装,没时间了,下次再试试,有兴趣的朋友可以试试。
不过还是后一种方法比较稳当,也节省时间,不用来回的从映像中考进考出的。当然,要向安装文件中集成东西,肯定还是得用前一种。
参考文献:
[bbs.pcbeta.com] (很多把Win7灌到VHD上的操作,还包括用bcdedit修改启动项)
[x.win7c.com] (dism命令大全)
[winsystem.ctocio.com.cn] (dism使用指南,是个实战的)