目录
一.PXE概述
1.PXE
PXE 的全称是 preboot execute environment
PXE是用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加
载安装文件或者整个操作系统。
2.PXE批量部署的优点
- 规模化:同时装配多台服务器
- 自动化:安装系统,配置各种服务
- 远程实现:不需要光盘,U盘等安装介质
3.搭建网络体系前提条件
- 客户机
- 客户机的网卡要支持PXE协议(集成BOOTROM芯片)。大多数服务器都支持。
- 主板支持网络引导。有一些需在BIOS设置中允许从 Network 或 LAN 启动即可。
- 服务端
- 要DHCP 服务器 :为客户机自动分配地址、指定引导文件位置。
- 服务器要开启 TFTP服务(简单文件传输协议)用来提供系统内核和引导镜像文件的下载。
二.搭建详情
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能 够向客户机裸机发
送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
1.配置网卡信息
[root@localhost network-scripts]# vim ifcfg-ens37
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-ib ifdown-ppp ifdown-tunnel ifup-ib ifup-plusb ifup-Team network-functions
ifcfg-lo ifdown-ippp ifdown-routes ifup ifup-ippp ifup-post ifup-TeamPort network-functions-ipv6
ifdown ifdown-ipv6 ifdown-sit ifup-aliases ifup-ipv6 ifup-ppp ifup-tunnel
ifdown-bnep ifdown-isdn ifdown-Team ifup-bnep ifup-isdn ifup-routes ifup-wireless
ifdown-eth ifdown-post ifdown-TeamPort ifup-eth ifup-plip ifup-sit init.ipv6-global
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# vim ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=8.8.8.8
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.282 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=64 time=0.206 ms
2.安装并启用DHCP服务
[root@localhost dhcp]# vim dhcpd.conf
[root@localhost network-scripts]# yum install -y dhcp*
[root@localhost network-scripts]# rpm -qc dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@localhost network-scripts]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
[root@localhost network-scripts]# cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost network-scripts]# cd /etc/dhcp/
[root@localhost dhcp]# ls
dhclient.d dhcpd6.conf scripts
dhclient-exit-hooks.d dhcpd.conf
[root@localhost dhcp]# vim dhcpd.conf
27 subnet 192.168.100.0 netmask 255.255.255.0 {
28 range 192.168.100.10 192.168.100.20;
29 option routers 192.168.100.1;
30 next-server 192.168.100.100;
31 filename "pxelinux.0";
32 }
3.安装并启动TFTP服务
[root@localhost dhcp]# vim /etc/xinetd.d/tftp
[root@localhost dhcp]# yum install -y tftp-server.x86_64
[root@localhost dhcp]# rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
[root@localhost dhcp]# vim /etc/xinetd.d/tftp
6 service tftp
7 {
8 socket_type = dgram
9 protocol = udp
10 wait = yes
11 user = root
12 server = /usr/sbin/in.tftpd
13 server_args = -s /var/lib/tftpboot
14 disable = no
15 per_source = 11
4.准备PXE引导程序
[root@localhost dhcp]# rpm -ql syslinux |grep 0
[root@localhost dhcp]# yum install -y syslinux
[root@localhost dhcp]# rpm -ql syslinux |grep 0
...
/usr/share/syslinux/pxelinux.0
[root@localhost dhcp]# rpm -ql tftp-server
/etc/xinetd.d/tftp
...
/var/lib/tftpboot ##所有的配置文件所在的站点
[root@localhost dhcp]# cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost dhcp]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
pxelinux.0
5.安装FTP服务
[root@localhost pxelinux.cfg]# vim default
[root@localhost dhcp]# yum install -y vsftpd
[root@localhost dhcp]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/sr0 centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# cd centos7/
[root@localhost centos7]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img pxeboot TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cp -p initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
1 default auto
2
3 prompt 1
4
5 label auto
6 kernel vmlinuz
7 append initrd=initrd.img method=ftp://192.168.100.100/centos7
8
9 label text
10 kernel vmlinuz
11 append text initrd=initrd.img method=ftp://192.168.100.100/centos7
12
13 label rescue
14 kernel vmlinuz
15 append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost pxelinux.cfg]# systemctl start dhcpd
[root@localhost pxelinux.cfg]# systemctl start vsftpd
[root@localhost pxelinux.cfg]# systemctl start tftp
[root@localhost pxelinux.cfg]# systemctl stop firewalld.service
[root@localhost pxelinux.cfg]# setenforce 0
新建虚拟机
半自动化安装系统
三.kickstart 无人值守安装
1.准备安装应答文件
[root@localhost tftpboot]# yum install system-config-kickstart.noarch
2.打开“Kickstart 配置程序”窗口
3.配置kickstart选项
4.配置需要安装的软件包
[root@localhost ~]# vim anaconda-ks.cfg
[root@localhost ftp]# vim ks.cfg
实现桌面安装
5.编辑引导菜单文件 default,添加 ks 引导参数
[root@localhost pxelinux.cfg]# vim default
此时就可以全自动化安装系统了