今天我们使用PXE+Kickstart+TFTP+DHCP+FTP实现无人值守安装服务器。

一、无人值守所需服务介绍:

1)PXE

  1. PXE,远程引导技术
  2. 功能:使计算机通过网络启动
  3. 硬件要求:客户端的网卡必须支持PXE

2)Kickstart

  1. Kickstart,一种无人值守自动部署安装操作系统的方式
  2. 核心技术:自动应答文件
  3. 功能:系统通过执行自动应答文件中的内容进行自动安装系统

3)TFTP

  1. TFTP,用于服务器之间进行简单文件传输的协议
  2. 端口号:69
  3. 默认共享路径:/var/lib/tftpboot/
  4. 本次实验作用:共享PXE相关文件,比如:系统引导文件(客户端通过TFTP取这些文件)

4)DHCP

给客户机分配IP地址

5)FTP

  1. FTP,文件传输协议
  2. 默认共享路径:/var/ftp/
  3. 本次实验作用:共享ISO镜像文件及Kickstart自动应答文件

6)运行流程图

(初学者可能目前不太理解这个图,没关系咱继续往下看。随着后续的学习您会理解以下流程图的)

二、实验介绍

本次实验采用all-in-one模式,即 我们将FTP、DHCP、TFTP服务全部署在一台服务器上。

1)服务器介绍:

  1. qll251,CentOS7系统双网卡,192.168.1.251 和 192.168.2.251(2.251属于LAN1 用于PXE网络)
  2. qll252,CenOS7系统,网卡选择LAN1

2)实验要求

  1. 关闭服务器防火墙及禁用selinux
  2. 服务器能使用yum 安装软件,本地yum源或网络yum源均可

三、开始部署环境

1)部署FTP服务

[root@qll251 ~]# yum -y install vsftpd    #安装ftp服务
[root@qll251 ~]# systemctl start vsftpd #启动ftp服务
[root@qll251 ~]# systemctl enable vsftpd #设置ftp服务开机自启动
## 到此,ftp部署已完成。共享路径:/var/ftp

2)部署DHCP服务

  1. 安装dhcp服务
[root@qll251 ~]# yum -y install dhcp
  1. 修改dhcpd.conf配置文件
[root@qll251 ~]# vim  /etc/dhcp/dhcpd.conf

  1. 启动dhcp服务并设置开机自启动
[root@qll251 ~]# systemctl start dhcpd
[root@qll251 ~]# systemctl enable dhcpd

3)部署tftp-server服务

  1. 安装tftp-server所需服务
[root@qll251 ~]# yum -y install tftp-server
[root@qll251 ~]# yum -y install xinetd #Xinetd管理tftp工作
  1. 修改TFTP服务的配置文件

  2. 启动tftp服务,并设置开机自启动
[root@qll251 ~]# systemctl start tftp && systemctl enable tftp
[root@qll251 ~]# systemctl start xinetd && systemctl enable xinetd

4)制作kickstart自动应答文件

  1. 安装kickstart
[root@qll251 ~]# yum -y  install system-config-kickstart
  1. 在终端上执行system-config-kickstart

注意:如果用终端软件比如MobaXerm,执行上面命令无法弹出选择框,需要您安装gdm

yum -y install gdm

(您直接在带有图形化界面的机器上执行命令也是一样的)

  1. 进入kickstart配置向导,先完成“基本配置”

  1. 选择安装方法



5. 进行分区



6. 网络配置、验证、防火墙配置、显示配置。您按需选择就行。我就不在此演示了

7. 软件包选择



8. 设置安装后的脚本(可选项)



9. 保存自动应答文件

到目前为止,FTP,DHCP,TFTP服务及kickstart应答文件都已准备完毕。接下来我们配置PXE启动所需的相关文件

四、准备PXE启动所需的文件

先挂载我们所需的光盘镜像

[root@qll251 ~]# mount /dev/sr0 /media  #系统镜像挂载至/media

1)ftp需要共享出去的文件

共享目录:/var/ftp;需要共享两个

  1. /var/ftp/ks.cfg (制作应答文件时,已保存该文件)
  2. 光盘启动镜像
#我们在制作自动应答文件的第四步中指定光盘文件目录是:/var/ftp/pub
[root@qll251 ~]# cp -r /media/* /var/ftp/pub

2)tftp需要共享出去的文件

[root@qll251 ~]# yum -y install syslinux
[root@qll251 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #拷贝的第一个文件
[root@qll251 ~]# cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/ #拷贝的第二个文件
[root@qll251 ~]# cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/ #拷贝的第三个文件
[root@qll251 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@qll251 ~]# cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #拷贝的第四个文件,拷贝时,命令为default
[root@qll251 ~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default #设置default文件权限:644

tftp共享目录:/var/lib/tftpboot;需要共享4个文件

  1. pxelinux.0 #网络装机需要用到pxelinux.0;由yum install syslinux获得的
  2. initrd.img:#其实就是ramdisk的映像文件(内存模拟磁盘)。举个例子:主机系统坏掉了,我们使用win pe启动,你会发现主机就算没有硬盘也能正常运行
  3. vmlinuz:包含一个最小功能的内核,通常先执行vmlinuz,之后加载initrd.img文件,最后加载根分区。
  4. isolinux.cfg重命名为default

3)修改default配置文件

[root@qll251 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
1 default linux #将第一行的 default改成default linux
61 label linux
62 menu label ^Install CentOS 7
63 kernel vmlinuz
64 append initrd=initrd.img inst.repo=ftp://192.168.2.251/pub inst.ks=ftp://192.168.2.251/ks.cfg
##指定安装程序通过FTP服务访问系统镜像及ks.cfg应答文件

五、执行批量安装服务器

1)客户机的BIOS启动顺序调整为网络优先。或者开机Log界面按F12选择从网络启动

2)开始无人值守安装

以下步骤全部为系统自动执行,无需人为干预,只需等待安装完成即可

我们看下它都自动执行了哪些操作









最后我们通过预定义的root密码登录,可以看到事先写的测试脚本“hello world”已生效。系统分配的IP是192.168.2.3



好了,以上便是今天分享的批量安装服务器的内容。

更多IT技术,请微信搜索公众号秦露露或者扫描下方二维码关注

PXE实现无人值守批量安装服务器的更多相关文章

  1. 【Linux】使用 PXE+Kickstart 无人值守批量安装系统

    一.PXE背景知识 通过 PXE+DHCP+TFTP+VSftpd+Kickstart 服务程序搭建出无人值守安装系统,从而批量部署客户机系统. PXE(Preboot eXecute Environ ...

  2. pxe+kickstart无人值守批量安装linux

    一.原理和概念: 1.PXE:         PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 ...

  3. pxe+kickstart实现无人值守批量安装linux

    pxe+kickstart实现无人值守批量安装linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端:      ...

  4. (转)Cobbler无人值守批量安装Linux系统

    本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...

  5. kvm cobbler无人值守批量安装操作系统

    kvm cobbler无人值守批量安装操作系统 cobbler:一个自动网络安装系统的工具,集成PEX.dhcp.dns.tftpd.sync等服务.可以供大家管理安装操作系统 kvm:Linux系统 ...

  6. pxe+kickstart自动化批量安装系统详解-技术流ken

    前言 pxe+kickstart是一款可以实现自动化批量安装系统的服务,比较经典,下面将详细介绍此服务的安装和使用. 系统环境准备 系统版本:CentOS release 6.7 (Final) 内网 ...

  7. cobbler无人值守批量安装Linux系统

    本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...

  8. 利用cobbler无人值守批量安装centos

    准备: 至少两台机器,分别用作cobbler的服务端和安装测试端 准备一个iso的安装文件,最好是4G多的那个dvd包,以前用网易源上那个centos 6.4 x86_64 通过xen安装时就报错:N ...

  9. PXE+kickstart无人值守安装CentOS 7

    kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...

随机推荐

  1. 如何监控 Elasticsearch 集群状态?

    Marvel 让你可以很简单的通过 Kibana 监控 Elasticsearch.你可以实时查看你 的集群健康状态和性能,也可以分析过去的集群.索引和节点指标.

  2. (转载) MOS管区分NP沟道

    三极管是流控型器件,MOS管是压控型器件,两者存在相似之处.三极管机可能经常用,但MOS管你用的可能较少.对于MOS管先抛出几个问题: 如何区分P-MOS和N-MOS:   如何区分MOS的G.D.S ...

  3. 技能篇:linux服务性能问题排查及jvm调优思路

    只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求.最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的.如果你是负责中间件或 ...

  4. Flex 布局新旧混合写法详解(兼容微信)

    flex 是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 flex 的支持都 ...

  5. 一个html标签到底包含了多少信息(1)

    先来看一段代码: var dom = document.querySelector('body'); for(var i in dom){ console.log(i,dom[i]) } 可以看到很多 ...

  6. HTML+CSS基础课程-imooc-【更新完毕】

    6-1 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏览器内的显示样式,如文字大小.颜色.字体加粗等 ...

  7. mpvue打包没有app.json等配置文件的解决方法

    问题 一早上折腾了1个小时,小程序始终提示查找不到'app.json'文件.mpvue重新打包,光生成内容文件无配置文件. 解决办法 出错原因:版本问题 只需要把packpage.json里的mpvu ...

  8. .net大作业

    登录页面: 源代码:当下较忙,后续会传至github上

  9. Java/C++实现访问者模式---购物车

    在我们课堂上的"购物车"的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包. 类图: Java代码: public interface Product { void ac ...

  10. Android打开数据库读取数据

    打开数据库读取数据 private MyDatabaseHelper dbHelper; dbHelper=new MyDatabaseHelper(this,"List.db", ...