pxe批量部署linux服务器

1、pxe介绍

PXE是有intel设计的协议,它可以使计算机通过网络启动,协议分为client和server两端,PXEclient在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存中执行,并显示出命令菜单,经用户选择PXE启动后,PXE client获取网络地址信息,然后将放置在远端的服务器上的操作系统文件通过网络下载到本地运行

既然是通过网络传输,就需要IP地址,也就是说在PXE启动过程中,PXE客户端会请求DHCP服务器分配IP地址,之后PXEclient使用TFTP client通过TFTP协议连接服务器下载启动安装程序所需要的文件到本地

2、PXE安装过程

第一步:PXE client向DHCPserver发送请求

首先,开机启动PXE安装,此时PXE client会通过 PXE Boot ROM(自动芯片)以UDP(简单用户数据协议)的形式在网络中发送一个广播请求,请求DHCP服务器分配IP地址等相关信息。

第二步:DHCP服务器应答PXE client

DHCP验证是否是合法的PXE client的请求,验证通过后,回应PXE client,回应中包含了为PXE client分配的ip之地址、TFTP(pxelinux启动程序)的位置,以及配置文件所在的位置。

第三步:PXE client请求下载启动文件

客户端收到DHCP的回应后,向TFTP服务器请求传送启动系统安装所需要的文件,这些文件包括:pxelinux0、pxelinux.cnf/default(内核文件)、vmlinuz、initrd.img等文件

第四步:TFTP服务器响应客户端请求并传送文件

当TFTP收到客户端的请求之后,发给客户端所需要的启动文件,BootROM由TFTP通讯协议从BootServer下载启动安装程序所必须的文件(pxelinux0、pxelinux.cnf/default),default文件下载完之后会根据该文件定义的引导顺序,启动linux安装程序的引导内核。

第五步:请求下载自动应答文件(ftp服务器)

PXE client通过default文件成功的引导linux安装内核后,安装程序首先确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS、HTTP、FTP),则会在这个时候初始化网络,并定位安装系统所需的二进制包以及配置文件的位置,接着会读取该文件中指定的自动应答文件ks.cfg,然后根据ks.cfg中的文件位置请求下载相关文件。

第六步:根据ks.cfg文件内容进行安装系统

将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。

3、pxe的部署

系统:CentOS release 6.4 (Final)- 2.6.32-358.el6.x86_64

所需服务:vsftpd,dhcp,tftp

步骤:

1)配置DHCP,用于给客户端提供IP地址及其它信息

2)配置TFTP服务器,用于提供客户端PXE引导所必须的文件

3)配置FTP服务器,用于存放安装文件

4)配置Kickstart,用于自动应答安装

5)使用PXE功能引导客户机

3.1 配置dhcp服务

[root@PXE-SERVER ~]# yum install dhcp –y
[root@PXE-SERVER ~]# vim /etc/dhcp/dhcpd.conf
[root@PXE-SERVER ~]# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {optionrouters                  192.168.1.1;option subnet-mask              255.255.255.0;optiondomain-name             "JeckFY.org";optiondomain-name-servers      192.168.1.1;optiontime-offset              -18000; range192.168.1.128 192.168.1.254;default-lease-time21600;max-lease-time43200;next-server 192.168.1.1;         filename"pxelinux.0";
}
[root@PXE-SERVER ~]# service dhcpd configtest
Syntax: OK
[root@PXE-SERVER ~]# service dhcpd start
Starting dhcpd:                                            [  OK  ]
[root@PXE-SERVER ~]# netstat -anput | grep dhcp
udp        0      0 0.0.0.0:67                  0.0.0.0:*                               1300/dhcpd
[root@PXE-SERVER ~]# ps -ef | grep dhcp
dhcpd     1300    1  0 22:40 ?        00:00:00 /usr/sbin/dhcpd -user dhcpd-group dhcpd
root      1307  1155  022:41 pts/0    00:00:00 grep dhcp
[root@PXE-SERVER ~]# chkconfig dhcpd on

3.2 配置tftp服务

1)安装软件
[root@PXE-SERVER ~]# yum install xinetd tftp* syslinux -y
[root@PXE-SERVER ~]# vim /etc/xinetd.d/tftp
[root@PXE-SERVER ~]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivialfile transfer \
#       protocol.  The tftp protocol is often used to bootdiskless \
#       workstations,download configuration files to network-aware printers, \
#       and to start theinstallation process for some operating systems.
service tftp
{socket_type             = dgramprotocol                = udpwait                    = yesuser                    = rootserver                  = /usr/sbin/in.tftpdserver_args             = -s /var/lib/tftpbootdisable                 = no      #开启tftp服务,默认为yesper_source              = 11cps                     = 100 2flags                   = IPv4
}
2)拷贝所需文件
TFTP服务器为客户端主要提供pxelinux.0引导文件,vmlinuz内核文件,initrd.img基础安装平台文件以及default文件。
挂载OS镜像到/media目录下,用于拷贝所需文件
[root@PXE-SERVER ~]# mount /dev/cdrom /media/
mount: block device /dev/sr0 is write-protected, mountingread-only
拷贝pxelinux.0vmlinuz initrd.img,以及生成default文件
[root@PXE-SERVER ~]# cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/
[root@PXE-SERVER ~]# cp /media/isolinux/vmlinuz /var/lib/tftpboot/
[root@PXE-SERVER ~]# cp /media/isolinux/initrd.img/var/lib/tftpboot/
[root@PXE-SERVER ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@PXE-SERVER ~]# cp /media/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/
[root@PXE-SERVER ~]# mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default
[root@PXE-SERVER ~]# ls /var/lib/tftpboot/
initrd.img pxelinux.0  pxelinux.cfg  vmlinuz
[root@PXE-SERVER ~]# ls /var/lib/tftpboot/pxelinux.cfg/
default
3)编辑default文件
[root@PXE-SERVER ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default linux         #default项中标记的启动内核为默认启动项
prompt 0        #显示boot:提示符。为0时则不提示,将会直接启动default参数中指定的内容。为1时会等待输入label后关键字,从而启动相应内核
timeout 600         #等待超时时间
display boot.msg
label linuxmenu label ^Install orupgrade an existing systemmenu defaultkernel vmlinuz            #kernel 参数指定要启动的内核。append initrd=initrd.imgks=ftp://192.168.1.1/ks.cfg ksdevice=eth0    # ks指定了ks文件的路径,ksdevice指定从哪块网卡获取安装文件
4)启动tftp
[root@PXE-SERVER ~]# service xinetd start
Starting xinetd:                                          [  OK  ]
[root@PXE-SERVER ~]# chkconfig xinetd on
[root@PXE-SERVER ~]# netstat -anput | grep xinetd
udp        0      0 0.0.0.0:69                  0.0.0.0:*                               1419/xinetd

3.3 配置vsftpd服务

[root@PXE-SERVER ~]# yum install vsftpd –y
[root@PXE-SERVER ~]# mkdir -p /var/ftp/centos
[root@PXE-SERVER ~]# cp -fr /media/* /var/ftp/centos/
[root@PXE-SERVER ~]# ls /var/ftp/centos/
CentOS_BuildTag RELEASE-NOTES-en-US.html
EFI              repodata
EULA            RPM-GPG-KEY-CentOS-6
GPL             RPM-GPG-KEY-CentOS-Debug-6
p_w_picpaths          RPM-GPG-KEY-CentOS-Security-6
isolinux        RPM-GPG-KEY-CentOS-Testing-6
Packages         TRANS.TBL
[root@PXE-SERVER ~]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@PXE-SERVER ~]# chkconfig vsftpd on
[root@PXE-SERVER ~]# netstat -anput | grep vsftpd
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1444/vsftpd

3.4 生成ks.cfg文件

   [root@PXE-SERVER~]#yum install system-config-kickstart –y进入图形化界面配置kickstart
[root@PXE-SERVER ~]# init 5
[root@PXE-SERVER ~]#system-config-Kickstart
按照提示进行配置,最后保存到/var/ftp/目录下
[root@PXE-SERVER ~]# cat /var/ftp/ks.cfg
#platform=x86, AMD64, 或 IntelEM64T
#version=DEVEL
# Firewall configuration
firewall --enabled
# Install OS instead of upgrade
install                      ====>表示全新安装,而不是升级update
# Use network installation
url --url="ftp://192.168.1.1/centos"    ====>OS文件所在的位置
# Root password
rootpw --iscrypted $1$5axKiu3u$l2pavqIifA/MUgXUHadKa.    ====>root密码
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical        ====>表示采用图形化模式安装(不是安装图形化界面)
firstboot –disable      ====>安装完时候自动重启(若启用该设置会导致第二次自动安装)
# System keyboard
keyboard us       ====>键盘语言
# System language
lang en_US           ====>系统语言环境
# SELinux configuration
selinux –enforcing             ====>selinux是否启用
# Installation logging level
logging --level=info                  ====>日志级别# System timezone
timezone  Africa/Abidjan                  ====>时区设置
# Network information
network  --bootproto=dhcp--device=eth0 --onboot=on            ====>网卡设置
# System bootloader configuration
bootloader --location=mbr          ====>硬盘模式为mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel        ====>清除全部分区
# Disk partitioning information      ====>分区信息
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=4096
part / --fstype="ext4" --grow --size=1
%packages                             ====>默认安装软件包
@base
@chinese-support
@development
@system-admin-tools
%end

至此:pxe服务器端已经部署完毕。在客户机端开机选择pxe启动,就可以实现自动批量装系统

扩展

多版本同时批量部署

修改default的文件
default linux
prompt 1
timeout 600
#display boot.msg
display memu
label centos5.6kernel centos5.6/vmlinuzappendinitrd=centos5.6/initrd.img ks=ftp://192.168.1.1/ks/centos5.6.cfg ksdevice=eth0
label centos6.0kernel centos6.0/vmlinuzappendinitrd=centos6.0/initrd.img ks=ftp://192.168.1.1/ks/centos6.0.cfg  ksdevice=eth0
label centos6.4kernel centos6.4/vmlinuzappendinitrd=centos6.4/initrd.img ks=ftp://192.168.1.1/ks/centos6.4.cfg  ksdevice=eth0
在根据default文件的各个所需文件的路径。创建对应的文件即可

转载于:https://blog.51cto.com/studys/1592746

PXE实现批量部署linux系统相关推荐

  1. PXE批量部署linux操作系统

    前言 在实际生产环境中,有时候我们会碰到为几十上百甚至上千台服务器安装Linux操作系统的需求,如果我们还是常规的去使用移动介质逐台安装,显然是一件低效又令人抓狂的事情,那要安装到何年何月啊?这对于我 ...

  2. Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统

    说明: Kickstart服务器系统:CentOS 6.5 64位 IP地址:192.168.0.250 需要安装部署的Linux系统:CentOS 6.5 64位 eth0(第一块网卡,用于外网)I ...

  3. pxe自动化部署Linux系统

    pxe自动化部署Linux系统 实验准备:虚拟机centos 7 需要部署:DHCP服务器,TFTP服务器,HTTP服务器 准备工作 [root@centos771 tftpboot]# yum -y ...

  4. pxe+kickstart 自动化部署linux操作系统

    kickstart 是什么? 批量部署Linux服务器操作系统 运行模式: C/S client/server 服务器上要部署: DHCP tftp(非交互式文件共享) 安装系统的三个步骤: 1.加载 ...

  5. 3.1 KickStart 无人值守批量安装Linux系统

    原创地址找不到了,请原创来找我吧,感谢原创. KickStart 无人值守批量安装Linux系统 一:需求分析 不适合本地安装的情况如下: (1)无软驱和光驱:如果计算机不带光驱或软驱,则无法通过本地 ...

  6. 【云原生之Docker实战】使用Docker部署Linux系统监控平台Netdata

    [云原生之Docker实战]使用Docker部署Linux系统监控平台Netdata 一.Netdata介绍 1.netdata简介 2.netdatar特点 二.检查本地Docker环境 1.宿主机 ...

  7. 海康sdk项目部署Linux系统时出现java.lang.UnstisfiedLinkError:jnidispatch(xxx)not found in resource path错误

    海康sdk项目部署Linux系统时出现java.lang.UnstisfiedLinkError:jnidispatch(xxx)not found in resource path错误 问题描述 解 ...

  8. ruoyi项目前后端分离版本部署-linux系统

    ruoyi项目前后端分离版本部署-linux系统 参考网址 ruoyi官网 https://doc.ruoyi.vip/ruoyi-vue/ https://ruoyi.vip/ 参考文章网址 htt ...

  9. Centos7 自动化Kickstart+pxe实现无人值守批量安装Linux系统

    前言 本章讲解的是,公司网络环境,需要部署大量Linux系统.一个一个装太费时间了,而且装系统还要手动一个一个去点击配置一些基本设置,占用大量时间.只需要一根网线,设置网卡启动,kickstart和p ...

最新文章

  1. 深度学习入门指北——从硬件到软件
  2. 星型模型 3nf的区别_贵州省遵义市工业模型经典案例展示
  3. Delphi中Indy 10的安装和老版本的卸载
  4. 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始
  5. python教程:os.chdir() 基本用法
  6. 第07讲:入门首选,Requests 库的基本使用
  7. qq空间网页设计_网页设计中负空间的有效利用
  8. Linux特殊权限分析(第二版)
  9. object C php,关于消息推送的补充,主要介绍服务端的实现,包含object c 版本 c 版本 java 版本 php 版本 (转)...
  10. js实现excel块拖拉数据_小程序导出数据到excel表,借助云开发云函数实现excel数据的保存...
  11. 交换机配置web/telnet
  12. list转json的时候,关于date转换的问题
  13. 循迹避障小车制作第一篇(tb6612模块与降压模块的使用)
  14. html控制word打印在一张页面,HTML文件到WORD文档双面打印三步曲
  15. Python 断言的使用
  16. 针对Win10 Tensorflow-2.x 训练 线程冻结(假死、卡住、几个epoch后、中途停滞、CPU占用0%) 等问题的排查总结
  17. 单引号、双引号、三引号用法
  18. USB 3.0规范中译本 第7章 链路层
  19. win7 升级IE11
  20. 构建 Java 镜像的 10 个最佳实践

热门文章

  1. 尺度空间理论与图像金字塔
  2. NDKJNI Android 相关资料整理(四)
  3. CentOS Linux内核升级全过程
  4. C++ 中隐藏DOS调用的命令行窗口
  5. 【Ubuntu】虚拟机VirtualBox安装win7完整步骤
  6. linux创建redis容器,docker-compose实现redis部署及键值添加
  7. 连接此产品到计算机并打开此产品电源,n6705c 直流电源分析仪.pdf
  8. Mysql常用词汇_mysql 数据库常用单词
  9. Nginx学习2:Nginx的安装配置和常用命令
  10. Java项目:实现个人博客系统(java+springboot+mybatis+redis+vue+elementui+Mysql)