
1. 为什么今天还有人要装 Windows Server 2003上个月帮一个做机械加工的朋友恢复一套车间报工系统数据库跑在 SQL Server 2008 R2 上前端是 2009 年买的一套 MES 客户端整套东西只认 Windows Server 2003。系统盘那块老 IDE 硬盘磁道坏了换盘重装这件事又落回我手里。说句实在话现在折腾 Windows Server 2003 安装步骤难点早就不是系统本身——它当年是个下一步下一步就完事的傻瓜化流程——真正的麻烦在于镜像不好找、硬件太新、驱动对不上整条安装链路里埋着一堆十几年前根本不会出现的坑。这篇文章我打算把完整的 Windows Server 2003 安装步骤拆开讲透从要不要装、装哪个版次一路讲到首次登录之后该做什么。目标读者有三类手上有老软件、老数据库必须复现环境的运维和工程师做工业控制、测绘、财务系统维护、被一套老程序绑住的技术人员以及需要在虚拟机里做实验、做教学演示的人。需要先摆明一个前提Windows Server 2003 早已停止官方支持不再有安全更新它只适合跑在物理隔离的内网里或者干脆用虚拟机当沙盒。指望拿它上公网干活那是给自己找麻烦。1.1 三类绕不开的遗留场景我在实际接触中遇到的需求基本逃不出这三种。第一类是老业务软件绑定。用友 ERP-U8 的早期版本、金蝶老版本、进销存、车间 MES、地磅系统、门禁考勤后台很多都要求服务端是 Windows Server 2003 SQL Server 2000/2005/2008 R2 的组合。这些软件的安装包在服务器版本判断上写得很死检测到 2008 或 2012 就直接拒绝安装或者装完跑不起来。第二类是工业设备配套软件。数控机床的数据采集程序、老式三坐标测量机的上位机软件、PLC 编程软件的旧版本这些程序往往还依赖 16 位组件或者特定的动态库只能跑在 32 位的 2003 上。厂商已经不维护了但你得让产线转起来。第三类是教学与迁移验证。有些单位在做老系统向新平台迁移需要先把原环境完整搭起来做数据导出和功能比对学校讲操作系统原理、讲 NTFS 权限、讲活动目录的课程用 2003 反而更直观因为它把很多机制暴露在外面。1.2 虚拟机还是老物理机先做这个决定这个决定要在动手装机之前就定下来因为它直接决定后面驱动怎么准备。我的建议是能用虚拟机就不要碰物理机。原因很直接2003 时代的驱动模型对现代主板几乎完全不友好SATA/AHCI 控制器、NVMe 硬盘、千兆网卡、集成显卡通通找不到对应驱动。你硬要装物理机等于要先从旧货市场淘一块带 IDE 接口的主板。虚拟机则灵活得多。VMware Workstation、VirtualBox 都可以把老硬件模拟出来磁盘控制器可以设成 IDE网卡可以设成 Intel e1000 或 AMD PCnet 这类 2003 自带驱动的型号问题瞬间少一大半。唯一要注意的是新版本的虚拟机软件对 2003 的支持在逐步收紧VMware Tools 从 10.x 之后就不再带 2003 的驱动包了你需要去找 10.0.x 或更早版本的增强工具。只有一种情况必须用物理机软件绑定了加密狗或者绑定了老式 PCI 采集卡、串口卡。这类硬件的驱动是给 2003 写的虚拟化层模拟不出来。1.3 版次与位数选错一步后面全是返工Windows Server 2003 的版次很多收窄一下范围值得考虑的其实就几个。下面这张表是我自己装机时用来快速决策的参考。版次位数内存上限概略适用场景Web Edition32 位2GB只跑 IIS 网站不能做域控不能跑 SQL 大实例Standard Edition32 位 / x6432 位约 4GBx64 约 32GB常规老业务服务端最常见Enterprise Edition32 位 / x6432 位可用 PAE 扩展x64 更大需要集群、需要大内存的数据库服务端Datacenter Edition32 位 / x64最大基本用不上除非你真有老式数据中心场景R2 版本32 位 / x64同上带活动目录联邦服务、文件服务器配额等新组件选版次的核心判断只有两条软件要求什么就得给什么以及要不要 64 位。如果你的老软件是纯 32 位程序装 32 位系统最省心兼容性最好如果服务端要跑 SQL Server 2008 R2 并且数据量大那 x64 版本才够用因为 32 位系统受地址空间限制数据库缓冲池压根吃不到大内存。但要注意一点Windows Server 2003 原始发行版不带 R2只有 32 位x64 版本是从 2003 x64 Edition 和 2003 R2 才开始提供的找镜像的时候别找错了。还有一个小细节经常被忽略Standard 版和 Enterprise 版的安装介质是不同的序列号也不通用。手里有什么授权就装什么版次别拿着标准版的号去装企业版安装程序会在输入密钥那一步直接拒绝。2. 动手前必须确认的四件事我吃过最多亏的地方全在准备工作这一段。安装过程本身十几分钟就过去了准备工作没做对可能要来回重装三五次。2.1 镜像、序列号与授权方式镜像来源要认准完整版不要用那种被人为精简过的Ghost 版或者优化版。这类镜像删掉了组件、改过注册表装老软件时经常出现莫名其妙的失败而且没法排查。需要确认的是镜像类型零售版Retail、OEM 版、还是批量授权版VL。这个区别决定了你要不要激活批量授权版装机时输入 VL 密钥装完不需要额外激活。零售版装完有激活宽限期需要在系统属性里联网或电话激活。老系统联网激活基本走不通了所以工程上更倾向用 VL 版本。OEM 版绑定特定品牌硬件一般配合机器上的 COA 标签使用。序列号必须来自你自己的正版授权。2003 时代的授权文件、包装盒、随机 COA 标签如果还在就照抄找不到授权的场景正确做法是走软件厂商或授权渠道补办而不是随便找一个来路不明的号填进去。2.2 虚拟机参数给多少内存、多大磁盘、什么控制器以 VMware Workstation 为例我常用的参数组合是这样的实测最稳。硬件兼容性新建虚拟机时把兼容性降到 Workstation 6.5 或 7.x 这一档。高版本兼容性会引入 2003 不认识的虚拟硬件反而添乱。内存512MB 到 1024MB。官方最低要求是 128MB但那是纯文本模式的概念图形界面阶段给 128MB 会卡到你以为死机。给 1GB 已经非常宽裕了因为 32 位系统本身也用不完太多。CPU1 到 2 个核心足够不要给太多。老系统对多核的调度并不敏感多给核心反而可能在安装阶段触发异常。磁盘系统盘 20GB 到 40GB。2003 完整安装大概占 2GB 到 4GB装完 SQL Server 和各种补丁之后20GB 会比较紧张我一般给 40GB。磁盘控制器一定要选 IDE。这是全文最重要的一句话。选 SCSI 或者 SATA 的默认配置安装程序加载到一半就是蓝屏。网卡Intel e1000 或者 AMD PCnet。这两个型号 2003 自带驱动装完就有网。显示显存给 8MB 到 16MB 即可16 位色 1024x768 分辨率跟老软件的画面兼容性最好。软驱勾上虚拟软驱。后面如果需要加载第三方驱动或者要放无人值守应答文件全靠它。2.3 BIOS 与磁盘控制器模式的坑如果你不得不用物理机或者用 Hyper-V 这类偏真实硬件的虚拟化方案那 BIOS 里的存储模式一定要改。开机进 BIOS找到 SATA Configuration 或者 Storage Configuration 这一项把模式从 AHCI 改成IDE或Compatibility。原因很直白Windows Server 2003 的安装内核里没有 AHCI 控制器驱动它在文本模式加载阶段找不到硬盘就会直接报 0x0000007B 终止安装。这个问题后面第 5 节我会专门拆开讲排查链路。在 Hyper-V 上有个额外注意点老版本的 Hyper-VWindows Server 2008/2008 R2 时代提供 2003 的集成服务能装上虚拟网卡和虚拟显卡驱动但更新的 Hyper-V 已经不再支持 2003 的集成服务了装完之后网卡、显卡可能都是感叹号状态只能靠系统自带的通用驱动硬撑或者手工挂载旧版集成服务的 ISO 提取驱动文件。这也是我为什么更推荐 VMware Workstation 或 VirtualBox 做实验环境的原因。2.4 安装媒介光盘、U 盘还是挂载 ISO现在能找到的 2003 镜像基本都是 ISO 文件所以最省事的就是直接在虚拟机里挂载 ISO。注意挂载 ISO 之前先在虚拟机设置里确认启动时连接是勾选状态否则第一次开机不会从光驱引导。开机后如果没进入安装界面按 F2 进虚拟 BIOS把 CD-ROM 调到启动顺序第一位。如果非得用 U 盘装物理机这里有个坑要提前知道2003 的安装程序对 USB 支持很差用常规的 U 盘启动盘制作工具做出来的盘安装到文本模式阶段经常报无法找到安装源文件。可行的办法是用虚拟光驱软件比如老版本的 WinMount 或 Daemon Tools在 PE 环境里挂载 ISO然后运行 i386 目录下的 winnt32.exe 走硬盘安装或者干脆用外置光驱刻盘这是最稳的方式。还有一条路径是从已有的 Windows 系统里升级或全新安装。在 32 位系统上运行 i386\winnt32.exe可以指定安装到另一个分区在 DOS 或 16 位环境下则用 i386\winnt.exe。这条路径在虚拟机里的实际价值是配合无人值守文件做批量部署后面第 6 节会给一个完整的应答文件示例。3. 从引导到首次登录的完整流程准备工作做扎实之后正式安装其实很快大概 20 到 40 分钟取决于虚拟机性能。整个过程分成两个大阶段蓝底白字的文本模式阶段和随后重启进入的图形化阶段。3.1 文本模式阶段分区、格式化和文件复制开机从 ISO 引导会先看到一行 Press any key to boot from CD这时候要赶紧敲一下键盘不然三秒后它就去试硬盘引导了。接着安装程序加载基础驱动屏幕上方会有一行 Setup is inspecting your computers hardware configuration这个界面会停十几秒到一分钟不要以为卡死了。进入蓝色安装界面之后流程是这样的提示 Welcome to Setup按 Enter 开始安装。这里有第三个选项是修复现有安装正常重装用不到。弹出许可协议按 F8 接受。这一页不接受就没法往下走。进入分区界面。如果是全新的空磁盘会显示一整块未划分的空间。按 C 创建分区输入大小后回车。选中新建的分区按 Enter 继续。安装程序会问用什么文件系统格式化这里选 NTFS快速。快速格式化不做坏道扫描对虚拟机里的虚拟磁盘完全够用物理机老硬盘如果怀疑有坏道就选普通格式化但要等很久。安装程序开始复制文件。复制完毕自动重启重启时千万不要再按键盘让它从硬盘引导否则又会重新进一遍安装程序。关于分区有一个细节很多人不知道Windows Server 2003 的安装程序不支持 GPT 分区表它只能识别 MBR 磁盘单个 MBR 分区的上限大约 2TB。如果你给虚拟机分配了超过 2TB 的磁盘安装程序要么认不出全部容量要么直接报错。做老系统用不到那么大20GB 到 40GB 完全够。还有一个 32 位系统的老问题分区起始扇区。现代工具创建的分区有时会做 4K 对齐起始扇区是 2048 或者 40962003 的安装程序对此没有意见但如果你在装完之后用新的磁盘工具做一些奇怪的操作比如动态磁盘、扩展分区可能会遇到对齐警告。稳妥做法就是从一开始让 2003 的安装程序自己分区和格式化别用第三方工具先分好。3.2 图形化阶段区域、密钥、授权模式和计算机名重启之后进入图形化界面屏幕左下角会显示安装进度和剩余时间。这一阶段需要填的东西比较多我按顺序捋一遍。第一屏是区域和语言设置。默认是中文中国和中文输入法直接点下一步即可。如果你的软件是英文环境这里也可以改成英文但装完再改要重启建议一次到位。第二屏是个人信息姓名和单位。这里有个小陷阱姓名栏必须填内容留空的话下一步按钮是灰的。单位可以随便填也可以空着实际上有些版本要求也填。这类字段不会影响系统功能但如果后面有软件读取注册表里的组织名做判断那就照软件要求填。第三屏是产品密钥。这里把之前准备好的序列号填进去。填完点下一步如果密钥和版次不匹配会直接弹错误提示。第四屏是授权模式两个选项每服务器Per Server和每设备或每用户Per Device or Per User。除非你有明确的 CAL 授权管理需求一般都选每服务器然后连接数填授权允许的数量比如 5。这个设置装完可以在授权管理工具里改。第五屏是计算机名和管理员密码。计算机名建议控制在 15 个字符以内因为 NetBIOS 名字上限就是 15 位超长会被自动截断后期加域和共享访问容易出问题。名字里不要用中文、空格和特殊符号用字母数字加连字符最安全。管理员密码这一项要特别说一下。Windows Server 2003 默认启用了密码复杂度要求至少 6 位且必须包含大写字母、小写字母、数字、符号中的三类。很多人随手输个 123456下一步照样能过——因为安装阶段它只是警告不强制。但装完之后登录时可能会被策略拒绝尤其是系统装完加域之后。我的习惯是安装阶段就设一个符合复杂度的密码比如用一个你自己记得住的口令加两位数字。第六屏是日期和时间一般不用动默认就是正确的前提是宿主机时间准。3.3 网络、工作组与管理员密码接下来的网络设置有两个选项典型设置和自定义设置。典型设置会自动配置 TCP/IP 为自动获取并把计算机加入一个叫 WORKGROUP 的工作组。自定义设置可以手工指定 IP、子网掩码、网关和 DNS。在虚拟机里做实验我建议先用典型设置装完进系统再改静态 IP这样出错更容易排查。但如果是给产线设备做服务端必须在安装阶段就配好静态 IP因为很多老软件的配置文件里写死了 IP 地址中途换 IP 会导致客户端连不上。选择工作组还是加入域安装阶段只支持加入工作组。加域要等系统装完、重启、用管理员登录之后再操作。如果你现在就把计算机名填成和域里已有机器重名的名字加域时会失败——这种问题排查起来挺费劲所以装之前先在纸上把命名规划列好。这一阶段设置完之后安装程序会继续复制文件、注册组件、安装开始菜单项最后重启。重启后出现经典的 Press CtrlAltDel to log on 登录界面。在虚拟机里按 CtrlAltDel 会被宿主机截获VMware 里用 CtrlAltInsert 代替VirtualBox 里用右侧 Ctrl Del。3.4 首次登录后立刻要做的三件事第一件事关掉 IE 增强安全配置。Server 2003 默认给 IE 开了增强的安全配置几乎拦截所有下载和脚本导致你连驱动都下不来当然隔离环境下你也不该从网上下东西但内网文件服务器的下载也会被拦。操作路径是控制面板 → 添加或删除程序 → 添加/删除 Windows 组件 → 找到 Internet Explorer 增强的安全配置取消勾选确定。第二件事确认系统时间。虚拟机长时间关机之后时钟会漂移时间不准会导致域认证失败、HTTPS 证书报错、数据库事务日志时间戳混乱。装完增强工具之后开启时间同步或者手工校准一次。第三件事装好网络和显示驱动再装远程桌面。因为在虚拟机的控制台里操作效率很低屏幕小、鼠标不好用早点把远程桌面打开后面所有工作都在宿主机上用远程连接做体验完全不一样。4. 装完之后才是真正的开始驱动、补丁与运行库系统能进桌面只说明安装步骤走完了离能用还有一段距离。这一段做得好不好直接决定你后面会不会装到一半又要推倒重来。4.1 虚拟化增强工具与显卡驱动在 VMware 里增强工具叫 VMware Tools在 VirtualBox 里叫 Guest Additions在 Hyper-V 里叫集成服务。它们主要解决三件事显卡驱动能调分辨率、能全屏、鼠标无缝切换、宿主机与虚拟机之间的时间同步。关于版本这里有个坑必须说清楚新版本的 VMware Tools 已经不再包含 Windows Server 2003 的驱动包了。你在新版 Workstation 里点安装 VMware Tools挂载进去会发现里面的安装程序识别不了系统或者装到一半报错。解决办法是去 VMware 的官方归档里找 10.0.12 或更早版本的 Tools 安装包手工挂载 ISO 安装。VirtualBox 也类似6.x 之后的 Guest Additions 对 2003 的支持不完整建议用 5.2 这一代的增强包。Hyper-V 的情况前面提过只有老版本才提供 2003 的集成服务。装完增强工具记得重启然后在显示属性里把刷新率和分辨率调到合适值。老软件对 16 位色兼容性最好如果软件画面出现花屏或者颜色错乱把颜色质量从 32 位降到 16 位试试这个技巧在工业软件上命中率很高。4.2 SP2 与后续补丁的安装顺序Windows Server 2003 的补丁安装顺序不是随便装的尤其在内网离线环境下顺序错了会碰到一堆此更新不适用于你的计算机。我的经验顺序是这样的先装 Service Pack 2KB914961。这是所有后续补丁的前置条件没装 SP2 直接装后面的补丁基本都会被拒绝。SP2 安装包大概 350MB 左右装完需要重启。再装 SHA-2 代码签名支持补丁。这一点是很多人踩坑的地方2003 时代的补丁签名用的是 SHA-1而后来微软改用 SHA-2 签名补丁包导致在没打 SHA-2 支持的 2003 上双击新补丁会提示不是有效的 Win32 应用程序或签名验证失败。常见做法是先把 KB2868626 这类 SHA-2 支持补丁装进去之后再装其他更新。具体适用哪个补丁号以微软官方补丁说明为准。然后按需装功能补丁。比如远程桌面协议升级包、根证书更新、时区更新。这些不是必须但远程桌面升级包很值得装能让连接体验好很多。注意不要在隔离环境里盲目追求把补丁打全。2003 已停止支持后续的补丁列表并不完整而且打太多补丁有时候会和老软件冲突。原则是缺什么补什么而不是全套都装。4.3 老软件离不开的运行库清单这一步是给后面装业务软件铺路的。2003 装完之后自带的运行库很少而 2005 到 2010 年间开发的软件几乎都依赖下面这些东西.NET Framework 2.0 / 3.5。很多老管理端软件基于 .NET 2.0 编译3.5 里包含 2.0 的运行时装 3.5 基本能覆盖。注意 3.5 需要先装 2.0 内核或者直接用完整安装包。Visual C 运行库2005、2008、2010 三个版本的 x86 版基本必装。缺了会报计算机中丢失 msvcr80.dll或msvcp90.dll这类错误。MDAC 2.8。数据库访问组件老 ERP 连 SQL Server 全靠它2003 自带的是 2.8 版本一般不用重装但如果软件报 ADO 相关错误可以重装一次。Java 运行时。如果你的软件是 Java 写的注意版本别装太新的。JDK 21 这种现代版本在 32 位 2003 上压根跑不起来需要的是 JDK 5 或 6 这种老版本。IE 6 到 IE 8。有些老系统的 Web 端只支持 IE 内核升级到 IE 8 通常是上限再新的浏览器装不上去。装这些组件时能离线就离线。把安装包提前拷到虚拟机里或者挂载一个包含所有安装包的 ISO比在系统里折腾网络下载靠谱得多。4.4 远程桌面从连不上到稳定连接远程桌面这一段是现在用 2003 最常出问题的地方因为客户端早就换成 Windows 10 或 11 了。先在服务端开启远程桌面右键我的电脑 → 属性 → 远程 → 勾选启用这台计算机上的远程桌面。命令行也可以reg add HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server /v fDenyTSConnections /t REG_DWORD /d 0 /f然后放通防火墙端口。2003 SP2 的防火墙用的是netsh firewall这一套语法跟后来的netsh advfirewall完全不同netsh firewall set portopening tcp 3389 RDP验证是否在监听netstat -an | findstr 3389看到0.0.0.0:3389就说明服务起来了。接下来是那个几乎所有现代客户端都会撞上的问题用 Windows 10/11 的远程桌面连 2003会弹出出现身份验证错误要求的函数不受支持这可能是由于 CredSSP 加密 Oracle 修正。根本原因是 2003 的远程桌面协议版本太老只支持最基础的 RDP 安全层不支持 NLA网络级身份验证而新版客户端默认要求 CredSSP。解决办法是在客户端上放宽策略不是在服务端。两条路一是改注册表在客户端机器上执行reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2 /f二是在客户端用组策略计算机配置 → 管理模板 → 系统 → 凭据分配 → 加密 Oracle 修正设为易受攻击。注意这个设置会降低客户端对旧协议的保护强度只在你确认网络是隔离内网、且目标机器确实是老系统时才这么做。公网环境绝对不要这么改。还有一个细节2003 的服务端默认只允许两个管理员会话其实是控制台会话加一个远程会话。如果需要多人同时远程得装终端服务并配置授权这在老环境里比较麻烦。我的做法是给需要远程的人都用同一个管理员账号虽然不规范但内网隔离环境下这是最省事的方式。5. 踩坑实录报错、蓝屏与装到一半失败这一节全是干货我把这几年在 2003 上踩过的坑按症状 → 排查路径 → 解决办法的方式还原一遍。有些坑不自己撞一次真的想不到。5.1 0x0000007B磁盘控制器不匹配的典型症状症状安装程序加载完初始驱动屏幕刚变蓝还没进入分区界面就跳出一个蓝屏错误代码0x0000007B后面跟着INACCESSIBLE_BOOT_DEVICE。或者文件复制完了第一次从硬盘启动时出现同样的蓝屏。根本原因安装内核加载的磁盘控制器驱动和你实际使用的控制器不匹配。2003 的安装镜像自带的驱动里有 IDE、有老式 SCSI如 LSI Logic但没有 AHCI、没有现代 SATA、没有 NVMe。排查路径先看虚拟机设置里的磁盘控制器类型。如果是 SATA 或 NVMe改成 IDE重启安装八成的 7B 蓝屏当场消失。如果已经改成 IDE 还报 7B检查虚拟机的硬件兼容性版本是不是太高。新建虚拟机时选 Workstation 6.5/7.x 这一档让虚拟硬件退回到那个年代。物理机上进 BIOS 把 SATA 模式从 AHCI 改成 IDE 或 Compatibility。这一步在装之前做装完之后再改回来会导致系统不认盘。如果必须用 SCSI 或 RAID 控制器比如接老阵列卡那就要在安装程序第一个蓝色界面出现时迅速按下 F6安装程序会去读软驱里的第三方驱动。在 VMware 里可以准备一个软盘镜像.flp 文件把驱动的 .sys 和 .inf 文件放进去挂载。这个时机很紧张手速要快慢一秒就错过了。验证方式分区界面能正常显示磁盘容量并且文件复制能跑完、重启后能从硬盘引导进图形化阶段就说明控制器问题解决了。5.2 新 CPU、新主板上的安装卡死与重启症状安装过程中突然卡死不动或者进度条走到一半自动重启重启后又从头开始装循环往复。这个问题在宿主机 CPU 比较新的时候特别容易出现。原因是老系统的安装程序在探测 CPU 特性和 ACPI 表时遇到了它不认识的字段直接崩了。我的处理办法有三条按顺序试在虚拟机里把 CPU 数量和特性降到最低。新建虚拟机时选 1 个 CPU、1 个核心在高级设置里把 CPU 类型虚拟化成更老的型号比如兼容模式下的 Intel 或 AMD 通用型号。VMware 有这个选项VirtualBox 也有类似设置。关闭 BIOS 里的超线程和虚拟化扩展针对物理机。老系统对这些特性的探测非常原始关掉能避开一部分兼容性问题。在安装引导时加参数。在文本模式安装界面出现时可以按 F5 加载计算机类型列表手工指定一个标准 PC或ACPI 多处理器 PC之类的 HAL绕开自动探测。按 F7 则可以选择不自动加载 ACPI 支持对某些主板很有效。经验之谈如果宿主机是最近三五年的新平台虚拟机里装 2003 的成功率反而比物理机高因为虚拟机软件在模拟硬件时已经帮我们做了一层兼容处理。真的卡在物理机上装不动的时候别硬扛换虚拟机。5.3 分区、内存与时间这三类隐性问题这三类问题在装的时候不报错装完之后才慢慢发作最难排查。分区问题。前面提过2003 不支持 GPTMBR 分区上限 2TB。还有一个容易忽略的点如果你先装了别的系统、后来又往同一块盘上装 20032003 的引导程序可能会把原来系统的引导记录覆盖掉。正确做法是 2003 单独一块虚拟磁盘或者单独一个物理磁盘别和现代系统共用。内存问题。32 位系统的地址空间只有 4GB其中一部分还要留给硬件映射。如果你给虚拟机分了 4GB 内存系统属性里可能显示3.5GB甚至3GB 可用这很正常不是故障。但如果分得太多比如 8GB而系统不支持 PAE 扩展反而可能在启动时蓝屏。给 1GB 到 2GB 是最舒服的区间。时间问题。虚拟机长时间关机后系统时间会严重漂移。漂移带来的连锁反应是加域时 Kerberos 认证失败默认允许时间偏差 5 分钟访问 HTTPS 报证书过期或未生效数据库日志时间戳错乱。解决办法就是第 4.1 节说的装增强工具开时间同步或者手工把时间调到准。还有一个隐藏得很深的坑虚拟机的 BIOS 时间如果被设成了和宿主机不一致比如跨时区系统装完时间就是错的。检查虚拟机设置里的时钟同步选项确保是开机同步状态。6. 两个真实场景给老 ERP 搭环境、做一套无人值守安装理论讲完来看两个我实际做过的事情。第一个是给老 ERP 搭完整环境第二个是用应答文件做批量安装。6.1 为老业务系统加数据库准备系统这是我做过最多的一类活一套用友老版本 ERP 或者类似的财务进销存系统服务端要求 Windows Server 2003 SQL Server 2008 R2 IIS。具体准备的思路是这样的第一步定版次和位数。如果数据库数据量不大几个 GB32 位 Standard 版完全够如果数据量大或者用户数多用 x64 的版本让 SQL Server 能用上更多内存。第二步装系统组件。在控制面板 → 添加/删除 Windows 组件里勾选应用程序服务器下的 IIS包括 ASP.NET 和 FrontPage 服务器扩展有些老系统还真需要这个。同时确认启用网络 COM 访问是勾上的老 ERP 的中间层依赖 COM。第三步处理 MSDTC分布式事务协调器。这是老 ERP 最经常出问题的地方。在组件管理器里确认 MSDTC 服务已启动并且在本地 DTC属性的安全选项卡里勾上网络 DTC 访问、允许入站、允许出站事务管理器通信选不要求进行相互身份验证。这一步不做客户端连中间层会报无法启动分布式事务。第四步装 SQL Server 2008 R2。装之前先把 .NET Framework 3.5 和 Windows Installer 相关组件准备好。安装时注意一个细节SQL Server 2008 R2 要求系统的 SHA-2 支持和某些补丁前置条件如果前面第 4.2 节没做这一安装程序会直接拒绝启动。第五步配置防火墙端口。SQL Server 默认 1433如果用了命名实例还要开 UDP 1434 让客户端能通过实例名找到端口。2003 的netsh firewall命令netsh firewall set portopening tcp 1433 SQL netsh firewall set portopening udp 1434 SQLBrowser第六步收尾。装完数据库之后把系统时间校准把管理员密码改成一个你团队都记得住的然后立刻做一次虚拟机快照或磁盘克隆。老系统一旦挂了重装一次搭环境的成本是十几个小时做个快照就是十秒钟的事这笔账很划算。6.2 无人值守应答文件怎么写如果要同时装好几台手工点鼠标太累用 winnt.sif 应答文件可以做到基本无人值守。做法是把下面的文件另存为winnt.sif放到安装源的i386目录下如果用 ISO 安装需要重新打包 ISO更简单的办法是把文件写进一张虚拟软盘镜像 .flp虚拟机挂载软驱安装程序会从 A 盘自动读取。[Data] AutoPartition1 MsDosInitiated0 UnattendedInstallYes [Unattended] UnattendModeFullUnattended OemSkipEulaYes OemPreinstallNo TargetPath\WINDOWS FileSystemConvertNTFS RepartitionYes [GuiUnattended] AdminPassword* EncryptedAdminPasswordNo OEMSkipRegional1 TimeZone210 OemSkipWelcome1 [UserData] ProductKeyXXXXX-XXXXX-XXXXX-XXXXX-XXXXX FullNameIT Support OrgNameWorkshop ComputerNameLEGACY-APP [LicenseFilePrintData] AutoModePerServer AutoUsers5 [Display] BitsPerPel16 XResolution1024 YResolution768 VRefresh60 [Networking] InstallDefaultComponentsYes [Identification] JoinWorkgroupWORKGROUP [TapiLocation] CountryCode86 AreaCode010几个关键字段说明一下。TimeZone210表示北京时间东八区这个值填错系统时间会差好几个小时。AdminPassword*表示密码留空由安装程序处理实际会生成一个空密码或按策略要求如果你想指定密码把星号换成明文密码并保持EncryptedAdminPasswordNo。ComputerName是固定值如果要装多台每台都得改这个字段或者干脆不用这个字段让安装程序随机生成再手工改。RepartitionYes配合AutoPartition1的意思是自动选择第一块磁盘的第一个分区并在必要时重新分区。这个设置在有数据的磁盘上很危险只对全新的虚拟磁盘使用。用这种方式装出来的系统仍然需要在装完之后手工做驱动、补丁、运行库和远程桌面那几个步骤它省掉的只是前面那十几分钟的交互操作。对于只在虚拟机里做实验的场景收益不算大但对于需要批量复现环境做测试的情况能省不少事。另外还有一种纯命令行的安装方式在已有的 32 位系统里运行i386\winnt32.exe /unattend:winnt.sif /s:D:\i386 /tempdrive:C这种方式是把系统装到另一个分区做双系统。虚拟机里用它比较方便可以省掉引导顺序调整的麻烦。7. 老系统的使用边界与长期维护最后聊点维护层面的东西这部分比安装本身更重要因为装完之后的日常使用才是真正消耗精力的地方。边界第一条网络隔离。Windows Server 2003 从 2015 年起就完全停止支持了之后的任何漏洞都不会有补丁。它只能跑在和外界物理隔离的内网里不能接公网也不建议接办公网。如果必须和其他网段通信用防火墙把端口限制到最小集合只放业务需要的那些。边界第二条不做通用服务器。别拿它当文件服务器给全公司用更别拿它当跳板机或者网关。它的定位就是跑那一个老软件其他职责一概不承担。边界第三条做好备份和快照。老系统的运维成本高一出问题就是几小时起步。虚拟机的优势在这里体现得淋漓尽致装好一个干净环境立刻打一个快照作为基线业务软件装好并验证通过后再打一个快照作为上线版本。以后无论怎么折腾坏了回滚到快照就行成本几乎为零。物理机的话至少用磁盘克隆工具做一份全盘镜像存着。边界第四条驱动和安装包本地归档。这一点我要重点强调。2003 时代的所有安装包、驱动、补丁现在都越来越难找了。我建议把下面这些东西全部归到一个目录里刻盘或者拷到移动硬盘上长期保存系统安装 ISO 和对应的授权信息虚拟化增强工具的安装包老版本SP2 以及所有你用到过的补丁.NET Framework、VC 运行库、MDAC 这些依赖组件业务软件的全部安装包和配置文件硬件驱动尤其是加密狗和采集卡的驱动这份归档的价值等哪天硬盘坏了、网络又找不到资源的时候你就体会到了。我手上有一份 2008 年传下来的驱动包到现在还在用救过好几次场。关于迁移的建议。如果你的老系统已经让你痛苦不堪可以评估一下迁移的可能性数据库从 SQL Server 2000/2005 升级到 2008 R2 或更高版本通常不难应用端的迁移取决于软件厂商是否提供新版本。实在没有替代方案的那就接受现实把它当一台专用设备看待给它一个稳定的运行环境然后别去动它——老系统最怕的就是我今天顺便给它优化一下一优化就出问题。我个人在这类老系统上的一条体会是能用虚拟机就用虚拟机装之前先规划好分区和版次装完立刻打快照所有安装包本地归档。这四件事做到了一套 2003 环境可以安安稳稳跑很多年你也不用年年重复一遍这个安装流程。