一、战前理论

什么是PXE?


PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术, 工作于Client/Server的网络模式, 只想hi工作站通过网络从远程服务器下载镜像, 并由此支持通过网络启动操作系统, 在启动过程中, 终端要求服务器分配IP地址, 在用TFTP(Trivial file transfer protocol)或MTFTP(Multicast Trivial File Transfer Protocol)协议卸载一个启动软件包到本机内存中执行, 这个启动软件包完成终端基本软件设置, 从而引导预先安装服务器中的操作系统. PXE可以引导多种操作系统, 如: Windows 95/98/2000/windows 2008/xp/win 7/win8;


Kickstart技术

Kickstart技术的核心是:自动应答文件(Kickstart文件),就是将本来在安装过程中需要我们手动设置的语言、密码、网络参数等通过读取读取自动应答文件实现自动设置。也就是说,我们需要事先将对操作系统的设置写入自动应答文件,开始安装操作系统时,指定安装程序读取自动应答文件实现自动安装及部署操作系统


二、安装部署

以下配置文件中的IP等内容需根据实际环境填写,不可原样复制

切勿注意内网中是否有别的DHCP服务器


1、安装服务器的IP:192.168.0.70


2、具体实现步骤如下

(1)安装DHCP服务

[[email protected] ~]# yum install -y dhcp
[[email protected] ~]# vim /etc/dhcp/dhcpd.conf
log-facility local7;
   subnet 192.168.0.0 netmask 255.255.255.0 {
       range 192.168.0.150 192.168.0.200;
       option domain-name-servers 114.114.114.114;
       option routers 192.168.0.1;
       default-lease-time 600;
       max-lease-time 7200;
       next-server 192.168.0.70;
       filename "pxelinux.0";
   }



配置说明:指定为192.168.0.0/24网络分配动态IP地址,动态地址池从192.168.0.150至192.168.0.200;客户端获取的网关地址为192.168.0.1;TFTP地址为192.168.0.70,启动文件名称为pxelinux.0


(2)安装部署TFTP服务

[[email protected] ~]# yum install  tftp-server -y
[[email protected] ~]# vim /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}



配置说明:共享路径为/var/lib/tftpboot


(3) 将客户端所需启动文件复制到TFTP服务器

[[email protected] ~]# yum install -y syslinux
[[email protected] ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
#将光盘或ISO挂载到/media中,将安装镜像中的启动镜像文件和启动配置文件复制到TFTP共享目录下
[[email protected] ~]# mount /dev/cdrom /mnt
[[email protected] ~]# cp /mnt/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
[[email protected] ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[[email protected] ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default linux
   #prompt 1
   timeout 600
   display boot.msg
   menu background splash.jpg
   menu title Welcome to CentOS 6.8!
   menu color border 0 #ffffffff #00000000
   menu color sel 7 #ffffffff #ff000000
   menu color title 0 #ffffffff #00000000
   menu color tabmsg 0 #ffffffff #00000000
   menu color unsel 0 #ffffffff #00000000
   menu color hotsel 0 #ff000000 #ffffffff
   menu color hotkey 7 #ffffffff #ff000000
   menu color scrollbar 0 #ffffffff #00000000
   label linux
     menu label ^Install or upgrade an existing system
     menu default
     kernel vmlinuz
     append initrd=initrd.img ks=nfs:192.168.0.70:/ks/ks.cfg
   label vesa
     menu label Install system with ^basic video driver
     kernel vmlinuz
     append initrd=initrd.img xdriver=vesa nomodeset
   label rescue
     menu label ^Rescue installed system
     kernel vmlinuz
     append initrd=initrd.img rescue
   label local
     menu label Boot from ^local drive
     localboot 0xffff
   label memtest86
     menu label ^Memory test
     kernel memtest
     append -
[[email protected] ~]# /etc/init.d/xinetd restart

配置说明:default指定默认引导方式,即下面的以label开头的各种引导方式;kernel指定的是系统内核文件;后面的ks参数可以指定自动应答文件的位置,本例设置为通过访问192.168.0.70的NFS共享方式读取kickstart文件。


(4)创建kickstart自动应答文件

[[email protected] ~]# mkdir /ks
[[email protected] ~]# vim /ks/ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# 禁用防火墙规则iptables
firewall --disabled
# 安装系统
install
# nfs服务器地址ip,及nfs上的系统镜像路径
nfs --server=192.168.0.70 --dir=/mnt
# Root 密码(加密的123456)
rootpw --iscrypted $1$16PXgd.m$C4vE6OJCMGfQVadgm0DSe.
# System authorization information
auth  --useshadow  --passalgo=sha512
# 使用字符界面安装
text
firstboot --disable
# 美式键盘
keyboard us
# 系统语言
lang en_US
# 关闭Selinux
selinux --disabled
# 不配置图形界面
skipx
# 安装日志记录级别为 info
logging --level=info
# 安装完成后重启
reboot
# 系统时区
timezone  Asia/Shanghai
# 网络配置:动态获取ip、网卡名称eth0,开机自动启动网络服务,不开启ipv6,主机名(自定义,可以不写,默认localdomain:localhost)
network  --bootproto=dhcp --device=eth0 --onboot=on --noipv6 --hostname=CentOS04
# 系统启动引导配置:mbr引导
bootloader --location=mbr
# 磁盘分区,zerombr:一定要有,不然安装的时候会停在格式化分区界面
zerombr
clearpart --all --initlabel
# 磁盘分区方式
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2000
part / --fstype="ext4" --grow --size=1
# 安装完成后要执行的脚本
%post
/sbin/chkconfig --level 2345 atd off
/sbin/chkconfig --level 2345 httpd off
/sbin/chkconfig --level 2345 cups off
/sbin/chkconfig --level 2345 smartd off
/sbin/chkconfig --level 2345 bluetooth off
/sbin/chkconfig --level 2345 sshd on
/sbin/chkconfig --level 2345 snmpd on
/usr/sbin/useradd tomcat
mkdir /root/.ssh/
chmod -R 600 /root/.ssh/
%end
# 自定义一些软件包,比如vim、开发工具
%packages
@additional-devel
@development
@core
vim-common
vim-enhanced
vim-minimal
wget
lrzsz
%end



(5)部署NFS服务:

[[email protected] ~]# yum install  nfs-utils rpcbind -y
[[email protected] ~]# vim /etc/exports
/ks   192.168.0.0/255.255.255.0(ro)
/mnt  192.168.0.0/255.255.255.0(ro)
[[email protected] ~]# /etc/init.d/rpcbind start; /etc/init.d/nfs start


(6)开启客户机

 对于首次安装的客户机来说,不需要进入BIOS更改启动顺序,从CD-ROM或硬盘找不到自然会从网络寻找安装源

pxe+kickstart无人值守安装