LINUX——PXE高效批量网络装机

1. 概述

PXE (Preboot eXcution Environment),预启动执行环境,在操作系统之 前运行

服务端
运行DHCP服务,用来分配地址、定位引|导程序.
运行TFTP服务,提供引导程序下载

客户端
网卡支持PXE协议
主板支持网络引导

2. PXE 工作原理

1、客户端向dhcp服务器发送广播请求ip地址
2、dhcp服务器响应客户端请求,分配一个地址池中的可用地址给客户端
3.dhcp 服务器提供tftp服务器的地址,指引客户端去tftp服务器取得系统所需的引导文件
4.客户端需要系统启动的内核文件和驱动文件
5.当操作系统安装之后需要一些软件包,客户端向ftp服务器请求
6.启动系统,正常可以安装了

3.安装过程

3.1 搭建环境

服务器:
CentOS 7.6 最小化安装,两块网卡(一块NAT模式,一块仅主机模式) NAT模式因为要联网下载软件
客户机:
一台新装虚拟机(网卡和服务器绑定同一块,仅主机模式)
第二块网卡记得配好地址,并开启使用

ps:使用双网卡是因为NAT模式下需要联网下载所需服务软件包,而仅主机网卡则保证服务器与客户机在同一局域网中

服务机:

网卡配置:

[root@server ~]# cd /etc/sysconfig/network-scripts/
[root@server network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@server network-scripts]# vim ifcfg-ens37

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.52.130
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
~          

[root@server network-scripts]# systemctl restart network

客户机:
加粗样式
实验所需要的软件:

[root@server ~]# yum -y install dhcp 
[root@server ~]# yum -y install tftp-server.x86_64 
[root@server ~]# yum -y install vsftpd
[root@server ~]# yum -y install syslinux
[root@server ~]# yum -y install system-config-kickstart
[root@server ~]# systemctl stop firewalld

3.2 配置文件

3.2.1 配置dhcp服务器
[root@server ~]# vim /etc/dhcp/dhcpd.conf  
[root@server ~]# cp -p /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"yes   
[root@server ~]#vim /etc/dhcp/dhcpd.conf

subnet 192.168.52.0 netmask 255.255.255.0 {
  range 192.168.52.10 192.168.52.20;
  option routers 192.168.52.130;
  next-server 192.168.52.130;
  filename "pxelinux.0";
}
3.2.2 配置tftp服务器
将pxelinux.0引导程序拷贝的TFTP站点目录下:

[root@server ~]# rpm -ql tftp-server 寻找到/var/lib/tftpboot 这个存放pxelinux.0文件的目录
[root@server ~]# rpm -ql syslinux | grep pxelinux  之前已经装过了syslinux这个软件包,所以存在pxelinux.0这个文件
/usr/share/doc/syslinux-4.05/pxelinux.txt
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/gpxelinuxk.0
/usr/share/syslinux/pxelinux.0  查询到是这个文件
[root@server ~]# cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 将pxelinux.0引导程序拷贝的TFTP站点共享目录下

提供内核文件,从光盘加载:

[root@server ~]# df -h  
[root@server ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server ~]# cd /mnt/images/pxeboot/  进入/mnt目录查看到内核文件
[root@server pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz   (initrd.img 提供伪文件系统,vmlinuz 内核文件)
[root@server pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/   将内核文件拷贝到tftp共享目录下
[root@server pxeboot]# cd /var/lib/tftpboot/ 
[root@server tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[root@server tftpboot]# vim /etc/xinetd.d/tftp
编辑tftp服务配置文件:
[root@server ~]# vi /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   //将yes改为no,便可启动服务
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
3.2.3 配置vsftp服务器
进入TFTP站点目录,新建一个引导配置文件存放目录:

[root@server tftpboot]# mkdir /var/ftp/centos7   先创建一个目录用于存放光盘的内容
[root@server tftpboot]# cp -rf /mnt/* /var/ftp/centos7/  将/mnt目录下的内容拷贝到目录下面

配置菜单文件:进入该目录并新建一个名为default的配置文件,编辑该文件:
[root@server tftpboot]# mkdir pxelinux.cfg   新建一个目录用于存放菜单文件
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# vim default   里面的内容可从光盘文件查找
[root@server pxelinux.cfg]# cd /var/ftp/centos7/   进入光盘存放的目录,进行查看
[root@server centos7]# ls
[root@server centos7]# cd isolinux
[root@server isolinux]# ls
[root@server isolinux]# cp -p isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default  将菜单文件拷贝到自己想要更改的菜单文件内
[root@server isolinux]# vim /var/lib/tftpboot/pxelinux.cfg/default

修改成如下内容即可:


或者改成自己手撕这个文件,我使用的是这个方法:

default auto
prompt 0
label auto
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.52.130/centos7/ks.cfg
3.2.3 开启服务
[root@server pxelinux.cfg]# systemctl start dhcpd
[root@server pxelinux.cfg]# systemctl start tftp
[root@server pxelinux.cfg]# systemctl start vsftpd
3.2.4 客户机配置

首先在电源选项里面选择从网络检查安装


而且这些文件是在vim /var/lib/tftpboot/pxelinux.cfg/default 这个里面

解决方法:

[root@server isolinux]# ls
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.png  vesamenu.c32
[root@server isolinux]# cp -p splash.png vesamenu.c32 /var/lib/tftpboot/  将背景图+图形化界面拷贝到/var/lib/tftpboot/下面
[root@server isolinux]# ls /var/lib/tftpboot/
initrd.img  pxelinux.0  pxelinux.cfg  splash.png  vesamenu.c32  vmlinuz
[root@server isolinux]# 

更改了之后界面马上发生了变化:

然后回车,出现下面的图形,显示成功了一半:

3.2.5 客户机无人值守安装

切换到虚拟机中,打开系统工具,发现软件Kickstart

打开即可配置:







默认是不可以选,但是我们可以给他选,进入文件配置,
将bash改成development


然后再重新启动一下这个软件,就可以查看了


预安装脚本不做要求

配置完了之后可以保存文件

可以选择存放的位置 我放在root下面

在虚拟机里面查看刚刚保存的文件,文件在root目录下:

[root@server ~]# cd /var/ftp/   进入ftp目录,将菜单文件复制进去
[root@server ftp]# ls
centos7  pub
[root@server ftp]# cp ~/ks.cfg .
[root@server ftp]# ls
centos7  ks.cfg  pub
[root@server ftp]# vim /var/lib/tftpboot/pxelinux.cfg/default 调用菜单文件的信息

vim /var/lib/tftpboot/pxelinux.cfg/default,调至最后,在后面添上如下内容那,指定一下获取的地址:

然后保存退出,将客户机重启再试一次
达到无人值守的目的


在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值