本文所指的远程服务器,是指无法物理接触,没有显示器,也没有键盘的 位于机房中的服务器 。
而网络上的 关于远程安装系统的 文章,大多是关于 给局域网 机器安装操作系统,操作人员 能 物理接触目标计算机,所以实现要相对容易一些 。但是我觉得这只能算是通过网络安装系统,而不能算远程安装 。
综上所述, 本文的核心就是:无法物理接触服务器情况下,如何远程给它安装操作系统 (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,
目录结构如下:
主要文件说明:
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
INF file textsetup.sif is corrupt or missing,status 21.Setup cannot continue.Press any key to exit.
不知道您有什么好的解决办法,已经按照您的教程做好了xp,2003_x86都可以在实际工作中使用了。有什么解决办法能否发我邮箱一份呢?在下不胜感激啊!先在在这里谢过了!老师。我的邮箱:249943095@qq.com
1.
“开始→运行”,输入
CMD,然后在MS-DOS 提示符后键入:
net statistics workstation
指令输出信息的第一行,就是计算机上次启动的时间。
2.
在Windows 98中:单击“开始→程序→附件→系统工具→系统信息”命令,在“系统信息”程序窗口中显示的“Uptime”,就是Windows 98自开机以来运行的时间,精确到秒。在打开的“系统信息”窗口中,可以随时按下F5 刷新显示当前时间。
在Windows XP中:单击“开始→运行”,输入“cmd”后回车,打开命令提示符窗口。输入“systeminfo”并回车,稍等一会儿就会看到有关自己操作系统的一个摘要,其中有一行为“系统启动时间”,后面的时间单位也精确到秒,如图所示。怎么样,很神奇吧?需要注意的是,这里的“系统启动时间”也就是“系统运行时间”,意思是指系统从启动完成到目前所经过的时间,当机器重启以后就重新从零开始计算。
早上链接vss的时候,提示路径无效,发现没有了共享。
:
运行services.msc ,启动server 和 workstation 服务项
文件夹选项里勾选 共享项就可以了。