PXE+Centos5+Unattended4.7自动化安装Windows 2003

这几天在折腾如何自动化安装windows 2003操作系统,想象的结果应该是这样的:机器一开机就通过PXE引导,到dhcp服务器获得IP,然后到tftp服务器获得启动镜象,镜象启动起来后 再到samba获取安装文件,按照提前配置好的文件自动回答安装过程中的提问,直到系统完成安装。这个过程我们使用了Unattended4.7,一个开 源的项目,大家可以到http://unattended.sourceforge.net/了解更详细的东西。这期间学到了一些东西,也遇到了一些问 题,记录下来,算是对自己的一个交代,也希望需要的朋友少走弯路。

一、环境

服务器:     CentOS5.2+DHCP+TFTP+SAMBA
Unattended4.7
192.168.254.128

客户端:     MAC:00:0C:29:FA:77:E3
192.168.254.171

二、配置服务器

1.安装Unattended4.7
你也可以直接参考http://unattended.sourceforge.net/step-by-step.php来安装。

(1)下载Unattended4.7及相关文件
unattended-4.7.zip
unattended-4.7-dosboot.zip
unattended-4.7-linuxboot.zip
csdpmi5b.zip
djdev203.zip
perl561b.zip
pico396b.zip

这些软件包都可以到http://unattended.sourceforge.net/ 下载到。

(2)安装
将上面的包都拷贝到/opt目录下,然后按照如下步骤执行
#unzip unattended-4.7.zip
#unzip unattended-4.7-dosboot.zip
#unzip unattended-4.7-linuxboot.zip

这时生成了/opt/unattended-4.7目录,然后执行如下操作:
#mkdir -p /opt/unattended-4.7/install/djgpp

将csdpmi5b.zip、djdev203.zip、perl561b.zip、pico396b.zip这四个包拷贝到djgpp目录下,然后这样解压即可:
#unzip -L csdpmi5b.zip
#unzip -L djdev203.zip
#unzip -L perl561b.zip
#unzip -L pico396b.zip

为了防治winnt.exe不能识别超过64个字符长度路径的问题,我这里将/opt/unattended-4.7目录改名并移到/目录下:
#mv /opt/unattended-4.7 /unattend

2.配置DNS
官方文档上说要有DNS服务器将Unattended服务器解析为ntinstall,我这里并没有配,只是在/etc/hosts里添加一行:
192.168.254.128  ntinstall

3.配置SAMBA
(1)#vi /etc/samba/smb.conf             更改添加如下部分:

# passdb backend = tdbsam
smb passwd file = /etc/samba/smbpasswd           这个文件需要你创建,别忘了
netbios name = ntinstall 

[install]
comment = Unattended
writeable = no
locking = no
path = /unattend/install
guest ok = yes

(2)由于unattended默认是通过用户guest,口令guest来挂在samba共享的,所以我们还需要配置用户,命令如下:
#useradd guest
#smbpasswd -a guest             密码也是guest

(3)#service dhcpd start
#chkconfig –level 345 dhcpd on

(4)验证
#smbclient -L ntinstall -U guest       看看是否能看到什么:)

4.配置TFTP
(1)
#vi /etc/xinetd.d/tftp                  把diable=yes改为如下:
disable     = no

(2)拷贝启动镜象到tftpboot下
#mkdir /tftpboot/win
#cp -a /unattend/linuxboot/tftpboot/*    /tftpboot/win/
#cp -a /unattend/bootdisk/tftpboot/pxelinux.0    /tftpboot/win/

注 1:大家一定不要用/unattend/bootdisk/tftpboot/下的dos启动镜象,因为经过N次实验,虽然可以正常引导启动,但当拷贝完 安装文件到本地后,安装时总是会提示缺少文件。后来从官方的maillist里发现是dos启动文件的bug,linuxboot就没有这样的问题。

注 2:但是linuxboot有一个问题,从客户端启动起来,最后出现了unable to determine boot device at /usr/bin/find-boot-device line212的错误。从邮件列表里找到的原因是:启动核心里缺少了支持SCSI的驱动(我在vmware的客户端采用的是SCSI硬盘)。在真实的机器 上,可以在BIOS里将硬盘类型设置成compatible或者IDE之类的。我这里是vmware虚拟客户端,于是我将vmware客户端的硬盘删除, 重新建立一块IDE硬盘,这个问题得到解决。

5.配置DHCP
#vi /etc/dhcpd.conf                    添加如下内容:

 

ddns-update-style none;
max-lease-time 7200;
server-name "autoinstall";
default-lease-time 600;
allow booting;
allow bootp;
option domain-name-servers 192.168.254.128,192.168.254.2; 

subnet 192.168.254.0 netmask 255.255.255.0{
range 192.168.254.170 192.168.254.80;

group pxe{
next-server 192.168.254.128;
filename "/win/pxelinux.0";
host autowin{
hardware ethernet 00:0C:29:FA:77:E3; ‘这是测试机的网卡mac
fixed-address 192.168.254.171;
}
}

host glzcwin{
hardware ethernet 00:0C:29:FA:77:E3;
fixed-address 192.168.254.171;
}
}

6.生成unattend.txt文件

这 个文件中设置了windows安装过程中问题的答案。怎么样生成如下的文件呢?可以将windows安装光盘中Support\Tools文件夹中的 Deploy.cab文件复制到本地硬盘,并将其解压,运行其中的setupmgr.exe打开配置向导。 通过这个程序来生成unattend.txt文件。

我的unattend.txt文件如下:

;SetupMgrTag
[Data]
AutoPartition=1
MsDosInitiated="0"
UnattendedInstall="Yes" 

[Unattended]
UnattendMode=FullUnattended
Repartition = Yes
OemSkipEula=Yes
OemPreinstall=Yes
FileSystem=ConvertNTFS
TargetPath=\WINDOWS

[GuiUnattended]
AdminPassword="111111"
EncryptedAdminPassword=NO
OEMSkipRegional=1
TimeZone=210
OemSkipWelcome=1

[UserData]
ProductKey=BWMYD-D9XQF-X9JCQ-DHWM9-CXTBB
FullName="GLZC"
OrgName="ZQDL"
ComputerName="hrwang"

[Display]
BitsPerPel=8
Xresolution=1024
YResolution=768
Vrefresh=70

[LicenseFilePrintData]
AutoMode=PerServer
AutoUsers=5

[RegionalSettings]
LanguageGroup=10
SystemLocale=00000804
UserLocale=00000804
InputLocale=0804:00000804

[SetupMgr]
DistFolder=Z:\os\win2k3
DistShare=install

[Identification]
JoinWorkgroup=WORKGROUP

[Networking]
InstallDefaultComponents=Yes

生成的unattend.txt文件放到/unattend/install/site/目录下。

7.拷贝安装文件到/unattend/install/os/目录下
这是服务器设置的最后一步了,我们需要将windows 2003安装光盘的文件拷贝到/unattend/install/os下,但是必须创建一个文件夹来反映操作系统版本,我这里创建了win2k3,如果你装xp,可以建立winxp。
#mkdir /unattend/install/os/win2k3

挂载windows 2003 安装盘
#mount -o loop /dev/cdrom /media
#cp -a /media/I386  /unattend/install/os/win2k3/

三、配置客户端

开机时候我们使机器从PXE设备启动就可以了。

四、遗留的问题

1. 本想客户端开机后,什么都不需要做,直接把系统装好,但现在有一点问题,就是每次还需要回答几个问题(不是windows安装过程中的问题,而是 unattended的问题),主要是磁盘分区,格式化,是否选择安装其它软件,是否更改配置文件四个问题,我截了图供参考:

选择分区方案,这里我选择3

是否格式化,是否针对不同人员执行特定脚本。这里我选择格式化,和4

选择要额外安装的软件。我选择2

是否更改配置文件。我选择4

接下来,系统就会自动按照我们在unattend.txt文件里的设置安装。

我觉得解决上面的问题,可以通过更改/unattend/install/dosbin/install.pl脚本来实现,只不过我的功力还不够,:(

2.另一种情况我还没有实现,就是在/unattend/install/site/unattend.csv文件里加入多个需要自动安装的客户端的相关信息,然后做如下更改
#mv /unattend/install/site/config.pl /unattend/install/site/orig-config.pl
#mv /unattend/install/site/sample-config.pl  /unattend/install/site/config.pl

之后,不同的客户端自动安装时需要回答的问题的答案通过config.pl从unattend.csv文件里读出。这样可以根据自动安装多个不同设置的系统。

五、总结

我 的目标是:希望做一个集中的服务器,以后新安装的机器都可以连接上来获取安装介质,并且根据预定义好的设置来自动完成安装,设置包括需要的软件等等。网络 上有许多关于gost服务器的方法,觉得那样做在办公环境中还是相当方便,但是对于上架的服务器来说,肯定不妥。

你可能感兴趣的:(PXE+Centos5+Unattended4.7自动化安装Windows 2003)