准备一台已经安装好系统的虚拟机,我用的是CentOS Linux release 7.5.1804 (Core)的系统,ip地址:
这里我们给他两块网卡一块仅主机模式,一块桥接模式:
仅主机IP地址:172.16.75.2 桥接模式找到网卡设置,直接选ipv4里的自动,然后应用就行,这样虚拟机也能上网了;

接下来我们需要安装一些必备的组件:

[root@2 ~]# yum -y install dhcp tftp-server tftp syslinux httpd //dhcp能够帮助自动分配IP地址,指定引导文件位置;tftp提供引导文件下载的功能;syslinux提供像pxelinux.0,chain.c32,menu.c32等等的一些文件;httpd就不用说了吧,基于网络安装得嘛;

安装完成之后进行设置:
[root@2 ~]# vim /etc/dhcp/dhcpd.conf
max-lease-time 7200; #最大租赁时间;
default-lease-time 3600; #默认租赁时间;
subnet 172.16.0.0 netmask 255.255.0.0 {
option routers 172.16.75.2; #选项路由,这里我们指向本机即可;
option subnet-mask 255.255.0.0;
option domain-name-servers 172.16.75.2;
option domain-name "wzc.com";
range dynamic-bootp 172.16.100.100 172.16.100.150; #所要配置主机ip地址范围;
next-server 172.16.75.2; #指定tftp服务器地址;
filename "pxelinux.0"; #通过那个文件来进行引导;
}
添加上面的内容后保存退出即可;

开启服务:
[root@2 ~]# systemctl start dhcpd
[root@2 ~]# systemctl start tftp
[root@2 ~]# setenforce 0
[root@2 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@2 ~]# systemctl stop firewalld
[root@2 ~]# iptables -F
[root@2 ~]# systemctl start httpd
记住要在你的客户机C:\Windows\System32\drivers\hosts中保存本虚拟机的ip地址:172.16.75.2

继续准备工作:
[root@2 ~]# cp /usr/share/syslinux/{pxelinux.0,chain.c32,menu.c32,memdisk,mboot.c32} /var/lib/tftpboot/

如果光盘已经挂载了,直接去复制相应的文件即可,如果没挂载,我们就创建个目录挂载一下光盘,再进行文件的复制即可:
[root@2 ~]# mkdir /mnt/cdrom
[root@2 ~]# mount -r /dev/sr0 /mnt/cdrom
[root@2 ~]# cp /mnt/cdrom/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/

[root@2 ~]# cd /var/lib/tftpboot/
[root@2 tftpboot]# mkdir pxelinux.cfg
[root@2 tftpboot]# vim pxelinux.cfg/default

default menu.c32
timeout 30
MENU TITLE CentOS-7.5-1804 PXE install menu
LABEL linux
MENU LABEL INSTALL CentOS 7.5 1804 for X86_64
KERNEL vmlinuz
APPEND initrd=initrd.img install.repo=http://172.16.75.2/centos7
LABEL linux autoinstall
MENU LABEL Auto Install CentOS 7.5 1804 for X86_64
MENU DEFAULT
KERNEL vmlinuz
APPEND initrd=initrd.img install.repo=http://172.16.75.2/centos7 ks=http://172.16.75.2/kickstarts/centos7-ks.cfg

这里就是一些标签和地址指向,按照我这个写就行,记住地址和系统版本改成你自己的,写完保存即可;

准备工作继续:
[root@2 tftpboot]# cd
[root@2 ~]# mkdir -pv /var/www/html/{centos7,kickstarts}
mkdir: 已创建目录 "/var/www/html/centos7"
mkdir: 已创建目录 "/var/www/html/kickstarts"
[root@2 ~]# mount --bind /mnt/cdrom /var/www/html/centos7 //mount --bind:将某个已经挂载的文件系统绑定至另一个挂载点;因为之前博主挂载了所以要用--bind选项;
[root@2 ~]# cp -a /etc/yum.repos.d/CentOS-Base.repo /var/www/html/
接下来将我们准备的centos7-common-ks.cfg放到相应的位置上就行了(用我的也行,参照你本地的anaconda-ks.cfg改一改,或者自己用Xmanger制作一个我在前面的博客中有怎样制作一个ks.cfg文件可以参照一下):
[root@2 ~]# cd /var/www/html/kickstarts/

内容如下:
#platform=x86,AMD64,Intel EM64T
#version=DEVEL

System authorization information

auth --enableshadow --passalgo=sha512

Use text install

text
firstboot --disable

Install OS instead of upgrade

install

Use network install

url --url=http://172.16.75.2/centos7

Use text install

text
install

Run the Setup Agent on first boot

firstboot --enable
#ignoredisk --only-use=sda

Keyboard layouts

keyboard --vckeymap=us --xlayouts='us'

System language

lang zh_CN.UTF-8

selinux --disabled
firewall --disabled

Network information

network --bootproto=dhcp --device=ens33 --onboot=on --noipv6

Root password

rootpw --iscrypted $1$FMv2pd1p$LEC/mDPq2IddTJ/xMswq30

System timezone

timezone Asia/Shanghai --isUtc --ntpservers=172.16.75.2
user --name=wzc --password=$6$OPyOPf8kt76W2zvt$eK5CAUiibFK78DcXpG79Y0w3lkPW63cteVAh0ms7tMQ2OL5AyZwHBZp0KdKBEF65f2aWfnt2Q64bViz1Sarpp/ --iscrypted --gecos="wzc"

X Window System configuration information

xconfig --startxonboot

System bootloader configuration

bootloader --location=mbr --boot-drive=sda

Partition clearing information

clearpart --all --initlabel --drives=sda

Disk partitioning information

part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1

%packagesbr/>@base
@corebr/>@desktop-debugging
@dial-upbr/>@directory-client
@fontsbr/>@gnome-apps
@gnome-desktopbr/>@guest-agents
@guest-desktop-agentsbr/>@input-methods
@internet-browserbr/>@java-platform
@multimediabr/>@network-file-system-client
@networkmanager-submodulesbr/>@print-client
@x11
kexec-tools

%end
%post
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -q -O /etc/yum.repos.d/CentOS-Base.repo http://172.16.72.2/CentOS-Base.repo
mkdir /mnt/cdrom

%end

因为我们在这里面规定了本机为ntp时间服务器,所以我们还要设置一下ntp:
[root@2 ~]# vim /etc/ntp.conf

[root@2 ~]# systemctl start ntpd //这样就行了,记住启动;

接下来我们需要一台没有安装操作系统白鼠机进行测试:






这里选择与你客户机相对应的线程数了解吧;

因为是安装Centos7所以至少要用2G内存,多了没事,少了会在安装的时候出现下面这样的错误:

所以要给白鼠机足够的内存;
好了,我们继续:

基本上这台白鼠就创建完成了接下来就是安装系统了:
如果上述操作都没有问题的话,打开白鼠机就自己获取IP地址等,进行自动安装系统了:



看到没1380项呢,如果你想快点安的话少装几个包修改一下ks.cfg文件就行;
这个过程可能需要等待一段时间,耐心点;
瞧我们的白鼠机系统安装完成了:

如果想要批量安装,多打开几台白鼠机就好了,不过你的内存要吃得消才行!!这玩意儿的缺点就是安装系统单一,如果想要多版本系统安装可以使用cobbler。