PXE实现批量部署linux系统
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
相关文章:

首场见习挑战赛倒计时3天!20000元奖学金瓜分就等你了!
CSDN软件开发精英赛是基于“C认证—软件工程师能力认证考试”而设立的编程比赛,大赛联合广大科技企业设置丰厚礼品及30万元奖学金。从7月22日官宣到今日,短短一个月内,大赛已经吸引了来自全国的2000+开发者参与其中。第一轮“见习…

一致性哈希算法以及其PHP实现
在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time…

Linux入门(四)
目录: 1234567891011121314一、根文件系统层级标准FHS二、bash的基础特性(一)1.命令历史 2.命令行补全 3.路径补全 4.命令行展开 5.命令执行的状态结果 6.引用 7.快捷键 三、目录管理相关命令mkdir、rmdir、tree四、引用命令的执行结果五、文…

OSI[七层]与TCP/IP[四层]模型简述简图
OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它是由国际标准化组织(International Standard Organization,ISO…

中国国际消费电子博览会拥抱转型,全新面貌拭目以待!
2021年9月24—26日,第十九届中国国际消费电子博览会(简称电博会)将在青岛国际会展中心隆重举行,如今距离电博会开幕已不到3个月的时间,全国各地的参展企业跃跃欲试、积极筹备。 长久以来,电博会为全球消费…

Fragment提交transaction导致state loss异常
下面自从Honeycomb发布后,下面栈跟踪信息和异常信息已经困扰了StackOverFlow很久了。 java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.j…

ASP网络编程从入门到精通 下载
《ASP网络编程从入门到精通》 清华大学出版社 特点: 面向ASP零基础读者,循序渐进 全面分析ASP技术细节 用代码描述个个知识点,操作性强 通过典型模块设计,体会ASP的奥妙 通过网上商城购物系统,增加项目开发经验 适合的…

项目Makefile文件模板
整理出来的一个Makefile模板,新增了一个内容,调用gcc生成依赖文件,这样如果某个c文件包含的头文件被更新了,该c文件以及依赖于该c文件的obj文件都会被重新编译.这个模板是按照我习惯的项目文件组织形式进行定义的,我的习惯是头文件放在include文件夹,代码放在src文件夹,目标文件…

小撒、金晨都想拥有!百度全球首款汽车机器人亮相,车内躺着看星星
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 金晨坐了都想带回家的车、无人车出行服务、撒贝宁与祝融号对话等等。 这届百度世界大会真的很惊艳。 8月18日,百度与央视新闻联合举办“AI这时代,星辰大海——百度世界大会2021…

解决oracle11g安装导致数据库无法自动搜集统计信息-转
近期发现个别11G数据库无法自动收集统计信息,部分视图查询结果如下: SQL> select client_name,status from dba_autotask_client where client_name auto optimizer stats collection;CLIENT_NAME STATUS -----------------------------------------…

服务器监控--cacti中英文版安装全解
近段时间一直在整服务器监控方面的东西,以下就是cacti中英文版安装的全过程,各安装包基本都是最新的,基于Centos 5.2平台下安装的!!#!/bin/bash# BY kerryhu# QQ:263205768# MAIL:king_819163.com# BLOG:[url]http://kerry.blog.51cto.com[/url]# Please manual operation yum …

lighttpd1.4.18代码分析
lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态posted 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1) 编辑 lighttpd1.4.18代码分析(七)--状态机(1)CON_STATE_REQUEST_START状态posted 2008-09-22 15:10 那谁 阅读(2259) | 评论 (0) 编辑 lighttpd1.4.18代码分析…

惊艳亮相!马斯克发布自研超算 Dojo 芯片、特斯拉人形机器人
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 北京时间 8 月 20 日,特斯拉 AI 日终于开始了!在活动上不仅推出自研计算机系统Dojo 及 D1 芯片,同时还推出了特斯拉的下一个大型项目:人形机器人&#x…

git revert和git reset的区别
git revert 是撤销某次操作,此次操作之前的commit都会被保留git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区具体一个例子,假设有三个commit, git st:commit3: add test3.ccommit2: add test2.ccommit1: add test…

python之深浅拷贝
对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。 import copy # ######### 数字、字符串 #########n1 123 # n1 "age 10"print(id(n1)) # ## 赋值 ##n2 n1 print(id(n2)) # ## 浅拷贝 ##n2 copy.cop…
linux:关于Linux系统中 CPU Memory IO Network的性能监测
我们知道:系统优化是一项复杂、繁琐、长期的工作.通常监测的子系统有以下这些:CPUMemoryIONetwork下面是常用的监测工具Linux 系统包括很多子系统(包括刚刚介绍的CPU,Memory,IO,Network,等&…

火爆 GitHub!这个 AI 神器究竟有什么魅力?
图像分割(image segmentation)技术是计算机视觉领域的一个重要的研究方向,图像分割是计算机视觉中的一个关键过程。它包括将视觉输入分割成片段以简化图像分析。片段表示目标或目标的一部分,并由像素集或“超像素”组成。图像分割…

HTTP 状态代码
HTTP 状态代码 如果向您的服务器发出了某项请求要求显示您网站21kaiyun.com上的某个网页(例如,当用户通过浏览器访问您的网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求。 此状态代码提供了有关请求状态的信…

[Web 开发] 定制IE下载对话框的按钮(打开/保存)
下图常见的IE 下载对话框, 上面有3个主要按钮: Run (打开), Save(保存), Cancel (取消) 在某些情况下, 你不希望用户点击“Run” 按钮 或者 “Sav…

25 年汽车技术老兵亲述,自动驾驶新驶向
受访者 | 俞斌 记者 | 伍杏玲 出品 | AI科技大本营(ID:rgznai100) 在 IT 发展长河中,我们面对过不同的技术风口,历史终究大浪淘沙沉者为金。其中“自动驾驶”似乎是经久不衰的“风口”,成为人类的终极追求之一…

当你学了现在的忘了前面的
我怀疑我的智商应该不是很高,要不然我也不会学的如此狼狈。虽然我总是能很好的理解现在所学的知识点,但是我就是记不住,当下次再次需要上次的知识点来解决问题的时候,我总是忘的差不多了,要不就是没把握和对不对的问题…

HTTP referer
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够…

设置grep高亮显示匹配项
grep是个非常高频的命令,我们通过给它设置别名,来把匹配项区分出来,这样可以更直观。 设置前: 12[rootzabbix ~]# /sbin/ifconfig eth0 | grep inet addr inet addr:192.168.88.66 Bcast:192.168.88.255 Mask:255.255.255.0 设置…

PHP之源码目录结构
PHP之所以能在web开发语言中排名靠前,不仅仅是因为语法简单,上手容易。我个人认为更多是因为其语言本身的:模块的易扩展性,可维护性以及内存安全管理等特点。写过PHP的程序员不一定都知道:PHP是如何执行的?…

SSAS系列——【07】多维数据(查询Cube)
原文:SSAS系列——【07】多维数据(查询Cube)1、什么是MDX? MDX叫做“多维表达式”,是一种查询语言,是一种和SQL类似的查询语言,它基于 XML for Analysis (XMLA) 规范,并带有特定于 SQL Server A…

什么是图数据库?图数据库实践与创新浅析
近日,中国工程院院士,清华大学计算机科学与技术系教授郑纬民先生,在人民日报发表文章《把握图数据库自主创新机遇》,建议国内科研学者和工程人员,要在图数据库的理论研究与工程研发上坚持自主创新道路,确保…

C# 对应 Oracle 存储过程 的 SYS_REFCURSOR 应该 传入什么类型的参数?
Oracle中scott用户下创建存储过程:(注:从9i开始有了sys_refcursor这种类型,在以前的Oracle版本中需要使用REF CURSOR,并且还需放在一个程序包中)create or replace procedure sp_getdept(result out sys_refcursor)asbeginopen result for se…

Fedora 15 安装与配置一览
Fedora 15 将于2011.5.24日发布,今日离正式版发布还有4天。笨兔兔这里提前给大家支招用好Fedora 15。下面是笨兔兔在安装、配置Fedora 15 过程中的小结,希望给大家配置自己的Fedora 15 带来方便。仅供参考,如有错误,敬请指出。 『…

Win7封装无损廋身清单
整理了一下,大致如下。清理不会伤及系统功能。娱乐性的东西建议删除,因为这些不是功能性的,包括示例视频、示例音乐和一些主题图片以及一些系统自带的游戏。另外一些属于安装过程中产生的,重装封装不需要这些文件,对比…

苹果新算法已混进 iOS 14.3!CSAM 检测技术再遭网友争议
整理 | 禾木木、郑丽媛 出品 | AI科技大本营(ID:rgznai100) 苹果宣布即将推出 CSAM 检测系统时,遭到了 4000 多个组织及个人的公开反对,他们质疑苹果会破坏用户隐私和端到端加密机制。一位 Reddit 用户发现 CSAM 算法竟已被悄悄地…