预启动执行环境,在操作系统之前运行
可用于远程安装,构建无盘工作站
运行DHCP服务,用来分配地址,定位引导程序
引导程序:微代码,存放在TFTP服务器中
运行TFTP服务器,提供引导程序下载
TFTP服务器时UDP协议,端口号69
镜像文件存放在:vsftpd,TCP协议,端口号20,21
网卡支持PXE协议
主板支持网络启动
准备centos 7 安装源(yum仓库)
[root@localhost ~]#yum -y install vsftpd
[root@localhost ~]#mkdir /var/ftp/centos7
[root@localhost ~]#cp -rf /media/cdrom/* /var/ftp/cdentos7/
[root@localhost ~]#systemctl start vsftpd
启动TFTP服务
安装tftp-server软件包,启用tftp服务
配置文件位于/etc/xinetd.d/tftp
tftp 站点 /var/lib/tftpboot
[root@localhost ~]#yum -y install tftp-server
[root@localhost ~]#vi /etc/xinetd.d/tftp
disable = no '开启tftp服务'
[root@localhost ~]#systemctl start tftp
[root@localhost ~]#systemctl enable tftp
提供linux内核,pxe引导程序
[root@localhost ~]# cd /media/cdrom/images/pxeboot '位于系统镜像文件夹images/pxeboot下'
[root@localhost ~]# cp vmlinuz initrd.img /var/lib/tftpboot
[root@localhost ~]yum -y install syslinux
[root@localhost ~]cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
启动DHCP服务,用来分配地址,指导引导程序位置
[root@localhost ~]#yum install dhcp -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.30;
option routers 192.168.100.100;
option domain-name-servers 6.6.6.6;
next-server 192.168.100.100; '指定TFTP服务器地址'
filename "pxelinux.0"; 'filename:指定要下载的引导程序文件'
}
[root@localhost ~]#systemctl start dhcpd
[root@localhost ~]#systemctl enable dhcpd
配置启动菜单
[root@server tftpboot]# cd /var/lib/tftpboot
[root@server tftpboot]# mkdir pxelinux.cfg '创建pxelinux配置文件'
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# vim default '创建默认配置文件'
[root@server pxelinux.cfg]# vim 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
1.设置双网卡,
2.设置DHCP,用来自动获取IP地址,引导定位TFTP位置
next-server TFTP IP
filename “pxelinux.0”
1.安装syslinux(包含pxelinux.0)并设置,引导程序
2.压缩内核 vmlinuz (在iso镜像文件中获取)
3.初始化文件 initrd.img (iso镜像文件中获取)
4.默认配置文件 default (自建三个模式,默认时auto,指引FTP镜像系统文件位置)
总结:
DHCP 让客户端获取IP地址,能主动联网PXE服务器 配置中指向TFTP
TFTP 简单文件系统 UDP 69 端口 快速加载引导程序,引导程序的容量小,默认配置文件指向FTP镜像位置
FTP 文件系统 TCP ,21连接服务,20传输数据,系统镜像存放
TFTP 四大文件
default 需要先创建pxelinux.cfg目录,引导配置文件默认被加载
vmlinuz 压缩内核 在default 中被定义
initrd.img 初始化镜像文件,在default被定义第二个加载
pxelinux.0 引导程序 需要安装syslinux包才会有,在dhcp配置中定义
为客户机安装系统
调整BIOS设置,以便从网络引导
自动获取IP地址,并指定centos7安装源
其余过程与本地安装相同
环境
使用VMware软件中centos 7系统
打开一台centos 7
'第一步,在服务器设置双网卡'
在centos 7添加一个网络适配器,并设置为仅主机模式。 '用来装机,做服务器的网卡'
原本的网络适配器保持NAT模式不变。 '用来安装yum包'
两个网卡可以不在同一网段,正常只用一个仅主机模式网卡即可,此时是为了yum安装,多用一块vm8网卡
'第二步,设置添加的网卡IP地址,关闭防火墙'
[root@server lpf]# vim /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
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.100
PREFIX=24
注意双网卡36的uuid要删掉
[root@server lpf]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
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=ens33
UUID=e927c915-1f32-4f8e-b4d4-77c7a3ed4823
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.110
PREFIX=24
GATEWAY=192.168.100.2
DNS1=8.8.8.8
'第三步,设置DHCP服务'
[root@localhost ~]#yum install dhcp* -y
[root@server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@server ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.100 192.168.100.200;
option domain-name-servers 8.8.8.8;
option routers 192.168.100.100;
next-server 192.168.100.100; '指定TFTP服务器地址'
filename "pxelinux.0"; 'filename:指定要下载的引导程序文件'
}
'第四步:设置TFTP--配置安装tftp-server'
[root@server ~]# yum install -y syslinux
[root@server ~]# yum install tftp-server -y
[root@server ~]# vim /etc/xinetd.d/tftp
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
}
'第五步:安装并设置syslinux'
[root@server ~]# 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@server ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@server ~]# vim /usr/sbin/in.tftpd
[root@server ~]# vim /etc/xinetd.d/tftp
[root@server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# ll
总用量 28
-rw-r--r--. 1 root root 26759 7月 13 17:41 pxelinux.0
[root@server tftpboot]# yum install -y vsftpd
'第六步,在镜像中复制出文件'
[root@server yum.repos.d]# cd /var/ftp
[root@server ftp]# ls
pub
[root@server ftp]# mkdir centos7
[root@server ftp]# mount /dev/sr0 /var/ftp/centos7
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server ftp]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 295G 4.2G 291G 2% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 174M 841M 18% /boot
tmpfs tmpfs 378M 4.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 36K 378M 1% /run/user/1000
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /var/ftp/centos7
'第六步,在镜像中复制出文件'
[root@server ftp]# cd centos7/images
[root@server images]# ll
总用量 8707
-rw-r--r--. 1 root root 8912896 11月 26 2018 efiboot.img
drwxr-xr-x. 2 root root 2048 11月 26 2018 pxeboot
-r--r--r--. 1 root root 442 11月 26 2018 TRANS.TBL
[root@server images]# cd pxeboot
[root@server pxeboot]# pwd
/var/ftp/centos7/images/pxeboot
[root@server pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@server pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@server pxeboot]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
'第七步,设置默认配置文件'
[root@server tftpboot]# mkdir pxelinux.cfg '创建pxelinux配置文件'
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# vim default '创建默认配置文件'
[root@server pxelinux.cfg]# vim 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@server pxelinux.cfg]# iptables -F
[root@server pxelinux.cfg]# setenforce 0
[root@server pxelinux.cfg]# systemctl start dhcpd
[root@server pxelinux.cfg]# systemctl start tftp
[root@server pxelinux.cfg]# systemctl start vsftpd
[root@server pxelinux.cfg]# netstat -ntap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 9894/X
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 9748/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9310/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 9308/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 9706/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 12115/sshd: root@pt
tcp 0 0 192.168.100.110:22 192.168.100.1:59737 ESTABLISHED 12115/sshd: root@pt
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::6000 :::* LISTEN 9894/X
tcp6 0 0 :::21 :::* LISTEN 13253/vsftpd
tcp6 0 0 :::22 :::* LISTEN 9310/sshd
tcp6 0 0 ::1:631 :::* LISTEN 9308/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 9706/master
tcp6 0 0 ::1:6010 :::* LISTEN 12115/sshd: root@pt
[root@server pxelinux.cfg]# netstat -nuap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:5353 0.0.0.0:* 8602/avahi-daemon:
udp 0 0 192.168.122.1:53 0.0.0.0:* 9748/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 13213/dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 9748/dnsmasq
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 0.0.0.0:660 0.0.0.0:* 8542/rpcbind
udp 0 0 0.0.0.0:41765 0.0.0.0:* 8602/avahi-daemon:
udp6 0 0 :::69 :::* 1/systemd
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 :::660 :::* 8542/rpcbind
第八步,开启虚拟机,选择
kickstart无人值守技术
应答文件的来源
编辑CentOS7 系统中现有的应答文件
/root/anaconda-ks.cfg
使用system-config-kickstart 工具创建新的应答文件
需要安装system-config-kickstart软件包
[root@localhost ~]# yum install system-config-kickstart -y
'安装kickstart工具'
这一步要选择第一个安装引导程序
[root@server ~]# cd /var/ftp
[root@server ftp]# ls
centos7 ks.cfg pub
[root@server ftp]# cd
[root@server ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 下载 公共 图片 文档 桌面 模板 视频 音乐
[root@server ~]# vim anaconda-ks.cfg
...'复制以下内容'
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
%end
[root@server ~]# vim /var/ftp/ks.cfg '复制的粘贴到此'
[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# ls
default
[root@server pxelinux.cfg]# vim default
..
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cf
g '在原本此段内容后面输入ks=ftp://192.168.100.100/ks.cf
g'
[root@server pxelinux.cfg]# systemctl restart dhcpd '重启服务'
[root@server pxelinux.cfg]# systemctl restart tftp
[root@server pxelinux.cfg]# systemctl restart vsftpd