要建立 PXE网络安装环境他需PXE (Pre-boot Execution Environment,预启动执行环境),他是由Inter公司开发的网络引导技术,工作在Client/server 环境,允许客户机通过网络从远程服务器下载引导镜像并结合Kickstart来实现无人值守自动安装。
内容有些多请耐心学习。
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质
安装速度取决于网络的带宽
预启动执行环境,在操作系统之前运行
可用于远程安装,构建无盘工作站
运行DHCP服务,用来分配地址,定位引导程序
引导程序:微代码,存放在TFTP服务器中
运行TFTP服务器,提供引导程序下载
TFTP服务器时UDP协议,端口号69
镜像文件存放在:vsftpd,TCP协议,端口号20,21
网卡支持PXE协议
主板支持网络启动
获得IP后第一件事是获取引导程序,根据引导的指向安装系统
PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP
DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上)
PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件
PXE Client 取得pxelinux.0 文件后之执行该文件
根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统
进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装
实验环境:
使用VMware软件中centos 7系统
打开一台centos 7 (裸金属设置 未设置系统)
1:添加一块网卡,设置仅主机模式,主网卡设置安装服务端去连接裸机,另一块用来下载软件包
[root@shuai02 ~]# ifconfig ##查看网卡信息 ens36是新添加网卡
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 20.0.0.88 netmask 255.255.255.0 broadcast 20.0.0.255
inet6 fe80::20c:29ff:febd:4f59 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:bd:4f:59 txqueuelen 1000 (Ethernet)
RX packets 14091 bytes 7604574 (7.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2897 bytes 276248 (269.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:bd:4f:63 txqueuelen 1000 (Ethernet)
RX packets 248 bytes 74832 (73.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 94 bytes 16440 (16.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@shuai02 ~]# cd /etc/sysconfig/network-scripts/
[root@shuai02 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@shuai02 network-scripts]# vim ifcfg-ens36
##
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=staic ##这边设置为静态
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=e5c91dc3-cda7-452d-80ae-7ce1a28cfc65 ##这边的uuid记得删掉
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.138.100 ##配置IP地址
PREFIX=24 ##配置子网掩码
GATEWAY=192.168.138.0 ##配置网关
###查网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 20.0.0.42 netmask 255.255.255.0 broadcast 20.0.0.255
inet6 fe80::6515:657e:1007:656f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:bd:4f:59 txqueuelen 1000 (Ethernet)
RX packets 15709 bytes 7929074 (7.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3637 bytes 376086 (367.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:bd:4f:63 txqueuelen 1000 (Ethernet)
RX packets 882 bytes 268140 (261.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 365 bytes 61698 (60.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@shuai02 ~]# systemctl restart network ##重启网卡
[root@shuai02 ~]# setenforce 0 ##关闭安全功能
[root@shuai02 ~]# systemctl stop firewalld.service ##关闭防火墙
##设置DHCP服务
[root@shuai02 ~]# rpm -q dhcp ##查看dhcp是否安装
dhcp-4.2.5-79.el7.centos.x86_64
[root@shuai02 ~]# yum install dhcp* -y ##没有安装就用yum安装
[root@shuai02 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@shuai02 ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.138.0 netmask 255.255.255.0 {
28 range 192.168.138.20 192.168.138.100;
29 option routers 192.168.138.100;
30 option domain-name-servers 8.8.8.8;
31 next-server 192.168.138.100; ##指定TFTP服务器地址
32 filename "pxelinux.0"; ##指定要下载的引导程序文件
33 }
##设置TFTP
[root@localhost ~]# yum install tftp-server -y
完毕!
[root@localhost ~]# 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 ~]# vim /etc/xinetd.d/tftp ##编辑站点
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
安装设置syslinux
[root@localhost tftpboot]# yum install syslinux -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
。。。省略
[root@localhost tftpboot]# rpm -ql syslinux | grep pxelinux.0 ##过滤pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ ##把引导程序复制到站点
[root@localhost tftpboot]# ls ##查看列表 启动文件已经有了
pxelinux.0
[root@localhost tftpboot]# yum install vsftpd -y
[root@localhost tftpboot]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/lib/systemd/system-generators/vsftpd-generator
/usr/lib/systemd/system/vsftpd.service
/usr/lib/systemd/system/vsftpd.target
/usr/lib/systemd/system/vsftpd@.service
/usr/sbin/vsftpd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp ##站点
/var/ftp/pub
...省略
[root@localhost tftpboot]# cd /var/ftp/ ##切换到目录
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir shuaige ##创建挂载点
[root@localhost ftp]# ls
pub shuaige
###进行挂载
[root@localhost ftp]# mount /dev/sr0 /var/ftp/shuaige/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 5.0G 46G 10% /
devtmpfs devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs tmpfs 3.6G 0 3.6G 0% /dev/shm
tmpfs tmpfs 3.6G 13M 3.6G 1% /run
tmpfs tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/mapper/centos-home xfs 242G 33M 242G 1% /home
tmpfs tmpfs 726M 4.0K 726M 1% /run/user/42
tmpfs tmpfs 726M 60K 726M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /var/ftp/shuaige
[root@localhost ftp]# cd shuaige/
[root@localhost shuaige]# ls ##shuaige挂载点里已经有文件了
CentOS_BuildTag images repodata
EFI isolinux RPM-GPG-KEY-CentOS-7
EULA LiveOS RPM-GPG-KEY-CentOS-Testing-7
GPL Packages TRANS.TBL
[root@localhost shuaige]# ls images/pxeboot/
initrd.img TRANS.TBL vmlinuz
[root@localhost shuaige]# cd /images/pxeboot
##复制初始化文件initrd.img跟内核文件到tftp的站点
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@localhost pxeboot]# ls /var/lib/tftpboot
initrd.img pxelinux.0 vmlinuz
设置默认配置文件
[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
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.138.100/shuaige
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.138.100/shuaige
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.138.100/shuaige
~
[root@localhost pxelinux.cfg]# systemctl start dhcpd
[root@localhost pxelinux.cfg]# systemctl start tftp
[root@localhost pxelinux.cfg]# systemctl start vsftpd
##安装kickstart工具
[root@localhost pxelinux.cfg]# yum -y install system-config-kickstart
[root@localhost pxelinux.cfg]# cd /var/ftp
[root@localhost ftp]# ls
ks.cfg pub shuaige
[root@localhost ftp]# cd ~
[root@localhost ~]# ls
anaconda-ks.cfg 公共 视频 文档 音乐
initial-setup-ks.cfg 模板 图片 下载 桌面
[root@localhost ~]# vim anaconda-ks.cfg
[root@localhost ~]# cd /var/ftp
[root@localhost ftp]# vim ks.cfg
[root@localhost ftp]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
default
[root@localhost pxelinux.cfg]# vim default
##重启服务
[root@localhost pxelinux.cfg]# systemctl restart dhcpd
[root@localhost pxelinux.cfg]# systemctl restart tftp
[root@localhost pxelinux.cfg]# systemctl restart vsftpd
感谢观看,希望能对你有所帮助