PXE是由Intel公式开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加重安装文件或整个操作系统。若要搭建PXE网络体系,必须满足以下几个前提条件。
PXE的部署包括:DHCP服务部署、FTP服务部署、TFTP服务部署
通过PXE技术远程安装Centos系统的方法,安装介质不在受限于光盘、移动硬盘登设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。
通过使用Kickstart工具配置安装应答文件,自动完成安装过程中的各种设置,从而无需手动干预,提高网络装机的效率,同时也可以在应答文件中通过添加%post脚本,完成安装后的各种配置操作。
准备安装应答文件:
在我们系统中,有自动创建的安装应答文件,路径在我们的/root/anaconda-ks.cfg下,anaconda-ks.cfg就是安装应答文件,我们可以修改以使用。在安装systemctl-config-kickstart工具之后,即可通过图形化界面来创建配置安装应答文件,再结合系统中自带的应答文件,完善我们自己建的应答文件,将其复制到FTP服务/var/ftp/Centos7目录下,并将路径添加到default文件中。
两台centos7,服务器使用双网卡(仅主机vmnet1和NATvmnet8),客户端vmnet1裸机
[root@localhost~]#cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens36
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=ens36 ##
UUID=cc8fe223-9f79-414d-a8a3-501fe6784038 ##删除
DEVICE=ens36 ##
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
[root@localhost ~]# systemctl restart network
PXE配置
DHCP配置
安装DHCP
修改DHCP的配置文件/etc/dhcp/dhcpd.conf,添加正常的DHCP配置项,并添加选项使之指向TFTP服务器,并指向引导文件。
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
# dhcpd.conf
#
...
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.200 192.168.100.220;
option subnet-mask 255.255.255.0;
option routers 192.168.100.100;
option domain-name "dhcp1";
option domain-name-servers 192.168.100.100;
next-server 192.168.100.100;
filename "pxelinux.0";
}
# This is a very basic subnet declaration.
...
[root@localhost ~]# systemctl start dhcpd
FTP–centos7安装源准备
安装vsftpd*相关软件
将光盘挂载到/var/ftp/Centos7,该目录需要自己创建。
[root@localhost ~]# yum -y install vsftp*
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jun 16 17:11:52 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=a843b730-1f38-4357-af35-41d22b2f7a67 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/cdrom /var/ftp/centos7 iso9660 defaults 0 0
[root@localhost ~]# mount -a
mount: /dev/sr0 写保护,将以只读方式挂载
TFTP服务配置
安装并启动TFTP服务,TFTP服务由tftp-server软件包提供,由xinetd超级服务进行管理,配置文件位于/etc/xinetd.d/tftp,修改配置文件disable=yes改成no即可,启动服务systemctl start tftp;站点目录/var/lib/tftpboot,用来存放TFTP需要的四个文件
同时需要四个文件:pxelinux.0、default、vmlinuz和initrd.img
pxelinux.0:就是配置DHCP时指向的TFTP服务器中的引导文件,是由syslinux软件包提供,安装syslinux软件包,文件位于/usr/share/syslinux/pxelinux.0路径下,复制到站点目录/var/lib/tftpboot下,用来指引接下来需要加载的配置文件
default:由pxelinux.0文件指引的需要加载配置文件,文件需要自己创建,内容需要填写,文件创建路径为/var/lib/tftpboot/pxelinux.cfg/default,文件内容为添加加载模式,加载系统内核、初始化镜像和指引系统镜像FTP服务的位置,及无人值守配置文件位置
vmlinuz和initrd.img:为系统内核、初始化镜像文件,在系统光盘中就有,我们将其复制到站点目录/var/lib/tftpboot/目录下即可
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
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
}
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost ~]# cp /var/ftp/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@localhost ~]# cp /var/ftp/centos7/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# touch /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd
防火墙配置
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]#
打开一台绑定vmnet1网卡的centos7
在下面读条的界面按esc
选择Network boot from Intel E1000,回车
开始装系统,在boot时需要我们敲回车
可以到这个界面,如果不配置无人值守,则需要手动操作了
接着刚刚的实验
[root@localhost ~]# yum -y install system-config-kickstart ##安装完这个后,开始图形化操作
[root@localhost ~]# vi anaconda-ks.cfg
复制下面这一段到ks.cfg中
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
[root@localhost ~]# vi /var/ftp/ks.cfg
在末尾粘贴刚刚复制的那一段
修改default文件
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg ##加上ks这一段
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost ~]#