欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-04-19 10:36:06
文章目录一、 部署PXE远程安装服务1.1 搭建PXE远程安装服务器1.1.1 准备安装源1.1.2 安装 、配置dhcp服务1.1.3 安装和配置syslinux、tftp服务1.1.4 准备Linux内核、初始化镜像文件1.1.5 准备PXE引导程序、启动文件菜单1.1.6 启动服务1.1.7 进行测试二、 kickstart无人值守安装2.1 准备应答文件2.1.1 配置安装应答参数2.1.2 在配置文件default中指明应答文件位置2.2 测试阶段(之前的设置有坑,需要先看这里,再看2.1)一、...

一、 部署PXE远程安装服务

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

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

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

1.1 搭建PXE远程安装服务器

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

1.1.1 准备安装源

我们在虚拟机上要实现yum安装软件以及装机的功能,所以我们要给我们的PXE安装服务器配双网卡,一张绑定vm8(可以上网),另一张绑定vm1(不可上网,实现装机)。
服务器双网卡配置
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)

[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网卡不需要配网关

荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
我们在VMware软件中新建一台虚拟机,需要改的地方只要将网络类型设置为仅主机,其余的全选默认,这里是不需要勾选镜像光盘的,因为我们是模拟裸金属机。
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)

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服务
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
这里我们会将配置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 进行测试

选择我们之前准备好的裸金属主机,直接点击开启
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)

荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
然后就出现了我们熟悉的界面
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
我们就实现了PXE远程安装服务器的部署。

二、 kickstart无人值守安装

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

2.1 准备应答文件

应答文件在我们安装好系统后就自己产生在我们的家目录中,也就是anaconda-ks.cfg 文件。
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
我们要实现一键部署,就要事先准备好应答文件

2.1.1 配置安装应答参数

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

安装完成过后,我们就可以在图形化界面下看到Kickstart配置程序
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
我们打开Kickstart配置程序,每一个子选项依次设置
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
基本配置:荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
安装方法:
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
引导装载程序选项:
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
分区信息:
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
最后一个分区的时候直接按以下方法全都划分给它。
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
网络配置:
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
验证:这里不用改。默认就行
防火墙设置:
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
显示设置:也是默认
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
软件包选择:我们会在之后根据之前安装主机的软件包来写入配置文件,这里也不需要改
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
预安装脚本:这里也是默认
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
安装后脚本:
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
这时候我们在刚刚保存的目录中找到了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

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

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

我们在安装完成后直接选择启动,但是在安装完成后,重启会出现图示情况,一直加载不了系统
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
这是因为我们在Kickstart图形程序设置时,引导装载程序选项中我们选择了不安装引导程序,导致重启后一直没有程序引导,操作系统加载不了。我们在哪个地方改一下,重新生成应答文件。
荐
                                                        Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
然后重启就可以正常打开了。

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