本博主要目的为实现自定义页面自动化安装系统,基于PXE支持的网卡,目前实现环境为VMware虚拟机。所用镜像为CentOS6.9,CentOS7.3及rhel5.4。支持中小规模自动化系统统一安装。
另:如果最近常见到pxe相关博文,多半为本人的同期,还请不要在意内容的重复性。不同人眼中的pxe自动化安装,如此理解吧。
环境准备
1.网络环境:独立网络环境配备
实验中需要配置dhcp服务器,所以多余的网络会和本地dhcp服务器造成冲突。
本人的虚拟机里仅选用了一个独立网卡,同时主机配置静态IP。

2.外部环境:这里主要指防火墙和SElinux,二者会对实验造成影响,所以这里,关掉会省去很多麻烦。
3.安装必要软件包:这里syslinux包里的几个文件是必须的,dhcpd包提供dhcp服务器环境配置,tftp-server是轻文本传输用到的。httpd和ftpd选装一个就OK,主要是我们从网站或ftp服务器上获取数据使用。
yum install httpd dhcp tftp-server syslinux --skip-broken
原理及过程
从网络获取镜像文件,并独立配置安装菜单选项,网络引导。
当某机使用完成后的环境安装系统时,首先网卡启动,然后向本机,即dhcp服务器申请IP。IP获得后,tftp负责文本传输,得到网站上的pxe启动文档等信息,并根据引导文件安装系统。
这里为了简便,dhcp服务器及http网站等均由本机担任。
实现步骤
1.dhcpd文件配置
[root@CentOS7 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
#上面的第一个文件是模板,第二个是配置文件 
[root@CentOS7 ~]# vim /etc/dhcp/dhcpd.conf 
#查照此文件中的模板添加下信息,此段信息最好放在原文件中第一个subnet上方。 
subnet 192.168.23.0 netmask 255.255.255.0{ 
  range 192.168.23.10 192.168.234.100; 
  option routes 192.168.23.7; 
  next-server 192.168.23.7;        #此处为本机IP 
  filename "pxelinux.0";        #pxe启动文档 
}
2.开启服务
systemctl enable dhcpd httpd tftp 将服务设为开机启动
systemctl start dhcpd httpd tftp 启动服务
systemctl status dhcpd httpd tftp 查看服务状态
3.挂载镜像文件到http
确保三个镜像都已连接,然后按顺序挂好。不要弄错了。
cd /var/www/html/
mkdir centos{6,7}
    mkdir rhel5
echo '- - -' > /sys/class/scsi_host/host2/scan 
    mount /dev/sr0 /var/www/html/centos7
mount /dev/sr1 /var/www/html/centos6
    mount /dev/sr2 /var/www/html/rhel5
    也可以把挂载写入/etc/fstab文件。
4.编辑安装引导文件ks.cfg
可以简单编辑root家目录下的anaconda-ks.cfg,然后把三个系统的引导文件复制到本机的/var/html/www/下。并注意此文件权限为644。
centos7的.cfg文件参考如下:
[root@centos7 ~]# cat /var/www/html/ks7.cfg  
#version=DEVEL 
# System authorization information 
auth --enableshadow --passalgo=sha512 
# Use CDROM installation media 
url --url=http://192.168.23.7/centos7
# Use graphical install 
#graphical 
text 
reboot 
# Run the Setup Agent on first boot 
firstboot --enable
ignoredisk --only-use=sda 
# Keyboard layouts 
keyboard --vckeymap=us --xlayouts='us'
# System language 
lang en_US.UTF-8 
  
# Network information 
network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --activate 
network --hostname=centos7.magedu.com 
  
# Root password 
rootpw --iscrypted $6$/BVcMpadhqgy0l4J$FQ1fqYddKm1zqjxEkXn3XctFXiJ2LLWnVfRPi1u1oF6Wx5ebfKwe.8W0wHfF7oxeqDLJbkJJYTnry7W9o/6KP/
# System services 
services --disabled="chronyd"
  
# System timezone 
timezone Asia/Shanghai --isUtc --nontp 
# X Window System configuration information 
xconfig  --startxonboot 
# System bootloader configuration 
zerombr 
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda 
# Partition clearing information 
clearpart --all --initlabel --drives=sda 
# Disk partitioning information 
part / --fstype="xfs" --ondisk=sda --size=47683 
part /boot --fstype="xfs" --ondisk=sda --size=953 
part swap --fstype="swap" --ondisk=sda --size=3814 
part /app --fstype="xfs" --ondisk=sda --size=47683 
  
%packages 
@base 
@core 
@dial-up 
@fonts 
@guest-agents 
@network-file-system-client 
@networkmanager-submodules 
@x11 
  
%end 
%addon com_RedHat_kdump --disable --reserve-mb='auto'
%end 
%anaconda 
pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty 
pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty 
pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty 
%end

