PXE高效批量网络装机

PXE概述

PXE批量部署的优点

规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质

在这里插入图片描述

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

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

客户端

网卡支持PXE协议     (一般来说,主板支持pxe协议,网卡一定支持)
主板支持网络引导

Liunx操作系统引导过程

引导过程总览
开机自检(BIOS) MBR引导 GRUB菜单 加载内核(kernel) init进程初始化

配置PXE装机服务器
基本部署过程

1.准备CentOS 7 安装源(YUM仓库)
2.安装并启用TFTP服务 (因安装FTP服务)
3.提供Linux内核、PXE引导程序等
4.安装并启用DHCP服务
5.配置启动菜单

准备CentOS 7 安装源
CentOS 7 安装源支持HTTP、FTP、NFS等协议发布

[root@localhost~]# yum -y install vsftpd
[root@localhost]#mkdir /var/ftp/centos7
[root@localhost~]# cp -rf /media/cdrom/* /var/ftp/centos7/
lroot@localhost~]#systemctl start vsftpd

安装并启用TFTP服务
安装tftp-server软件包,启用tftp服务
配置文件位于/etc/xinetd.d/ftpd

[root@localhost~]# yum-y install tftp-server
[root@localhost]# vi /etc/xinetd.d/tftp  //修改配置值
server_args    =-s/var/lib/tftpboot
disable        =no
[root@localhost~]# systemctl start tftp
[root@localhost]# systemctl enable tftp

准备Linux内核、PXE引导程序
Linux内核、初始化镜像文件分别为vmlinuz和initrd.img
引导程序为pxelinux.0,由软件包syslinux提供

[root@localhost~]# cd /media/cdrom/images/pxeboot(位于系统镜像文件夹images/pxeboot下)
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot
[root@localhost~]# yum-y install syslinux
[root@localhost~]#cp /usr/sharelsyslinux/pxelinux.0 /var/lib/tftpboot(也拷贝到tftp的根目录)

DHCP服务的PXE设置

[root@localhost~]#yum -y install dhcp
[root@localhost-# vi letcldhcpldhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0{
	......
    option routers 192.168.4.254;
    option domain-name-servers192.168.4.254,202.106.0.20;
    range 192.168.4.254;(next-server:指定TFTP服务器地址)
    filename "pxelinux.0";(filename:指定要下载的引导程序文件)
}
[root@localhost~]# systemctl start dhcpd
[root@localhost一]#systemctl enable dhcpd

配置启动菜单文件

[rootalocalhost]#vi /var/lib/tftpboot/pxelinux.cfg/default(确保pxelinux.cfg目录已存在)
default auto
确保pxelinux.cfg
prompt1
label auto
	kernel vmlinuz
	append initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux text
	kernel vmlinuz
	append text initrd=initrd.img method=ftp://192.168,4254lcentos7(文本模式安装)
label linux rescue
	kernel vmlinuz
	append rescue initrd=initrd.img method=ftp://192.168.4.254/cantos(进入救援模式)

验证PXE网络安装

为客户机安装系统
调整BIOS设置,以便从网络引导
自动获取IP地址,并指定CentOS 7 安装源
其余过程与本地安装相同

在这里插入图片描述

PXE部署

PXE 远程安装服务
工作在C/S模式,客户机通过网络从远程服务器下载引导镜像,并加载安装整个系统。

PXE实验
PXE建议在局域网环境下使用,因为有DHCP过程,所以要注意网卡上面的设置
此时,既会想上网安装软件包,又想与局域网内的主机连接,此时就要用到双网卡:
第一块网卡设置NAT模式
第二块网卡设置VM1仅主机模式

装一台虚拟机(裸硬件)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述(镜像需要通 过PXE安装)

PXE服务器配置:
查看网卡是否配置成功:
[root@server1 ~]# ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 20.0.0.11  netmask 255.255.255.0  broadcast 20.0.0.255
        inet6 fe80::e0e8:dfff:44ce:e5bb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a9:67:91  txqueuelen 1000  (Ethernet)
        RX packets 1874  bytes 2197252 (2.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 704  bytes 54719 (53.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:a9:67:9b  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 519 (519.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 103  bytes 18330 (17.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置双网卡的配置:

[root@server1 ~]# cd /etc/sysconfig/network-scripts/
[root@server1 network-scripts]# ls (发现没有ens37网卡)
ifcfg-ens33  ifdown-ippp    ifdown-sit       ifup-bnep  ifup-plip    ifup-Team          
[root@server1 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens37
[root@server1 network-scripts]# vim ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
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=ens37
DEVICE=ens37
ONBOOT=yes
[root@server1 network-scripts]# systemctl restart network (重启网络服务)
[root@server1 network-scripts]# ifconfig (修改网卡之后查看)
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 20.0.0.11  netmask 255.255.255.0  broadcast 20.0.0.255
        inet6 fe80::e0e8:dfff:44ce:e5bb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a9:67:91  txqueuelen 1000  (Ethernet)
        RX packets 2735  bytes 2277525 (2.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1364  bytes 165557 (161.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::5653:6be8:48b4:2811  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a9:67:9b  txqueuelen 1000  (Ethernet)
        RX packets 7  bytes 1248 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 454  bytes 75903 (74.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

二:安装DHCP服务

[root@server1 network-scripts]# yum -y install dhcp

覆盖DHCP的服务,并修改主配置文件

[root@server1 network-scripts]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@server1 network-scripts]# vim /etc/dhcp/dhcpd.conf 
 27 subnet 192.168.100.0 netmask 255.255.255.0 {
 28         range 192.168.100.20 192.168.100.30; 分区地址(准备地址池)
 29         option routers 192.168.100.100; 定义网关
 30         option domain-name-servers 114.114.114.114; 分配DNS地址
 31         next-server 192.168.100.100; 指向tftp服务器(自己)
 32         filename "pxelinux.0"; 引导文件位置
 33 }

[root@server1 network-scripts]# systemctl start dhcpd(启动dhcp服务)

安装引导程序文件

[root@server1 network-scripts]# yum -y install syslinux

查看安装后引导程序文件的位置:

qc:查看配置文件
pl:查看所有文件
[root@server1 network-scripts]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/pxelinux.0

此时,引导程序文件需要放到TFTP路径(站点)下:

安装TFTP服务:[root@server1 network-scripts]# yum install tftp-server -y
查看TFTP服务的站点路径:
/etc/xinetd.d/tftp (配置文件)
/var/lib/tftpboot(站点文件)(重要)
此时,站点文件是需要放一些系统启动的必要的文件(压缩内核,菜单文件,初始化文件,引导程序文件等)

将引导程序文件需要放到TFTP路径(站点)下

[root@server1 network-scripts]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@server1 network-scripts]# ls /var/lib/tftpboot/(查看引导程序文件是否存在)
pxelinux.0

开启FTFP服务的功能

[root@server1 network-scripts]# vim /etc/xinetd.d/tftp 
8         socket_type             = dgram(连接类型)
9         protocol                = udp (协议:udp)
11         user                    = root(用户:root)
12         server                  = /usr/sbin/in.tftpd(服务命令脚本)
13         server_args             = -s /var/lib/tftpboot(根目录路径)(-s改为-c的话:允许上传)
14         disable                 = no(之前是yes,现在修改为no)(启用tftp功能)

安装vsftp服务

[root@server1 network-scripts]# yum install vsftpd -y

查看vsftpd站点位置

[root@server1 network-scripts]# rpm -ql vsftpd 
/var/ftp
[root@server1 network-scripts]# cd /var/ftp/ 
[root@server1 ftp]# ls
pub(默认的目录文件)
[root@server1 ftp]# mkdir centos7(新建一个cnetos7的目录)
[root@server1 ftp]# ls
centos7  pub

将镜像文件挂载到新建目录centos7目录下:

[root@server1 ftp]# mount /dev/sr0 /var/ftp/centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server1 ftp]# df -Th
/dev/sr0       iso9660   4.3G  4.3G     0  100% /var/ftp/centos7

[root@server1 ftp]# cd centos7/
[root@server1 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@server1 centos7]# cd images/
[root@server1 images]# ls
efiboot.img  pxeboot  TRANS.TBL
[root@server1 images]# cd pxeboot/
[root@server1 pxeboot]# ls
initrd.img(初始化文件)  TRANS.TBL  vmlinuz(内核文件)

将初始化文件 压缩内核文件放入tftp站点中

[root@server1 pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/

查看tftp站点下的文件(必须要满足有以下三个文件)

[root@server1 pxeboot]# ls /var/lib/tftpboot/
initrd.img  pxelinux.0  vmlinuz
[root@server1 pxeboot]# cd /var/lib/tftpboot/
[root@server1 tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz

编写启动菜单:

[root@server1 tftpboot]# mkdir pxelinux.cfg
[root@server1 tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg(名称不能错)  vmlinuz
[root@server1 tftpboot]# cd pxelinux.cfg/
[root@server1 pxelinux.cfg]# ls
[root@server1 pxelinux.cfg]# vim default(自己编写)
default auto(默认模式)
prompt 1 

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7(初始化文件)

label linux tex t
        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

关闭防火墙,核心防护,开启所有服务

[root@server1 pxelinux.cfg]# systemctl stop firewalld.service 
[root@server1 pxelinux.cfg]# setenforce 0
[root@server1 pxelinux.cfg]# systemctl start dhcpd
[root@server1 pxelinux.cfg]# systemctl start tftp
[root@server1 pxelinux.cfg]# systemctl start vsftpd

客户机:检查网卡是否为仅主机模式(进行PXE安装)
在这里插入图片描述
在这里插入图片描述
选择第四行(以网络方式运行,F10保存并退出)
在这里插入图片描述
回车,让其自动运行
在这里插入图片描述
发现镜像源是远端服务器提供
在这里插入图片描述
在这里插入图片描述

kickstart无人值守部署

基于PXE部署之再进行部署:

进入虚拟机,发现没有kickstart无人值守部署的工具,需要安装工具
在这里插入图片描述
安装kickstart工具

[root@server1 ~]# yum -y install system-config-kickstart 

按照PXE部署中的方式去新建一台虚拟机,验证是否需要无人值守的安装(当提示boot时,直接回车,不需要输入密码),发现是一步到位的安装方式

发现该工具以生成(系统工具中查看)
在这里插入图片描述
利用kickstart工具创建模板文件(密码设置为abcd1234)在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看文件是否上传至站点目录:

[root@server1 ~]#  cd /var/ftp/
[root@server1 ftp]# ls
centos7  ks.cfg  pub

[root@server1 ftp]# cd /root/(root的目录下复制文件中的内容作为模板)
[root@server1 ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@server1 ~]# vim anaconda-ks.cfg (以下为需要复制的内容)
%packages
@^gnome-desktop-environment
@backup-client
@base
@compat-libraries
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-apps
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@multimedia
@network-file-system-client
@networkmanager-submodules
@office-suite
@print-client
@security-tools
@smart-card
@x11
kexec-tools

%end
[root@server1 ~]# cd -
/var/ftp
[root@server1 ftp]# ls
centos7  ks.cfg  pub
[root@server1 ftp]# vim ks.cfg (将刚刚复制的内容粘贴至其内部的最后一行)

在这里插入图片描述
以上只是一个模板,需要进行引导,让他加载这个模板,引导的过程应写在哪里?

[root@server1 ftp]# cd /var/lib/tftpboot/
[root@server1 tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[root@server1 tftpboot]# cd pxelinux.cfg/
[root@server1 pxelinux.cfg]# ls
default
[root@server1 pxelinux.cfg]# vim default 
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg(添加在该路径)

再次安装裸金属(重新安装虚拟机)时,不需要进行设置,即可自动安装系统

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值