一、前言:
通常为计算机安装操作系统的方式主要是,光盘安装和U盘安装;在企业生产环境中,会需要对多台客户机或服务器安装Linux操作系统,如果还用常规的方法去安装,费时又费力;PXE批量部署系统即可高效完成此类工作。
二、原理:
使用光盘(镜像)安装Linux操作系统过程:POST(加电自检)-->引导序列(通过BISO发现引导CD-ROM或U盘)--Bootloader(kernel+ramdisk)-->anaconda(安装程序)
1、自动化部署服务器所需环境:
PXE:Preboot eXecute Environment,预启动执行环境;网卡支持PXE Bootrom;
DHCP:Dynamic HostConfiguration Protocol,动态主机设置协议;为客户端提供IP地址;
TFTP:Trivial File Transfer Protocol,简单文件传输协议;为客户端提供启动引导文件和内核引导文件;
xinetd:超级守护进程,用来唤醒tftp服务;
HTTP:HyperText Transfer Protocol,超文本传输协议;为客户端提供Kickstart文件及安装源;
kickstart:系统自动化安装脚本;
syslinux:提供pxelinux.0文件,用于启动引导,相当于bootloader;
安装引导文件:在系统安装光盘中;
操作系统光盘或镜像:安装源;
2、实现过程:
PXE采用C/S服务架构:
1)、Client:客户端加电自检通过BIOS发现支持PXE的网卡,然后PXE Bootrom会向网络中发送广播请求,向网络中的DHCP服务器请求IP地址;
2)、Server:服务器收到广播,会为客户端提供IP地址和TFTP服务器的IP地址,TFTP中包含PXE Bootrom引导程序所需的文件;
3)、Client:客户端会向TFTP服务器发送下载请求,下载引导程序文件;
4)、Server:TFTP服务器接收到请求,传输引导程序文件;
三、实验过程:
1、实验前提:
1)、客户端:
网卡支持PXE;
2)、服务器:
配置静态IP地址;
# vim/etc/sysconfig/network-scripts/ifcfg-eth :修改网络配置文件; # service networkrestart :重新启动网络服务;
关闭防火墙和SELinux;
# chkconfig iptables off :防火墙设置开机关闭; # service iptables stop :光比防火墙服务; # setenforce 0 :关闭SELinux; # vim /etc/selinux/conf :修改SELinux配置文件;
配置好YUM源,并安装所需软件包:dhcp,tftp-server,xinted,httpd,system-config-kickstart,syslinux;
# mount -o loop /mnt/hgfs/lin/CentOS-6.6-x86_64-bin-DVD1.iso/media/cdrom/ :挂载光盘镜像; # vim /etc/yum.repos.d/centos.repo :配置YUM仓库位置; # yum install dhcp tftp-server xinted httpd system-config-kickstartsyslinux –y :安装相关服务软件包;
2、DHCP服务配置:
# /etc/dhcp/dhcpd.conf :主配置文件; # /usr/share/doc/dhcp-**/dhcpd.conf.sample :可参照次主配置文件模板进行修改配置;
# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup :备份原配置文件; # cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample/etc/dhcp/dhcpd.conf :模板覆盖原配置文件; # vim /etc/dhcp/dhcpd.conf :修改配置文件;
全局配置:
>option domain-name "chencer.org"; :配置域名 >option domain-name-servers 192.168.1.2; :配置DNS服务器地址 >default-lease-time 3600; :默认租约时间,单位为秒; >max-lease-time 86400; :最大租约时间,单位为秒;
地址池配置:
>subnet 192.168.1.0 netmask255.255.255.0 { > range 192.168.1.1 192.168.1.100; :配置地址池范围; > option routers 192.168.1.1; :网关配置; > next-server 192.168.1.2; :配置tftp服务器地址; > filename "pxelinux.0"; :配置PXE引导文件 >}
# servicedhcpd configtest :编辑完成,保存退出,检查配置文件语法; # chkconfig dhcpd on :设置开机启动; # service dhcpd {start|restart} :启动或重启服务; # ss –unl :查看监听端口;dhcpd监听在UDP 67号端口;
3、TFTP服务配置:
1)、xinetd配置:
# vim /etc/xinetd.d/tftp :xinetd是tftp服务的超级守护进程,修改配置文件;
2)、为tftp服务提供引导文件:
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ :为TFTP服务器提供启动PXE的工作环境; # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}/var/lib/tftpboot/ :提供kernel和ramdisk; # cp /media/cdrom/isolinux/{boot.msg,splash.jpg,vesamenu.c32}/var/lib/tftpboot :提供安装菜单框架;
# mkdir -p /var/lib/tftpboot/pxelinux.cfg # cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default # vim /var/lib/tftpboot/pxelinux.cfg/default
# tree /var/lib/tftpboot/ :检查文件完整性;
3)、启动服务:
# chkconfig xinetd on :设置开机启动; # service xinetd {start|restart} :启动或重启xinetd服务; # ss –unl :查看监听端口;tftp监听在UDP 69号端口;
4、http服务配置:
1)、提供安装源:
# mkdir /var/www/html/centos6.6 :创建安装源目录; # mount --bind /media/cdrom/ /var/www/html/centos6.6/ :挂载镜像到安装源目录;
2)、提供kickstart文件:
# system-config-kickstart :通过图形界面工具创建kickstart文件保存于/var/www/html/ks.cfg; # vim -O /root/anaconda-ks.cfg /var/www/html/ks.cfg :可参照/root/ anaconda-ks.cfg进行修改;
添加或修改以下两行,指定安装源位置:
>url --url=http://192.168.1.2/centos6.6 >repo --name="CentOS"--baseurl=http://192.168.1.2/centos6.6 --cost=100
3)、启动服务:
# chkconfig httpd on :设置服务开机启动 # service httpd {start|restart} :启动或重启服务; # ss –tnl :httpd监听在tcp 80号端口;
四、客户端测试:
BIOS设置为网卡优先:
安装菜单界面:
正在安装: