实验环境准备
新建Centos7 pxe : 192.168.88.10
新建若干台预安装的Centos虚拟机: 虚拟机内存要大于2G,便于读取镜像
虚拟机网卡要设置和pxe服务器一样,便于dhcp分配ip
Centos7 pxe准备:(192.168.88.10)
1.关闭防火墙
2.关闭selinux
3.配置yum源
实验步骤
1.安装dhcp、tftp-server、http、syslinux
[root@pxe ~]# yum -y install dhcp tftp-server http syslinux
2.配置dhcp服务
# .配置dhcp服务步骤:
[root@pxe ~]# cd /etc/dhcp # cd 到dhcp目录下
[root@pxe dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
[root@pxe dhcp]# cat dhcpd.conf # 查看dhcp的配置文件,后面要修改dhcp的配置文件
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
[root@pxe dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./dhcpd.cnf # 当前目录下的dhcp配置文件不能直接修改,复制模板文件到dhcp目录下
cp:是否覆盖"./dhcpd.conf"? y
[root@pxe dhcp]# vim ./dhcpd.conf # 打开dhcp的配置文件,保留47-55行,并做修改,其他删除
47 subnet 10.5.5.0 netmask 255.255.255.224 {
48 range 10.5.5.26 10.5.5.30;
49 option domain-name-servers ns1.internal.example.org; # dns客户端
50 option domain-name "internal.example.org"; # dns域名
51 option routers 10.5.5.1; # 网关
52 option broadcast-address 10.5.5.31; # 广播地址
53 default-lease-time 600; #租期
54 max-lease-time 7200; # 最大租期
55 }
# 对上面内容进行修改,修改后的内容如下
47 subnet 192.168.88.0 netmask 255.255.255.0 { # 当前设备的网段 子网掩码
48 range 192.168.88.20 192.168.88.99; # dhcp分配的ip范围,根据需要装的主机数量自定义
53 default-lease-time 3600; # 租期3600秒 一小时
filename "pxelinux.0"; # pxe引导程序的文件,该文件是syslinux软件中自带的,默认名称
next-server 192.168.88.10; # tftp服务器的ip地址
55 }
# 将修改后的配置文件保存,并重新启动程序,
[root@pxe dhcp]# systemctl restart dhcpd
[root@pxe dhcp]# systemctl status dhcpd # 查看状态是否正常
3.配置tftp服务
# 启用tftp服务
[root@pxe dhcp]# cd /etc/xinetd.d/
[root@pxe xinetd.d]# ls
tftp
[root@pxe xinetd.d]# vim 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 # 将yes改为no,即启用服务
per_source = 11
cps = 100 2
flags = IPv4
}
# 重启服务,并查看状态
[root@pxe xinetd.d]# systemctl restart tftp.socket
[root@pxe xinetd.d]# systemctl status tftp.socket
4.拷贝pxe服务器的相关文件------>到tftp的根目录(/var/lib/tftpboot)
# pxe的引导程序都是通过调用该目录下的文件进行的
# tftp的根目录在tftp的配置文件中可以看到
[root@pxe ~]# cd /etc/xinetd.d/
[root@pxe xinetd.d]# cat tftp
....
server_args = -s /var/lib/tftpboot # tftp的根目录
...
# 进入到tftp的根目录
[root@pxe xinetd.d]# cd /var/lib/tftpboot/ # 该目录下没有任何文件
# 拷贝相关文件到tftp的根目录下
[root@pxe tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./ # 引导文件
[root@pxe tftpboot]# cp /usr/share/syslinux/menu.c32 ./ # 菜单文件
[root@pxe tftpboot]# cp /dvd/isolinux/vmlinuz ./ # 安装引导文件,在光盘镜像挂载目录下
[root@pxe tftpboot]# cp /dvd/isolinux/initrd.img ./ # 安装引导文件,在光盘镜像挂载目录下
# 在ftp根目录下创建pxelinux.cfg目录,该目录名称固定,
# 在pxelinux.cfg目录下创建文件default
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# cd pxelinux.cfg
[root@pxe pxelinux.cfg]# touch default # 安装菜单界面,在这个文件里设置
# 编辑default文件
[root@client1 pxelinux.cfg]# vim default
default menu.c32 # 调用菜单文件
timeout 300 # 超时时间
prompt 0 # 固定写法
label 1 # 定义第一个菜单
menu label ^1) Install centos7 # Install centos 可以自定义,引导菜单的提示部分
menu default # 默认菜单,安装多系统时有用,label 1 默认是第一个
kernel vmlinuz # 调用内核文件 ,光盘目录下的文件
append initrd=initrd.img method=http://192.168.88.10/centos7 ks=http://192.168.88.10/ks.cfg # 调用引导文件initrd.img , 通过网络安装 定义光盘路径 , 自动安装脚本存放的路径
5.配置web服务器
[root@pxe pxelinux.cfg]# systemctl restart httpd # 重启http服务
[root@pxe pxelinux.cfg]# cd /var/www/html # 进入http的网页目录
[root@pxe html]# mkdir centos7 # 在html目录下创建centos7目录用于存放光盘文件
# 将光盘内容放到centos7目录下,
# 在浏览器测试http://192.168.88.10/centos7,能读取到光盘内容
[root@pxe html]# mount /dev/cdrom ./centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
# 配置自动安装脚本文件ks.cfg
# 拷贝模板文件到/var/www/html/,并改名为ks.cfg
# 模板文件在/root
[root@pxe ~]# ls
anaconda-ks.cfg # 安装脚本的模板文件
[root@pxe ~]# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg # 拷贝模板文件并改名为ks.cfg
# 在浏览器测试http://192.168.88.10/ks.cfg能看到这个脚本文件
# 若访问不到,有这个Forbidden提示,是没有权限,给读权限后,再次访问正常
[root@client1 html]# chmod +r ks.cfg
[root@client1 html]# ll
总用量 10
drwxr-xr-x. 8 root root 2048 10月 30 2020 centos7
-rw-r--r--. 1 root root 1417 2月 11 06:24 ks.cfg
6.编辑ks.cfg文件
[root@pxe html]# vim ks.cfg # 修改内容如下,其他不动
....
5 # cdrom # 第5行安装介质通过光盘安装,注销掉,我们通过网络安装
url --url http://192.168.88.10/centos7 # 添加此行,光盘路径,通过网络安装
7 # graphical # 安装模式是图形化安装,太占内存,
text # 添加此行,文本安装
....
....
31 # clearpart --none --initlabel # 注销此行
clearpart --all --initlabel # 添加此行,对磁盘初始化
....
....
reboot # 添加此命令,安装完成后进行重启
7.重启所有服务
[root@pxe html]# systemctl restart httpd
[root@pxe html]# systemctl restart tftp.socket
[root@pxe html]# systemctl restart dhcpd