PXE服务器特点
- 规模化:同时装配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
关于PXE网络
PXE,Pre-boot eXcution Environment
预启动执行环境,在操作系统之前运行
可用于远程安装、构建无盘工作站
服务端
运行DHCP服务,用来分配地址、定位引导程序
运行TFTP服务器,提供引导程序下载
客户端
网卡支持PXE协议
主板支持网络启动
准备工作
- 一台PXE服务器待部署
- 一台待安装虚拟机(注意:虚拟机需要至少2G以上内存)
- 关闭防火墙
- 关闭Selinux
- 安装软件(dhcp、tftp-server、httpd、syslinux(此软件包含了PXE的一些启动软件))
配置dhcp
有关dhcp服务器请参阅:
https://blog.csdn.net/hhhhhhhzp/article/details/116538941?spm=1001.2014.3001.5501
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
配置一下参数
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.100 192.168.100.120;
default-lease-time 3600;
filename "pxelinux.0"; #pxe关键引导文件
next-server 192.168.100.10; #TFTP服务器地址
}
重启dhcpd服务
配置TFTP
[root@localhost ~]# vim /etc/xinetd.d/tftp #tftp主子配置文件
将disable字段改为no表示启动该服务
service tftp
{
...
disable = no
...
}
重启tftp.socket服务
拷贝关键文件
tftp的根目录:/var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制引导文件到ftp根目录下
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/ #将菜单文件复制到tftp根目录下
[root@localhost ~]# mkdir /media/cdrom #创建光盘挂载点
[root@localhost ~]# mount /dev/sr0 /media/cdrom/ #将安装光盘挂载到刚才创建的目录
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cp /media/cdrom/isolinux/vmlinuz /var/lib/tftpboot/ #将第一个CentOS7引导文件复制到tftp根目录
[root@localhost ~]# cp /media/cdrom/isolinux/initrd.img /var/lib/tftpboot/ #将第二个CentOS7引导文件复制到tftp根目录
[root@localhost ~]# ls /var/lib/tftpboot/
initrd.img menu.c32 pxelinux.0 vmlinuz
建立default菜单文件
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/ #创建存放default文件目录
[root@localhost ~]# vim default #创建default文件
在文件中键入:
default menu.c32 #调用菜单文件
timeout 300 #超时时间
prompt 0 #固定写法
label 1 #菜单标签
menu label ^1) Install CentOS7 #菜单项
menu default #默认安装以上选项
kernel vmlinuz #调用内核文件
append initrd=initrd.img method=http://192.168.100.10/CentOS7 ks=http://192.168.100.10/ks.cfg
#initrd表示调用引导文件 method表示安装介质位置 ks表示安装脚本位置
配置web服务器
进入/var/www/html(web文件目录),创建CentOS7目录待挂载
[root@localhost ~]# mkdir /var/www/html/CentOS7
[root@localhost ~]# umount /dev/sr0 将光盘取消挂载
[root@localhost ~]# mount /dev/sr0 /var/www/html/CentOS7/ #将光盘重新挂载到CentOS目录下
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# systemctl start httpd #开启httpd服务
保证可以访问到光盘,利用本机测试,由于我使用的是NAT模式的网络
编辑ks.cfg文件
[root@localhost ~]# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg #将root下的ks文件拷贝到web数据目录中
[root@localhost ~]# chmod +r /var/www/html/ks.cfg #给文件添加可读权限
利用浏览器确认可以查看到文件内容
如图所示表示成功
[root@localhost ~]# vim /var/www/html/ks.cfg #编辑文件内容
需要更改以下配置(参照)
auth --enableshadow --passalgo=sha512
#cdrom #将此行注释
url --url http://192.168.100.10/CentOS7
#graphical #将此行注释
text
firstboot --enable
ignoredisk --only-use=sda
keyboard --vckeymap=cn --xlayouts='cn'
lang zh_CN.UTF-8
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain
rootpw --iscrypted $6$x9ISI2qOZBOKqfGj$xFwVPCnhtiTXSR3tAQwfKtdde6.0aojMe1uCQHImH/jCCsnAnASWzuksXmXGqjHTdU1Mxsjhqr1rDhhl9lBIb/
services --enabled="chronyd"
timezone America/New_York --isUtc
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
clearpart --all --initlabel
%packages
@^minimal
@core
@development
chrony
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
reboot #在最后一行加入reboot,不然会让手动重启
重启所有服务,使配置生效
[root@localhost ~]# systemctl restart tftp.socket httpd.service dhcpd.service
新建虚拟机开机验证
等待一段时间之后会自动重启进入登录界面
nice