PXE简介:
PXE是Preboot Execution Environment的缩写,字面上的意思是开机前的执行环境。
要达成PXE必须要有两个环节:
(1)一个是客户端的网卡必须要支持PXE用户端功能,并且开机时选择从网卡启动,这样系统才会以网卡进入PXE客户端的程序;
(2)一个是PXE服务器必须要提供至少含有DHCP以及TFTP的服务!
且其中:
· DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;
· TFTP则提供客户端的boot loader及kernel file下载路径。
还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务。
环境:
VMware两台虚拟主机
一台DHCP,HTTPD,TFTP服务器,一台测试机
关闭仅主机的vmware中dhcp服务
步骤:
1.安装所需服务
yum install httpd tftp-server dhcp syslinux system-config-kickstart
systemctl start httpd tftp
tftp启动可能会报错,查看tftp 69端口存在即可
2.准备yum源
mkdir /var/www/html/centos/7/os/x86_64 -pv #把ISO镜像文件挂载到http目录下
mount /dev/sr0 /var/www/html/centos/7/os/x86_64
3 生成ks文件
system-config-kickstart #需要桌面组件
按照自己需要生成kickstart文件
mkdir /var/www/html/ksdir/ 创建kickstart文件目录
ls /var/www/html/ksdir/
ks7_mini.cfg
#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
url --url=http://172.25.0.210/centos/7/os/x86_64/ #指定安装方式及此文件路径
# Use text install
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
selinux --disabled
firewall --disabled
reboot
# Network information
network --bootproto=dhcp --device=eno16777736 --onboot=off --ipv6=auto
network --hostname=localhost.localhost
# Root password
rootpw --iscrypted $6$rFE5ahzTuBX6.Pha$mUAp2FBj/qYgNgY6v5EdnCBmBAUkT7cboSIC8azwZr4uKG5RFkvi.4ntmHm/cU/37lM77w7jLoigA61sBajMX.
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all
zerombr
%packages
@core
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
~
4 配置dhcp服务
#拷贝模板修改
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
option domain-name "xxx.com"; #指定主机域名
option domain-name-servers 114.114.114.114, 180.76.76.76; #配置主机DNS
default-lease-time 86400; #设置DHCPIP租期
max-lease-time 864000;
subnet 172.25.0.0 netmask 255.255.255.0 { #指定DHCP IP网段、子网
range 172.25.0.220 172.25.0.230; #可以分配的IP地址范围
option routers 172.25.0.1; #指定路由
next-server 172.25.0.210; #下一个文件服务器
filename "pxelinux.0"; #指定预启动引导文件
}
systemctl start dhcpd
5 准备预启动相关的文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #从syslinux中拷贝所需文件
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/centos7
cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /var/www/html/centos/7/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@centos7 tftpboot]#tree /var/lib/tftpboot/ #tftp路径下的文件
/var/lib/tftpboot/
├── centos6
│ ├── initrd.img
│ └── vmlinuz
├── centos7
│ ├── initrd.img
│ └── vmlinuz
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└── default
3 directories, 7 files
6 准备启动菜单
vim /var/lib/tftpboot/pxelinux.cfg/default #编辑安装界面菜单
default menu.c32
timeout 600
menu title CentOS Auto Install
label mini7
menu label Install CentOS ^Mini 7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://172.25.0.210/ksdir/ks7_mini.cfg #指定ks应答文件路径
label local
menu default #菜单默认本地启动,需手动选择安装Centos7
menu label Boot from ^local drive
localboot 0xffff
7 新建虚拟机启动
选择第一个,会自动化按照之前配置文件按照系统