本文所指的远程服务器,是指无法物理接触,没有显示器,也没有键盘的 位于机房中的服务器 。
而网络上的 关于远程安装系统的 文章,大多是关于 给局域网 机器安装操作系统,操作人员 能 物理接触目标计算机,所以实现要相对容易一些 。但是我觉得这只能算是通过网络安装系统,而不能算远程安装 。
综上所述, 本文的核心就是:无法物理接触服务器情况下,如何远程给它安装操作系统 (windows 和 Linux ,在本文的其它文章中也会讲解远程通过 vnc 安装 Linux) ?
服务器无法物理接触,只能通过网络远程管理,这是很多互联网公司服务器部署的特点, 如果能在不需要物理接触服务器情况下,实现远程安装操作系统, 岂不快哉?。
在以下的内容中,我们将要安装操作系统的机器称之为目标机器,而提供安装程序镜像,dhcp, tftp 服务的机器称之为 安装源服务器 , 考虑真实的网络拓扑,应该在机房的某一台服务器上配置安装源,而我们又是通过 Internet 连接登录到安装源服务器上,来进行后续的操作。
安装windows 可以采用 windows 2003 自带的远程安装服务(在 sp2 中称为 windows 部署服务),也可以使用 pxelinux+tftpd32+binlsrv 安装,但是使用远程安装服务,需要在服务器上安装域控制器, dhcp, tftp 服务等等,配置繁琐且实施效率较低,故放弃之。
本文的安装使用pxelinux+binlsrv+tftpd32 方式安装,配置非常简单,安装源服务器甚至是 windows XP 也通用,优势明显。我们也可以使用它通过 windows 服务器安装 Linux 。
这几个文件的体积非常小,无须安装即可使用,如有困难,可联系作者以取得帮助。信箱是 [email protected] 。
基本安装思路如下:
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
所使用的工具, 我都已经准备好并提供下载,如下载链接失效,请联系作者信箱 [email protected] 索取。
原文地址是 http://zhangxugg-163-com.iteye.com/admin/blogs/846589
一、 搭建安装源服务器
这部分工作包括TFTP , DHCP , windows 安装源建立, windows 匿名共享,准备客户机网卡驱动文件(一般为 .sys 文件)
将我提供的安装文件解压缩到某个目录,如D:\OS\RIS, 目录结构如下:
主要文件说明:
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 ,驱动文件。在参考机器上执行:
我的电脑 右键菜单-> 管理 -> 设备管理器 -> 网络适配器 -> 选择相应网卡并双击,并选择详细信息选项卡,如下图:
划红线的就是网卡的生产商id, 产品 id ,如上图就分别是 1022 , 2000, 将这两个 id 记录下来,后面有用。
再切换到“驱动程序”选项卡,并点击“驱动程序详细信息”,即可得到当前网卡的驱动文件名
将这个驱动文件复制出来,并放到 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 中的 [GuiRunoce] 段中添加
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
将[data] 段的 OriSrc 的 IP 换成你的安装源服务器的 IP (必须和 dhcp 分配的 IP 位于同一网段)
将[SetupData] 段的 SetupSourceDevice 中的 ip 也换成安装源服务器的 IP
将共享名(本例是ris )换成你自己真实的共享名称。
可根据需要修改[GuiUnattended] 段的 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, 将 [data] 段的 AutoPartition 设置为 1, [RemoteINstall] 段的 Repartion 设置为 Yes 即可无须手工分区,但是在重装前一定要注意备份数据。
我整理好的程序包下载地址:
http://zhangxugg-163-com.iteye.com/admin/blogs/846589