PXE无人值守装机

实验环境准备

  1. 新建Centos7 pxe : 192.168.88.10

  1. 新建若干台预安装的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

8.启动预安装的虚拟机,即会自动执行安装

猜你喜欢

转载自blog.csdn.net/ysy910203/article/details/128982098