月影无痕 发表于 2013-1-15 02:15:51

远程给服务器安装windows 2003

 
本文所指的远程服务器,是指无法物理接触,没有显示器,也没有键盘的位于机房中的服务器。

http://dl.iteye.com/upload/attachment/370450/a9ac7296-6e26-3eda-9824-0ad4b34e2f57.jpg
 
而网络上的关于远程安装系统的文章,大多是关于给局域网机器安装操作系统,操作人员能物理接触目标计算机,所以实现要相对容易一些。但是我觉得这只能算是通过网络安装系统,而不能算远程安装。
 
综上所述, 本文的核心就是:无法物理接触服务器情况下,如何远程给它安装操作系统 (windows和Linux ,在本文的其它文章中也会讲解远程通过vnc安装Linux)?
 
 
服务器无法物理接触,只能通过网络远程管理,这是很多互联网公司服务器部署的特点, 如果能在不需要物理接触服务器情况下,实现远程安装操作系统, 岂不快哉?。
 
 
在以下的内容中,我们将要安装操作系统的机器称之为目标机器,而提供安装程序镜像,dhcp, tftp服务的机器称之为 安装源服务器,  考虑真实的网络拓扑,应该在机房的某一台服务器上配置安装源,而我们又是通过Internet连接登录到安装源服务器上,来进行后续的操作。
 
 
 
安装windows可以采用windows 2003自带的远程安装服务(在 sp2中称为windows部署服务),也可以使用pxelinux+tftpd32+binlsrv安装,但是使用远程安装服务,需要在服务器上安装域控制器,dhcp, tftp服务等等,配置繁琐且实施效率较低,故放弃之。
 
 
本文的安装使用pxelinux+binlsrv+tftpd32方式安装,配置非常简单,安装源服务器甚至是windows XP也通用,优势明显。我们也可以使用它通过windows服务器安装Linux。
这几个文件的体积非常小,无须安装即可使用,如有困难,可联系作者以取得帮助。信箱是 zhangxugg@163.com。
 
基本安装思路如下:

1. Windows安装过程中,自动加载SCSI磁盘驱动,无须按F6, 这是相当重要的,否则安装过程中无法识别出SCSI磁盘。如何制作集成SCSI通用驱动的安装源是成功安装的前提。对此请参阅相关文章:http://blog.beibei.in/post/SATA_windows_setup.htm

2. 安装完成后,windows自动登录,并自动安装好网卡驱动,windows的从dhcp服务器得到IP。

3. 管理员通过IPC或DamWare软件/远程桌面等方式连接到目标机器,进行初化配置。

 
本文就是使用以上方法,成功在Dell PowerEdge R610/R710服务器上成功安装windows 2003。
 
我认为,在操作系统安装过程中,最为重要的是给磁盘分区, 目前有两种可行方式:
分区过程中,手工分区(需要有远程控制卡,R610/R710均支持)
自动分区,没有任何人工参与(但整个磁盘会被重新格式化为一个分区)
 
如果服务器没有控制卡,则只能选择后者实现无人参与安装, 我当时的想法是在文本安装阶段,出现分区时界面时,同时启动一个VNC Server(因为在这个阶段,客户端的windows已经通过binlsrv加载了网卡驱动,并已经支持TCP/IP)等待客户端连接并控制, 这样控制端就可以通过VNC控制客户机完成手工分区。
 
但是如何在文本模式下启动指定的后台程序?我至今还没有解决办法, 如果您有类似的解决思路或方案,请一定告诉我,甚是感谢。 或是了解软件设计的朋友,能否对windows安装程序进行改造,集成VNC Server? 当然,这个思路也是我从Linux可以使用VNC远程安装的思路得来。 如果windows的安装过程也可以实现VNC控制,那么将大大增强安装过程的可控性。
 
当然,如果服务器有远程控制卡,那完全可以实现手动分区。
 
 
本文以Dell PowerEdge R610/R710服务器为例,描述了在无法物理接触服务器情况下,实现远程自动安装windows 2003。
 
远程控制卡的设置,请参照http://zhangxugg-163-com.iteye.com/blog/838682

所使用的工具, 我都已经准备好并提供下载,如下载链接失效,请联系作者信箱 zhangxugg@163.com 索取。
原文地址是 http://zhangxugg-163-com.iteye.com/admin/blogs/846589
 
 
一、搭建安装源服务器
这部分工作包括TFTP,DHCP,windows安装源建立,windows匿名共享,准备客户机网卡驱动文件(一般为.sys文件)
将我提供的安装文件解压缩到某个目录,如D:\OS\RIS, 目录结构如下:

http://dl.iteye.com/upload/attachment/370443/071611f8-d2f9-3348-8e4d-3284cc702b48.jpg
 
 
 
主要文件说明:
tftpd32.exe  此程序提供dhcp, tftp服务,以供pxe客户端正常启动
winnt.sif     windows的无人值守应答文件
Binlsrv.exe   binl服务器程序
Nics.exe      binl数据库文件
pxelinux.cfg   启动菜单配置目录 
2003          windows 2003安装文件目录
2003\$OEM$   保存自动安装的网卡驱动
2003\I386      windows 2003安装文件,对应安装光盘中的I386
 
1. 部署安装源
建立目录 D:\OS\RIS\2003\i386, 将windows 2003安装盘中i386目录下的所有文件,全部复制到D:\OS\RIS\2003\i386目录中。
然后使用driverpacks给D:\OS\RIS\2003\i386安装源集成SCSI驱动(请参阅http://blog.beibei.in/post/SATA_windows_setup.htm),制作完毕后,请用我提供的文件2003\i386\preSetup.cmd, 替换你的I386\preSetup.cmd。

将driverpacks生成的OEM目录(与I386同级),修改成 $OEM$
 
$OEM$\$1中的内容,会被复制到系统盘根目录下
$OEM$\$$ 中的内容会被复制到windows根目录下(一般为c:\windows\)
所以,我将常用软件(如winrar)放到$OEM$\$1\tools, 如果系统安装在C盘,当系统安装完成后,C:\tools\下即可找到需要安装的软件。
 
而$OEM$\$1\tools\RunOnce.reg 是我针对windows 2003作的一个初始设置,包括:
 启用远程桌面,禁止匿名共享,禁用关闭事件跟踪程序,禁用错误报告
您可以根据自己需要进行修改。
 
2. 收集客户机网卡驱动
找一台与客户机网卡相同的机器(后面称之为参考机器),手工提取生产商ID,产品ID,驱动文件。在参考机器上执行:
我的电脑 右键菜单->管理->设备管理器->网络适配器->选择相应网卡并双击,并选择详细信息选项卡,如下图:

http://dl.iteye.com/upload/attachment/370445/c7ee60ac-c0ab-3799-b184-b6c74197416f.jpg
 
 
划红线的就是网卡的生产商id, 产品id,如上图就分别是 1022,2000, 将这两个id记录下来,后面有用。
 
再切换到“驱动程序”选项卡,并点击“驱动程序详细信息”,即可得到当前网卡的驱动文件名

http://dl.iteye.com/upload/attachment/370447/3f61ee16-73e9-3db1-ace6-9792331647a9.jpg
 
<div class="Section0">将这个驱动文件复制出来,并放到 D:\OS\RIS\2003\I386目录下。
 
再编辑nics.txt文件,增加一行,按已经存在的范例填写生产商id, 产品id, 驱动文件名,描述。如本文的范例是(dell R610/R710)
14e4 1639 b06nd51x.sys dell
 
至此网卡驱动搜索完毕。

为了让windows在安装后能自动安装好驱动,需要做一些额外必须的工作,让windows在首次登录时自动安装网卡驱动。
如果你的服务器是Dell PowerEdge R610/710,请到dell官方网站下载网卡驱动,得到一个大约6M的可执行文件,将这个文件改名为nic.exe, 并放到 D:\OS\RIS\2003\$OEM$\$1\drivers\目录中,并在winnt.sif中的段中添加
Command10="%SystemDrive%\drivers\nic.exe /s"
 
这样,windows安装完成后首次自动登录后,自动静默安装网卡驱动。

3.  在安装源服务器上建立共享目录,这个共享目录应该是tftp的根目录,在本例中,就是D:\OS\RIS,共享名设置为ris, 并需要设置everyone可读取权限,同时必须开启匿名共享。
Windows 2003开启匿名共享请参阅
http://technet.microsoft.com/zh-cn/library/cc782121%28WS.10%29.aspx
http://www.msserver.com.cn/Server2003/49.html
 
4.  编辑winnt.sif
将段的OriSrc的IP换成你的安装源服务器的IP(必须和dhcp分配的IP位于同一网段)
将段的SetupSourceDevice中的ip也换成安装源服务器的IP

将共享名(本例是ris)换成你自己真实的共享名称。

可根据需要修改段的AdminPassword和AutoLogonCount,分别是管理员初始密码和自动登录次数,本例中初始密码是123456,自动3次登录。
 
 启动tftpd32.exe 并设置如下(安装源服务器IP是192.168.2.8)
主界面中设置 Current Directory为 D:\OS\RIS
Server Interface 设置为192.168.2.8
点击其下方的settings,GLOBAL选项卡中选中TFTP server,DHCP Server即可
TFTP选项卡的Base Derictory 设置为 D:\OS\RIS,仅选中以下高级选项:
Option negotiation
Translate Unix file names
Allow "\" As virtual root
 
dhcp设置:
ip pool starting address : 192.168.2.100
Size of pool  :  10
Boot file  :  pxelinux.0
Mask     : 255.255.255.0
设置完毕后,重启tftpd32。
 
至此,安装源服务器工作完成,接下来进入激动人心的正式安装阶段。
 
二、开始安装windows 2003
启动tftpd32, binlsrv(不要关闭它)两个程序

1. 使用SSH/Telnet连接到目标机器控制卡上(请参阅http://zhangxugg-163-com.iteye.com/blog/838682),连接后在命令提示符下输入 console com2 即可看到远程机器BIOS启动信息(可能需要配合ipmish.exe工具控制目标机器的电源,这个工具我已经保存到2003\$OEM\tools目录下)。设置从网卡启动,随后即可出现熟悉的windows文本模式安装界面
 
2. 当提示“setup is starting windows ...' 之后, telnet/SSH客户端显示可能空白,这是因为windows网络功能启用时的图形界面影响所致, 断开telnet/SSH,重新连接即可。
 
3.  当使用telnet/ssh重新连接后,即可出现分区界面,对中文windows,可能是乱码,但这并不影响正常安装,凭经验和感觉操作即可,另一个可选方案是使用putty连接,并设置编码为utf-8就可以正常显示。
分区完成,windows复制文件并重启,这时一定要设置从磁盘优先启动,后期的图形界面,是全自动的,不需要手工参与。
 
等待大约半小时,即可安装完成,如果不出意外,你就可以使用远程桌面客户端连接它, 怎么得知已经安装好系统客户端的IP ?  这个可以在tftpd32主界面的 dhcp server选项卡中查看到。
 
 
至此,本教程告一段落,总结一下,有几个要点:
1. 安装源必须集成SCSI驱动,这个可以使用DriverPacks工具完成
2. 服务器最好要有远程控制卡
3. 安装源服务器必须开启匿名共享
4. 修改winnt.sif以达到自动安装网卡驱动的目的

但是如果目标机器没有远程控制卡,怎么办?折衷的方案就是让windows自动分区(整个磁盘将会格式化为一个分区),修改winnt.sif, 将段的AutoPartition设置为1, 段的Repartion设置为Yes即可无须手工分区,但是在重装前一定要注意备份数据。

我整理好的程序包下载地址:
http://zhangxugg-163-com.iteye.com/admin/blogs/846589
页: [1]
查看完整版本: 远程给服务器安装windows 2003