PXE 服务器批量部署方案 
Ubuntu实现多系统批量部署 
2014/4/15 


目录 
文档版本说明...................................................................................................................4 
参考资料............................................................................................................ ....... ......4 
文档目的............................................................................................................ ....... ......4 
声明..................................................................................................................... ....... ......4 
服务器和软件需求列表....................................................................................................4 
1,部署前工作介绍...................................................................................................................5 
1.1 目录介绍......................................................................................................................5 
1.2 相关目录创建................................................................................................ ............. 5 
2 软件包实施安装.............................................................................................. ............. .........5 
2.1 tftpd-pha的安装.............................................................................................. .............5 
2.1.1 配置文件.............................................................................................. .............5 
2.2 dhcp3-server安装.............................................................................................. ...........6 
2.2.1 修改配置文件.............................................................................................. ...6 
2.2.2 启用dhcp服务.............................................................................................. ..7 
2.3, 安装apache2............................................................................................. .. ........ ....7 
2.3.1 服务启用和测试.............................................................................................. 7 
2.4 dns服务器............................................... ........................ ...........................................7 
2.4.1 软件安装.................................................................................. ........... ........... 7 
2.4.2 配置文件介绍........................................................................... ........... ...........7 
2.4.3 创建和修改正、反解文件......................................................... ........... ..........8 
2.4.4 启用服务并测试.......................................................................... ........... .........9 
3,系统文件............................................... ........................ ...........................................................9 
3.1 ubuntu光盘文件........................ ........................ .........................................................9 
3.2 redhat-5.4 光盘文件............... ........................ .........................................................9 
3.3 centos-5.7 光盘文件............... ........................ .........................................................9 
4,启动主菜单编辑.................................. ........................ ..........................................................9 
4.1 编辑default文件..................... ........................ .........................................................9 
4.2创建 pxe.conf文件..................... ........................ .......................................................11 
4.3 编辑ubuntu引导文件................. ........................ .......................................................11 
4.4 编辑redhat菜单引导文件........ ........................ ......................................................11 
4.5编辑redhat菜单引导文件............. ........................ ......................................................12 
5,创建ks自动安装脚本............................ ........................ ......................................................12 


文档版本说明 
版本 
发布时间 
修订章节 
作者 
V1.0 
2013/4/14 


参考资料 
1,ubuntu官网. https://help.ubuntu.com/community/PXEInstallMultiDistro 
2,linux 公社. http://www.linuxidc.com/Linux/2012-07/65748.htm 

文档目的 
通过ubuntu server,搭建一个pxe网络部署平台,是这个pxe平台能够选择性批量自动部署Redhat,Centos,Ubuntu,Dos和Windows系统。 




服务器和软件需求列表 
系统版本 
服务器ip 
软件需求及功能 




Ubuntu-12.04 



192.168.254.131 
Dhcp3-server 
分配ip地址 


Tftpd-pha 
下载系统引导文件 


Syslinux 
一个轻便的引导程序,告诉计算机从linux内核启动 


Apche2 
共享系统镜像文件 


Bind9 
DNS转发查询 


Bind9-doc 
提供模板文件 


Dnsutils 
Dns相关工具 



1,部署前工作介绍: 

1.1,目录介绍 
/var/lib/tftpboot下的目录pxelinux.cfg,ubuntu,redhat,cenots,ubuntu-install,dos,window 
目录名 
目录下文件名 
功能 
pxelinux.cfg 
default 
安装界面 主菜单 

pxe.conf 
界面辅助设置 
ubuntu 
initrd.gz,vmlinuz 
内核引导相关文件 

ubuntu.menu 
主菜单中的子菜单,有加载ubuntu 源信息 
redhat 
initrd.img ,vmlinuz 
内核引导相关文件 

ubuntu.menu 
主菜单中的子菜单,有加载 redhat 源信息 
ubuntu-installer 

里面文件较多,主要是从ubuntu系统镜像文件中复制过来的,从光盘的install/netboot中全部拷贝过来。 
Apacha默认的文档目录/var/www 


/var/www 
Ubuntu/ 
对应系统光盘文件复制过来的 

Redhat/ 
对应系统光盘文件复制过来的 

Centos/ 
对应系统光盘文件复制过来的 


1.2 相关目录创建 
mkdir -p /var/www/install/ubuntu 
mkdir -p /var/www/install/redhat 
mkdir -p /var/www/install/centos 
mkdir -p /var/lib/tfptboot/ubuntu 
mkdir -p /var/lib/tfptboot/redhat 
mkdir -p /var/lib/tfptboot/centos 

2,软件包实施安装 
2.1,tftpd-pha的安装 
apt-get install xinetd 
apt-get install tftpd-pha 

2.1.1 配置文件: /etc/default/tftp-pha 
# /etc/default/tftpd-hpa 
TFTP_USERNAME="tftp" 
TFTP_DIRECTORY="/var/lib/tftpboot" (tftpd默认目录) 
TFTP_ADDRESS="0.0.0.0:69" 
TFTP_OPTIONS="--secure" 

vim /etc/xinetd/tftp(默认没有,可以手动创建,这里我们不需要) 
service tftp 
         { 
             disable         = no #这里改为no 
             socket_type     = dgram 
             protocol        = udp 
             wait            = yes 
             user            = root 
             server          = /usr/sbin/in.tftpd 
             server_args     = -s /tftpboot/root 
             source          = 11 
             cps             = 100 2 
             flags =IPv4 
          } 

2.2,dhcp3-server安装 
apt-get install dhcp3-server 
配置文件:/etc/dhcp/dhcpd.conf 
2.2.1 修改配置文件 
在全局配置中添加allow booting;表示是否相应使用者查询 
allow bootp;表示是否相应激活查询 
在subnet中修改自己需要更改的参数,最后还要加入 
next-server 192.168.254.131; 告诉客户端tftpd服务器是 
192.168.254.131 
filename "isolinux.0"; 
下面贴出自己的dhcpd.conf文件 
ddns-update-style none; 
# option definitions common to all supported networks... 
option domain-name "example.com"; 
option domain-name-servers ubuntu.example.com; 
default-lease-time 600; 
max-lease-time 7200; 
allow booting; 
allow bootp; 
# A slightly different configuration for an internal subnet. 
subnet 192.168.254.0 netmask 255.255.255.0 { 
range 192.168.254.1 192.168.254.100; 
option domain-name-servers ubuntu.example.com; 
# option domain-name "example.com"; 
option routers 192.168.254.131; 
option broadcast-address 192.168.254.255; 
default-lease-time 600; 
max-lease-time 7200; 
filename "pxelinux.0"; 
next-server 192.168.254.131; 


2.2.2 启用dhcp服务 
service isc-dhcp-server start 


2.3, 安装apache2 
apt-get install apache2 
2.3.1 服务启用和测试 
apache默认文档目录是/var/www ,所以这里自学要启动apache服务就ok 
注意:将/var/www下的install目录权限更改一下: 
chmod -R 777 /var/www/install 
测试一下,是否能看到/var/www/install下的文件 
http://192.168.254.131/install 

2.4 dns服务器 
2.4.1 软件安装 
apt-get install bind9 bind9-doc dnsutils 

2.4.2 配置文件介绍 
/etc/bind/ 下 
named.conf.options 为全局配置文件 
named.conf.local 添加和删除zone文件 
db.192.168.254 自定义反解文件 
db.example.zone 自定义正解文件 
看配置文件: 
vim named.conf.options 
forwarders { 
// 192.168.254.131; 
// }; 只需要更改这里的ip地址,如果能通外网,写本地区的dnsip地址, 

vim named.conf.local 添加正解文件和反解文件 
zone "example.com" { 
type master; 
file "example.zone"; #正解文件为 example.zone 
(没写路径,默认在/var/cache/bind下) 
}; 
zone "254.168.192.in-addr.arpa" { 
type master; 
file "/etc/bind/db.192.168.254"; #反解文件为 db.192.168.254 
}; 

2.4.3 创建和修改正、反解文件 
cp /etc/bind/db.127 /var/cache/bind/example.zone 
cp /etc/bind/db.127 /etc/bind/d.192.168.254 
正解文件 vim /var/cache/bind/example.zone 

$TTL 604800 
@ IN SOA ubuntu.example.com. root. ( 
2 ; Serial 
604800 ; Refresh 
86400 ; Retry 
2419200 ; Expire 
604800 ) ; Negative Cache TTL 

@ IN NS ubuntu.example.com. 
@ IN A 127.0.0.1 
@ IN AAAA ::1 
ubuntu IN A 192.168.254.131 
pincer IN A 192.168.254.132 
$GENERATE 100-200 pincer$ in a 192.168.254.$ #根据分配的ip地址 
分配对应主机名 

反解文件 vim /etc/bind/d.192.168.254 
$TTL 604800 
@ IN SOA ubuntu.example.com. root.localhost. ( 
1 ; Serial 
604800 ; Refresh 
86400 ; Retry 
2419200 ; Expire 
604800 ) ; Negative Cache TTL 

@ IN NS ubuntu.example.com. 
1.0.0 IN PTR localhost. 
131 IN PTR ubuntu.example.com. 
132 IN PTR pincer.example.com. 
$GENERATE 100-200 $ IN PTR pincer$.example.com. #根据分配的ip地址分配对 
应主机名 
#################################注意################################### 
正解和反解文件的拥有人最好改为bind,不然服务器是没有权限读取正,反解文件的 
######################################################################## 

2.4.4 启用服务并测试 
/etc/init.d/bind9 start 
netstat -nuplt|grep :53 
测试: 
修改本地文件/etc/resolv.conf 
nameserver 192.168.254.131 #本机的dns指向131 
正解测试: 
nslookup 
pincer.example.com 
反解测试: 
host 192.168.254.132 

3,系统文件 
cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot 
3.1 ubuntu光盘文件 
挂载iso镜像文件 
mount -o loop /src/ubuntu.12.04.iso /media/cdrom 
这里不采取软连接,因为涉及到多个系统文件,所以只能一一复制到服务器 
里面 
cp -r /media/cdrom/* /var/www/install/ubuntu & 
cp /media/cdrom/install/initrd.gz /var/lib/tftpboot/ubuntu 
cp /media/cdrom/install/vmlinuz /var/lib/tftpboot/ubuntu 
cp -r /media/cdrom/install/netboot/ubuntu-installer /var/lib/tftpboot/ 
cp -r /media/cdrom/install/netboot/pxelinux.cfg /var/lib/tftpboot/ 
3.2 redhat-5.4 光盘文件 
umount /media/cdrom 
mount -o loop /src/rhel-5.4.iso /media/cdrom 
cp -r /media/cdrom/* /var/www/install/redhat & 
cp /media/cdrom/install/initrd.img /var/lib/tftpboot/redhat 
cp /media/cdrom/install/vmlinuz /var/lib/tftpboot/redhat 
3.3 centos-5.7 光盘文件 
umount /media/cdrom 
mount -o loop /src/centos-5.7.iso /media/cdrom 
cp -r /media/cdrom/* /var/www/install/centos & 
cp /media/cdrom/p_w_picpaths/pxeboot/vmlinuz /var/lib/tftpboot/ 
cp /media/cdrom/p_w_picpaths/pxeboot/initrd.img /var/lib/tftpboot/ 
注意:将/var/www下的install目录权限更改一下: 
chmod -R 777 /var/www/install 

4,启动主菜单编辑 
4.1 编辑default文件 
使用vim编辑: vim /var/lib/tftpboot/pxelinux.cfg/default 

include ubuntu-installer/i386/boot-screens/menu.cfg #1,2行是主菜单的界面设置 
default ubuntu-installer/i386/boot-screens/vesamenu.c32 
TIMEOUT 600 
ONTIMEOUT BootLocal 
PROMPT 0 #如果改为1,则等待1 
秒后自动安装 
MENU INCLUDE pxelinux.cfg/pxe.conf #可以引用自定义界面 
设置,文件为pxe.conf , 
文件在/var/lib/tftpboot/pxelinux.cfg下 
NOESCAPE 1 
LABEL BootLocal 
localboot 0 
TEXT HELP 
Boot to local hard disk 
ENDTEXT 
MENU BEGIN Ubuntu #ubuntu菜单,可以进入, 
里面有子菜单 
MENU TITLE Ubuntu 
LABEL Previous 
MENU LABEL Previous Menu 
TEXT HELP 
Return to previous menu 
ENDTEXT 
MENU EXIT 
MENU SEPARATOR 
MENU INCLUDE ubuntu/ubuntu.menu #引用ubuntu定义菜单文 
件,进行安装源选择和自 
动安装 
MENU END 
MENU BEGIN Redhat Enterprise Linux 
MENU TITLE Redhat Enterprise Linux 
LABEL Previous 
MENU LABEL Previous Menu 
TEXT HELP 
Return to previous menu 
ENDTEXT 
MENU EXIT 
MENU SEPARATOR 
MENU INCLUDE redhat/rhel.menu 
MENU END 
MENU BEGIN CentOS 
MENU TITLE CentOS 
LABEL Previous 
MENU LABEL Previous Menu 
TEXT HELP 
Return to previous menu 
ENDTEXT 
MENU EXIT 
MENU SEPARATOR 
MENU INCLUDE centos/centos.menu 
MENU END 
######################################################################## 
注意:下面的几个文件,必须与default文件中include写的路径和文件名对应 
######################################################################## 
4.2创建 pxe.conf文件 (这个文件可选,因为default中引用了自带的) 
vim /var/lib/tftpboot/pxelinux.cfg/pxe.conf 
MENU TITLE PXE Server 
#MENU BACKGROUND pxelinux.cfg/logo.png 
NOESCAPE 1 
ALLOWOPTIONS 1 
PROMPT 0 
#menu width 80 
#menu rows 14 
#MENU TABMSGROW 24 
#MENU MARGIN 10 
menu color border 30;44 #ffffffff #00000000 std 

4.3 编辑ubuntu引导文件 
vim /var/lib/tftpboot/ubuntu/ubuntu.menu 
LABEL 2 
MENU LABEL Ubuntu 12.0 (32-bit) 
KERNEL ubuntu/vmlinuz 
APPEND http://192.168.254.131/install/ubuntu ks=http://192.168.254.131/ 
install/ubuntu/ks.cfg initrd=ubuntu/initrd.gz 
TEXT HELP 
Boot the Ubuntu 12.04 32-bit DVD 
ENDTEXT 
#LABEL 1 
# MENU LABEL Ubuntu 12.04 (64-bit) 
# KERNEL ubuntu64/vmlinuz 
## APPEND http://192.168.254.131/install/ubuntu ks=http://192.168.254.131/ 
install/ubuntu64/ks.cfg initrd=ubuntu64/initrd.gz 
# TEXT HELP 
# Boot the Ubuntu 12.04 64-bit DVD 
# ENDTEXT 
目前要确定,/var/lib/tftpboot/ubuntu/下有三个文件了initrd.gz ubuntu.menu vmlinuz 
文件中,使用的是ubuntu 32位的系统,如果有32和64两个选择,可以去掉下面的注释,然后做相应的更改,例如在/var/www/install/下创建目录ubuntn64,然后将系统镜像文件复制进入,再创建一个ks.cfg文件放在ubuntu64 目录下 
在/var/lib/tfptboo/下创建ubuntu64目录,将内核文件,引导文件等复制进去 

4.4 编辑redhat菜单引导文件 
vim /var/lib/tftpboot/redhat/rhel.menu 

#LABEL 2 
#MENU LABEL rhel 5.4 (64-bit) 
# KERNEL redhat64/vmlinuz 
# APPEND ks=http://192.168.254.131/install/redhat64/ks.cfg lang=us keymap=us initrd=redhat64/initrd.img ramdisk_size=10000 
# TEXT HELP 
# Install redhat (32-bit) 
# ENDTEXT 
# TEXT HELP 
# Install redhat (64-bit) 
# ENDTEXT 
LABEL 1 
MENU LABEL rhel 5.4 (32-bit) 
KERNEL redhat/vmlinuz 
APPEND ks=http://192.168.254.131/install/redhat/ks.cfg lang=us keymap= 
us initrd=redhat/initrd.img ramdisk_size=10000 
TEXT HELP 
Install redhat (32-bit) 
ENDTEXT 
确认/var/lib/tftpboot/redhat/目录下已经有三个文件了:initrd.img rhel.menu vmlinuz 

4.5编辑centos菜单引导文件 
vim /var/lib/tftpboot/redhat/centos.menu 
#LABEL 2 
# MENU LABEL CentOS 5.4 (64-bit) 
# KERNEL CentOS/5.4/amd64/vmlinuz 
# APPEND method=nfs:10.10.1.10:/srv/install/CentOS/5.4/amd64/ lang=us key 
map=us ip=dhcp ksdevice=eth0 noipv6 initrd=CentOS/5.4/amd64/initrd.img ramdisk_s 
ize=10000 
# TEXT HELP 
# Install CentOS 5.4 (64-bit) 
# ENDTEXT 
LABEL 1 
MENU LABEL CentOS 5.4 (32-bit) 
KERNEL centos/vmlinuz 
APPEND ks=http://192.168.254.131/install/centos/ks.cfg lang=us keymap=u 
s ip=dhcp ksdevice=eth0 noipv6 initrd=centos/initrd.img ramdisk_size=10000 
TEXT HELP 
Install CentOS 5.4 (32-bit) 
ENDTEXT 

5,创建ks自动安装脚本 
这里是使用的图形界面创建的,apt-get install system-config-kickstart 
贴出ubuntu的ks.cfg 
#################################注意################################### 
在编辑redhat 5.4的ks.cfg脚本的时候,必须要安装一个软件(在最下面添加%packages 
@chinese-support) 选择安装中文支持就可以了 
否则会弹出图形交互让你选择安装软件,!!!同时要加入key --skip 否侧要弹出图形交互让你填入序列号!!! 
######################################################################## 
27311662 
29769350 
18118723045 xie 

#Generated by Kickstart Configurator 
#platform=x86 

#System language 
lang en_US 
#Language modules to install 
langsupport en_US 
#System keyboard 
keyboard us 
#System mouse 
mouse 
#System timezone 
timezone Asia/Shanghai 
#Root password 
rootpw --disabled 
#Initial user 
user pincer --fullname "pincer" --iscrypted --password $1$sW.dwNiL$mT3F6HEj1Et.o 
dDtbTgCi1 
#Reboot after installation 
reboot 
#Use text mode install 
text 
#Install OS instead of upgrade 
install 
#Use Web installation 
url --url http://192.168.254.131/install/ubuntu 
#System bootloader configuration 
bootloader --location=mbr 
#Clear the Master Boot Record 
zerombr yes 
#Partition clearing information 
clearpart --all --initlabel 
#Disk partitioning information 
part / --fstype ext4 --size 12000 
part swap --size 1024 
#System authorization infomation 
auth --useshadow --enablemd5 
#Network information 
network --bootproto=dhcp --device=eth0 
#Firewall configuration 
firewall --disabled 
#Do not configure the X Window System 
skipx 
%packages 
openssh-server 
openssh-client 
其他系统的ks文件同上,也可以根据这个修改 
他们都是通过httpd共享的,所有都放在相应的位置/var/www/install/ubuntu/ks.cfg 
redhat :/var/www/install/redhat/ks.cfg 

##################################注意################################# 
因为使用vmware workstation,所以在测试完redhat后,当我测试ubuntu的时候,在自动安装时总是报错,这个错误在网上无法查到,我花费了3个小时。。。囧 

这里可以看出的光驱不能被mount,但是我已经把虚拟机的光驱卸载了,这是因为,之前复制的时候,第一次挂载的ubuntu,第二次挂载的redhat,所以导致了这个问题,下面只要将客户机的cdrom选择ubuntu的景象就ok了, 
但是,同样,我们cdrom选择ubuntu的时候,来进行安装redhat却不会这样报错!!!! 
#######################################################################