背景:
在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量,但是批量自动化安装服务器的基础是网络启动服务器(bootserver),下面就是网络启动服务器的安装和配置方法,供大家参考!
术语解释:
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 p_w_picpath等文件。
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 p_w_picpath.
如果是RIS(window安装)的NBP,会启动 Windows boot loader 来执行安装部署widows任务
PXE BOOT Server配置过程
[root@node1 ~]# yum install tfpt tftp-server dhcp vsftpd syslinux #安装所需的软件包[root@node1 ~]# mkdir /var/ftp/pub/centos-6.4-x86_64 -pv[root@node1 ~]# mount -r /dev/cdrom /var/ftp/pub/centos-6.4-x86_64/[root@node1 centos-6.4-x86_64]# lsCentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6EFI Packages RPM-GPG-KEY-CentOS-Security-6EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6GPL repodata TRANS.TBLp_w_picpaths RPM-GPG-KEY-CentOS-6
配置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.confoption domain-name "magedu.com";option domain-name-servers 172.16.0.1;default-lease-time 43200;max-lease-time 86200;# No service will be given on this subnet, but declaring it helps the# DHCP server to understand the network topology.#自定义一个subnetsubnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.11 192.168.10.100; option routers 192.168.10.10; next-server 192.168.10.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 restartShutting down dhcpd: [ OK ]Starting dhcpd: [ OK ][root@node1 ~]# ss -uanlp | grep dhcpdUNCONN 0 0 *:67 *:* users:(("dhcpd",4883,7))
配置tftp服务器
[root@node1 xinetd.d]# chkconfig tftp on[root@node1 xinetd.d]# service xinetd restartStopping xinetd: [FAILED]Starting xinetd: [ OK ][root@node1 xinetd.d]# service xinetd restartStopping xinetd: [ OK ]Starting xinetd: [ OK ][root@node1 ~]# ss -uanlp | grep xinetdUNCONN 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.4-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-6.4-x86_64/p_w_picpaths/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.4-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 defaultmenu background splash.jpgmenu title Welcome to CentOS 6.4 from PXE!label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=ftp://192.168.10.10/pub/kickstart/centos6.cfg[root@node1 ~]# yum -y install system-config-kickstart[root@node1 ~]#system-config-kickstart
1.选择时区,设置root密码
2、设置安装源(软件包位置),选择协议
3.选择安装软件
所有设置完成后将文件保存到指定目录,名称跟前面/var/lib/tftpboot/pxelinux.cfg/default中ks路径保持,名字为centos6.cfg,添加分区信息,进行测试:
[root@node1 ~]# vim centos6.cfg# Partition clearing informationclearpart --all --initlabel#添加分区信息part /boot --fstype=ext4 --size=200part pv.008002 --size=61440volgroup vg0 --pesize=8192 pv.008002logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480logvol swap --name=swap --vgname=vg0 --size=2048logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480[root@node1 ~]# cp centos6.cfg /var/ftp/pub/kickstart/[root@node1 ~]# service vsftpd start
测试:
软件安装过程
安装后启动登录,操作完成!