您的位置:首页 > 理论基础 > 计算机网络

CentOS6.5下网络启动服务器安装和配置方法(pxe+tftp+dhcpd+kickstart)

2015-10-28 17:01 986 查看
背景:
在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量,但是批量自动化安装服务器的基础是网络启动服务器(bootserver),下面就是网络启动服务器的安装和配置方法,供大家参考!Centos7以前的操作系统因为xinetd和TFTP版本的问题(版本过低)在安装后在PXE装机时会出现无法连接TFTP服务器的问题,建议安装TFTP4.0以上的版本可完成本实验Centos7以下版本可以完成本实验,Centos7及以上版本配置环境同以往版本不同,另见博客。术语解释:PXE:(Pre-boot ExecutionEnvironment)是由Intel协议,它可以是计算机通过网络而不是本地硬盘、光驱等设备启动。现代的网卡,一般都内嵌支持 pxe的rom芯片。当计算机引导时,BIOS把pxe dient调入内存执行,并显示出命令菜单,经用户选择后,PEXdient将放置在远端的操作系统通过网络下载到本地运行。DHCP:(Dynamic Host Control Protocol)动态主机控制协议,用于集中、动态给客户分配IP地址TFTP:(trivial file transfer protocol),一种开销很小的文件传输协议,语法类似ftp,因简单、高效,常用于网络设备的os和配置更新
PXE Client Api(架构)

上图说明: 当BIOS把PXE Client载入记忆体,此时便具有DHCP Client及TFTP Client的能力。
PXE Client具备DHCP Client能力,可以透过DHCP Server来取得IP位址。PXE Client具备TFTP Client能力”,可通过TFTP来下载kernel image等文件。
PXE启动流程图(pxe boot)


上图启动流程说明如下:1.PXE Client 向 UDP 67端口 广播 DHCPDDISCOVER 消息.2.DHCP SERVER 或者 DHCP Proxy 收到广播消息后,发送DHCPOFFER(包含ip地址)消息 到 PXE Client的 68 端口.3.PXE Client 发送 DHCPREQUEST 消息到 DHCP SERVER ,获取启动文件(boot file name).4.DHCP SERVER 发送DHCPACK(包含Network Bootstrap Program file name)消息 到PXE Client.5.PXE Client 向 Boot Server 获取 NBP(Network Bootstrap Program) 文件.6.PXE Client 从TFTP SERVER 下载 NBP,然后在客户端执行NBP文件注意: 在NBP执行初始化后,NBP会按照自己默认的方式从TFTP SERVER中下载其他所需的配置文件.这个时候 PXE 启动流程已经完成了,剩下的工作都是有NBP来执行完成的.
例如: pxelinux.0(NBP) 他会下载 default 配置文件,来显示菜单,根据需要启动不同的kernel image.如果是RIS(window安装)的NBP,会启动 Windows boot loader 来执行安装部署widows任务安装前关闭selinux及配置好iptables规则,详细过程此处不再给出

1.PXE BOOT Server配置过程[root@node1 ~]# yum install tfpt tftp-server dhcp vsftpd syslinux #安装所需的软件包
[root@node1 ~]# mkdir /var/ftp/pub/centos-6.5-x86_64 -pv
[root@node1 ~]# mount -r /dev/cdrom /var/ftp/pub/centos-6.5x86_64/
[root@node1 centos-6.5-x86_64]# ls
CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6
EFI Packages RPM-GPG-KEY-CentOS-Security-6
EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6
GPL repodata TRANS.TBL
images RPM-GPG-KEY-CentOS-6
2.配置DHCP服务:
在PXE引导过程中,PXE Client通过DHCP Server获取ip地址,NBP文件名称,然后从TFTP SERVER下载NBP文件并在客户端执行,从而启动计算机[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[root@node1 ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option domain-name-servers 192.168.1.10;
default-lease-time 43200;
max-lease-time 86200;
# No service will be given on thissubnet, but declaring it helps the
# DHCP server to understand the network topology.
#自定义一个subnet
subnet 192.168.1.0netmask 255.255.255.0{
range 192.168.1.11 192.168.1.100;
option routers 192.168.1.10;
next-server 192.168.1.10;#TFTP Server的ip地址
filename="pxelinux.0";#bootstrap 文件(NBP)
}
注意:在 /etc/dhcpd.conf 配置文件中 filename "pxelinux.0"; 文件目录是相对于 tftp 的根目录(默认是 tftpboot),所以文件的相对路径就是: tftpboot/pxelinux.0";当然也可以指定为其它的路径.重启dhcpd服务[root@node1 ~]# service dhcpd restart
Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]
[root@node1 ~]# ss -uanlp | grep dhcpd
UNCONN 0 0 *:67 *:* users:(("dhcpd",4883,7))
3.配置tftp服务器
[root@node1 xinetd.d]# chkconfig tftp on
[root@node1 xinetd.d]# service xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
[root@node1 xinetd.d]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@node1 ~]# ss -uanlp | grep xinetd
UNCONN 0 0 *:69 *:* users:(("xinetd",5007,5))
UNCONN 0 0 *:69 *:* users:(("xinetd",5000,5))
准备引导文件:
[root@node1 ~]# cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/
[root@node1 ~]# cp /var/ftp/pub/centos-6.5-x86_64/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
[root@node1 ~]# ls /var/lib/tftpboot/
boot.msg pxelinux.0 splash.jpg vesamenu.c32
[root@node1 ~]# cp /var/ftp/pub/centos-7-x86_64/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@node1 ~]# ls /var/lib/tftpboot/
boot.msg initrd.img pxelinux.0 splash.jpg vesamenu.c32 vmlinuz
[root@node1 tftpboot]# mkdir pxelinux.cfg
[root@node1 tftpboot]# cd pxelinux.cfg/
[root@node1 pxelinux.cfg]# cp /var/ftp/pub/centos-6.5-x86_64/isolinux/isolinux.cfg default
[root@node1 pxelinux.cfg]# chmod +w default
[root@node1 pxelinux.cfg]# mkdir /var/ftp/pub/kickstart/
[root@node1 pxelinux.cfg]# vim default
menu background splash.jpg
menu title Welcome to CentOS 6.5 from PXE!
labellinux
menu label^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.1.10/pub/kickstart/centos6.cfg #此处路径是相对路径
4.安装kickstart,配置cfg文件
[root@node1 ~]# yum -y install system-config-kickstart
[root@node1 ~]#system-config-kickstart






所有设置完成后将文件保存到指定目录,名称跟前面/var/lib/tftpboot/pxelinux.cfg/default中ks路径保持一致,名字为centos6.5.cfg,添加分区信息,在以上步骤中,有时选择软件时会出现没有安装包的情况,一定要提前下载并解压好操作系统的镜像文件,另外,在cfg文件生成后可以手工配置,但要注意磁盘分区时最好图形配置,手工配置会出现一些问题,导致不能安装,注意FTP服务器最好配置为允许匿名登录,若有账户密码,在以上配置过程中添加即可,以下给出本人cfg文件:
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.1.10/pub/centos-6.5-x86_64"
# Root password
rootpw --iscrypted $1$Lk5nHdlh$oRSE67690ang4GObxj9dm0
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all
%packages
@basic-desktop
@chinese-support
@debugging
@desktop-platform
@guest-agents
@ha
@ha-management
@input-methods
@legacy-x
@load-balancer
@mysql
@mysql-client
@network-server
@network-tools
@nfs-file-server
@remote-desktop-clients
@resilient-storage
@storage-server
@virtualization
@virtualization-client
@virtualization-platform
@virtualization-tools
@x11
%end

[root@node1 ~]# service vsftpd start
整个server端配置完毕,可启动客户机进行安装.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息