当前位置: 移动技术网 > 网络运营>服务器>Linux > 荐 Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)

荐 Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)

2020年07月15日  | 移动技术网网络运营  | 我要评论

一、 部署PXE远程安装服务

PXE是由Inter公司开发的网络引导技术,是客户/服务器模式,允许客户机通过网络从远程服务器下载镜像,并加载安装文件或整个操作系统。

搭建PXE网络体系满足的条件:

  • 客户机的网卡支持PXE协议,主板支持网络引导
  • 网络中有一台DHCP服务器以便为客户机分配IP地址、指定引导文件位置
  • 服务器通过TFTP提供引导镜像文件的下载

1.1 搭建PXE远程安装服务器

以搭建集成centos7安装源、TFTP服务、DHCP服务的远程PXE装机服务器为例,能够向客户机裸金属机发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。

1.1.1 准备安装源

我们在虚拟机上要实现yum安装软件以及装机的功能,所以我们要给我们的PXE安装服务器配双网卡,一张绑定vm8(可以上网),另一张绑定vm1(不可上网,实现装机)。
服务器双网卡配置
在这里插入图片描述

[root@localhost ~]# cd  /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36   //复制网卡ens33的配置文件作为ens36的配置文件
[root@localhost network-scripts]# vi ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=ens33
UUID=b2230917-b565-406d-9361-86b607bceccd
DEVICE=ens33
ONBOOT=yes
IPADDR=20.0.0.17
PREFIX=24
GATEWAY=20.0.0.2
DNS1=8.8.8.8             
ens36网卡配置文件
[root@localhost network-scripts]# vi ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.100
PREFIX=24

注意:这里的ens36网卡不需要配网关

在这里插入图片描述
我们在VMware软件中新建一台虚拟机,需要改的地方只要将网络类型设置为仅主机,其余的全选默认,这里是不需要勾选镜像光盘的,因为我们是模拟裸金属机。
在这里插入图片描述

1.1.2 安装 、配置dhcp服务

[root@localhost ~]# yum install dhcp -y   //安装adcp服务
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf     //将dhcp实例文件复制到/etc/dhcp目录下覆盖原dhcp配置文件
cp:是否覆盖"/etc/dhcp/dhcpd.conf" y    //确认覆盖
[root@localhost ~]# vi /etc.dhcp/dhcpd.conf   //进入dhcp配置文件在27行处写入以下内容
  subnet 192.168.100.0 netmask 255.255.255.0 {
        range 192.168.100.150 192.168.100.200;
        option routers 192.168.100.100;
        option domain-name-servers 8.8.8.8;
        next-server 192.168.100.100;
        filename "pxelinux.0";
      }

1.1.3 安装和配置syslinux、tftp服务

[root@localhost ~]# yum install syslinux -y     //安装syslinux服务
[root@localhost ~]# rpm -ql syslinux | grep pxelinux.0   //查看pxelinux.0文件路径
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost ~]# yum install tftp-server -y   //安装tftp服务
[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 ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/    //将文件pxelinux.0复制到站点目录下

启用tftp服务
vi /etc/xinetd.d/tftp ,将下面的yes改为no启用tftp服务
在这里插入图片描述
这里我们会将配置PXE需要的四个配置文件(pxelinux.0、initrd.img、 vmlinuz、default)中的pxelinux.0放到tptf的站点。

1.1.4 准备Linux内核、初始化镜像文件

[root@localhost ~]# yum install vsftpd -y    //安装ftp服务
[root@localhost ~]# cd /var/ftp/            
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir centos7          //创建一个目录centos7
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/     //将光盘挂载到刚刚创建的目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# df -Th                 //查看挂载情况
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda5      xfs        40G  4.5G   36G   12% /
devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs          tmpfs     1.9G   13M  1.9G    1% /run
tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda2      xfs        50G   33M   50G    1% /home
/dev/sda1      xfs       2.0G  174M  1.9G    9% /boot
tmpfs          tmpfs     378M   32K  378M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /var/ftp/centos7
[root@localhost ftp]# cd centos7/              
[root@localhost centos7]# ls
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img  pxeboot  TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# ls /var/lib/tftpboot/
initrd.img  pxelinux.0  vmlinuz

这一步我们已经将需要的四个配置文件中的三个配置文件放到了tftp的站点下

1.1.5 准备PXE引导程序、启动文件菜单

[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]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vi default   //编辑配置文件,将以下内容写进去
default auto   //默认是auto
prompt 1       //1秒后立即启动

label auto
   kernel vmlinuz
   append initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux text
   kernel vmlinuz
   append text initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
   kernel vmlinuz
   append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

1.1.6 启动服务

[root@localhost pxelinux.cfg]# systemctl stop firewalld.service    //关闭防火墙
[root@localhost pxelinux.cfg]# setenforce 0    //关闭内核防护
[root@localhost pxelinux.cfg]# systemctl start dhcpd    //开启dhcp服务
[root@localhost pxelinux.cfg]# systemctl start tftp     //开启tftp服务
[root@localhost pxelinux.cfg]# systemctl start vsftpd   //开启vsftp服务

1.1.7 进行测试

选择我们之前准备好的裸金属主机,直接点击开启
在这里插入图片描述

在这里插入图片描述
然后就出现了我们熟悉的界面
在这里插入图片描述
我们就实现了PXE远程安装服务器的部署。

二、 kickstart无人值守安装

在我们实现了PXE远程装系统后,我们还要手动的选择语言、键盘类型、指定安装源、分区等等一系列操作,如果是进行批量的安装,我们很非常不方便。
接下来我会讲以下kickstart工具是怎么实现全自动装机的,实现真正的一键安装。

2.1 准备应答文件

应答文件在我们安装好系统后就自己产生在我们的家目录中,也就是anaconda-ks.cfg 文件。
在这里插入图片描述
我们要实现一键部署,就要事先准备好应答文件

2.1.1 配置安装应答参数

[root@localhost ~]# yum install system-config-kickstart -y   //安装图形化向导工具

安装完成过后,我们就可以在图形化界面下看到Kickstart配置程序
在这里插入图片描述
我们打开Kickstart配置程序,每一个子选项依次设置
在这里插入图片描述
基本配置:在这里插入图片描述
安装方法:
在这里插入图片描述
引导装载程序选项:
在这里插入图片描述
分区信息:
在这里插入图片描述
最后一个分区的时候直接按以下方法全都划分给它。
在这里插入图片描述
网络配置:
在这里插入图片描述
验证:这里不用改。默认就行
防火墙设置:
在这里插入图片描述
显示设置:也是默认
在这里插入图片描述
软件包选择:我们会在之后根据之前安装主机的软件包来写入配置文件,这里也不需要改
在这里插入图片描述
预安装脚本:这里也是默认
在这里插入图片描述
安装后脚本:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时候我们在刚刚保存的目录中找到了ks.cfg文件。并将软件包源写入配置文件。

[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
centos7  ks.cfg  pub
[root@localhost ftp]# vi /root/anaconda-ks.cfg
将以下的内容复制到/var/ftp/ks.cfg中
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end


2.1.2 在配置文件default中指明应答文件位置

[root@localhost ftp]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ll
总用量 57872
-rw-r--r--. 1 root root 52584760 7  13 18:55 initrd.img
-rw-r--r--. 1 root root    26759 7  13 18:44 pxelinux.0
drwxr-xr-x. 2 root root       21 7  13 19:09 pxelinux.cfg
-rwxr-xr-x. 1 root root  6639904 7  13 18:55 vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ll
总用量 4
-rw-r--r--. 1 root root 333 7  13 19:09 default
[root@localhost pxelinux.cfg]# vi default  
                        将以下内容写入到图示位置
ks=ftp://192.168.100.100/ks.cfg

在这里插入图片描述

2.2 测试阶段(之前的设置有坑,需要先看这里,再看2.1)

我们在安装完成后直接选择启动,但是在安装完成后,重启会出现图示情况,一直加载不了系统
在这里插入图片描述
这是因为我们在Kickstart图形程序设置时,引导装载程序选项中我们选择了不安装引导程序,导致重启后一直没有程序引导,操作系统加载不了。我们在哪个地方改一下,重新生成应答文件。
在这里插入图片描述
然后重启就可以正常打开了。

本文地址:https://blog.csdn.net/kimowinter/article/details/107320732

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网