前言
   如果要给很多台客户端主机安装操作系统,要是每一台都拿张安装光盘一台一台主机的去装系统那就太浪费时间和精力了。在生产环境中也不实际,要实现为多台主机自动安装操作系统,那我们怎么实现自动化安装呢,这就要来讲讲PXE了,PXE就是为这种给多台主机自动化安装操作系统而生的,那接下来我们就来基于DHCP完成自动化为多台主机安装操作系统。

正文
   要实现自动安装之前先确保几个包已经安装好了:
   1、DHCP:动态主机配置协议、他是使用UDP协议工作的
   2、tfpt-server:这个是服务器端提供需要的安装的包
   3、xinetd:这个是唤醒tftp这个服务的服务
   4、syslinux:这个程序包是提供pxelinux.0
   5、准备安装树、就是要安装的各种rpm包、centos6.5安装光盘

基本原理及工作流程:
   首先,在客户端主机的网卡要支持网络引导,当开机时网卡就会激活当中的程序,自行通过网络向DHCP请求IP地址,并配置在自己的网卡上。
   其次,DHCP服务器回应给我们的主机,分配了IP地址,掩码,网管等网络相关参数,再让DHCP服务器告诉我们的客户端主机tftp服务器在什么位置。
   接着,客户端主机就去请求tftp服务器,当然,这里的DHCP服务器和tftp服务器可以是同一台,也可以不是同一台,看情况而定。
   而后,tftp服务器就会给客户端主机提供一个pxe的文件、这个文件就是pxelinux.0,他相当于我们的bootloader、而这个文件是由syslinux这个程序包提供的。
   再则,客户端主机利用tftp服务器提供的pxelinux.0这个文件,再次尝试到tftp服务器上获取内核,因为要启动安装就要启用引导内核。
   之后,当引导内核启动后,客户端主机通过改名后的default(由pxelinux.0改名而来)文件成功的引导Linux安装内核后,通过httpd服务获取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
   最后,将ks.cfg文件下载回来后,通过该文件找到ks.cfg文件的配置请求下载安装过程所需要的软件包,这样就可以实现生动化安装了。

自动化安装过程实现:

1、将光盘做成yum源:

# cd /etc/yum.repos.d/
# vim media.repo

[base1]
name=media
baseurl=file:///mnt
enabled=1
gpgcheck=0
cost=100

# yum clean all

2、安装并配置DHCP和httpd服务

# yum -y install dhcp httpd

安装好dhcp之后、就去配置dhcp服务里的一些参数了、能让dhcp服务告诉客户端主机tftp服务器在什么位置,用net-server IP设定、还要设定文件名为pxelinux.0、这些设定可以放在全局、也可以放在某个子网中,复制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample文件替换原配置文件/etc/dhcp/dhcpd.conf、然后编辑/etc/dhcp/dhcpd.conf
   # cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
   # vim /etc/dhcp/dhcpd.conf

将subnet 10.152.187.0 netmask 255.255.255.0 {
}
段以后不是以#开头的内容注释掉
:,.$s/^[^#]/#&/g

:set nohlsearch  #去掉编辑器颜色

subnet 192.168.8.0 netmask 255.255.255.0 { # 定义网段、掩码range 192.168.8.210 192.168.8.215; # 地址池option routers 192.168.8.254; # 网关next-server 192.168.8.42; # tftp服务器filename "pxelinux.0";
}

配置完成后,启动DHCP服务,并将它设为开机自启动、也重启一下dhcp服务
# service dhcpd restart
# chkconfig dhcpd on
# chkconfig --list dhcpd
dhcpd          0:off1:off2:on3:on4:on5:on6:off

3、安装tftp服务

由于tftp服务由xinetd服务管理并由xinetd来唤醒的、所以也要安装xinetd服务、tftp-server是服务器端要安装的、tftp是客户端要安装的。

# yum -y install tftp-server
   # yum -y install xinetd
看一下安装完后生成的文件、有几个我们需要关注一下的:

然后启动这两个服务:
   # chkconfig tftp on
   # service xinetd restart

在这里我们应该挂载我们的安装光盘、我这里的安装光盘已经挂载好了:

# mount /dev/cdrom /mnt

4、准备自动安装系统需要的启动内核及其他文件

现在我们从刚挂载的光盘中开始复制内核文件以及init等一些文件到/tftp/lib/tftpboot目录下:

# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
# cp /mnt/isolinux/boot.msg /var/lib/tftpboot/
# cp /mnt/isolinux/splash.jpg /var/lib/tftpboot/
# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/


还要复制一个叫pxelinux.0这个文件、这个文件是由syslinux提供的、要安装这个程序包才会有这个文件,那我们就装吧!
# yum -y install syslinux

安装好了之后就复制这个文件吧:
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

在这里pxelinux.0取代了isolinux、他工作时要依赖的配置文件叫isolinux.cfg,虽然pxelinux.0取代了isolinux、但是依然需要一个配置文件、这样我们就复制isolinux.cfg到/var/lib/tftpboot/pxelinux.cfg/目录下、这里pxelinux.cfg目录要我们事先创建好、同时复制过来的配置文件要改名为default:

# cd /var/lib/tftpboot/
# mkdir pxelinux.cfg
# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

5、配置自动化安装kickstart文件

此时还需要系统能够自动化安装,我们还没有ks自动应答文件,也没有安装树、在安装时必须提供所依赖的各种rpm包,我们知道HTTP可以向外提供安装树、那就用到我们的httpd了、我这里已经安装好了httpd服务了,httpd的服务路径在/var/www/html下、这时我们可以绑定我们之前挂载好的光盘到这个目录,这样就有安装树了,当然在html下创建个目录会好点,这里我们创建成centos6.5:
   # mkdir /var/www/html/centos6.5
   # mount --bind /mnt/ /var/www/html/centos6.5/

启动httpd服务,并检查80端口是否正常启用:
# service httpd start
# ss -tnl

这样子文件共享服务就设定OK了,可以用:http://本机服务器IP地址/centos6.5
这样就可以访问得到了,安装树安装完成

接下来我们需要使用system-config-kickstart来定制我们的kickstart.cfg文件,建议也使用/root/anaconda-ks.cfg作为模板来进行

# cp anaconda-ks.cfg ks.cfg

安装kickstart工具
# yum install -y system-config-kickstart
启动配置工具进行配置
# system-config-kickstart &
验证文件是否OK
# ksvalidator ks.cfg

提供ks.cfg文件供参考(这个安装模板是基本服务软件包安装)
# cat ks.cfg

# Kickstart file automatically generated by anaconda.#version=DEVEL
install
url --url=http://192.168.8.42/centos6.5
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$Zo9OJ.qLqnykyR3A$oMfNInpeoBafrlems1hl/yb4Qast3q4AXTloF7ZdqbszFmYlG9cLYgobocFBsc11wGGy/nleM8liSRU.kqvsy0
reboot
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all
zerombr
textpart /boot --fstype=ext4 --size=300
part pv.008002 --grow --size=61440volgroup vg_node4 --pesize=8192 pv.008002
logvol /data --fstype=ext4 --name=data --vgname=vg_node4 --size=20000
logvol / --fstype=ext4 --name=root --vgname=vg_node4 --size=20000
logvol swap --name=swap --vgname=vg_node4 --size=4000
logvol /usr/local --fstype=ext4 --name=usr --vgname=vg_node4 --size=10000
logvol /web --fstype=ext4 --name=web --vgname=vg_node4 --size=20000repo --name="CentOS"  --baseurl=http://192.168.8.42/centos6.5 --cost=100%packages
@base
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
@workstation-policy
pax
oddjob
sgpio
device-mapper-persistent-data
samba-winbind
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
%end

而后我们就开始复制Kickstart文件了,这个文件在/root/目录下,叫anaconda-ks.cfg、我们把他复制到/var/www/html/下,改名为ks.cfg
# cp /root/ks.cfg /var/www/html/ks.cfg

由于这个文件只有管理员可以访问、复制过来之后要给个可读的权限他:
# chmod +r /var/www/html/ks.cfg

再编辑一个这个ks.cfg里面的配置跟我们设定好的一致、要不然找不到文件路径:
# vim /var/www/html/ks.cfg


怎么让启动时加载kickstart.cfg文件呢,那就要在/var/lib/tftpboot/pxelinux.cfg/default文件的label为linux下的append后面补上 ks=http://192.168.8.42/ks.cfg

编辑/var/lib/tftpboot/pxelinux.cfg/default
   # vim /var/lib/tftpboot/pxelinux.cfg/default


   改好后:wq!强行写入、退出即可

到这里我们已经配置好了我们的自动化安装环境接下来创建一个虚拟机来测试一下,看一下我们的自动化安装界面是否可以启动

步骤总结:

1、配置DHCP服务器
        # yum -y install dhcp
        # vim /etc/dhcp/dhcpd.conf
        自定义subnet、同时配置tftp服务的信息:
        subnet {
            ...
            next-server TFTP-SERVER-IP;
            filename "pxelinux.0";
        }

# service dhcpd restart

2、配置tftp-server
        # yum -y install xinetd tftp-server tftp
        # chkconfig xinetd on
        # chkconfig tftp on
        # service xinetd start
        # ss -unl | grep ":69"

3、准备安装树、也就是我们的安装包
        # mkdir /var/www/html/centos6.5
        # mount --bind /media/cdrom /var/www/html/centos6.5
        # service httpd start

4、复制文件到tftpboot下的文件
        # yum -y install syslinux
        # cp /mnt/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
        # cp /mnt/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/
        # cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
        # mkdir /var/lib/tftpboot/pxelinux.cfg
        # cp /mnt/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

5、提供kickstart文件
       直接从/root/anaconda-ks.cfg复制到/var/www/html目录下,注意:url及repo后的路径要修改为可用安装树的路径;

6、配置引导程序能自动加载此kickstart文件
        编辑/var/lib/tftpboot/pxelinux.cfg/default
        在label为linux项的append一行后附加:
            ks=http://HTTP_SERVER_IP/ks.cfg

最后,祝你测试成功!

转载于:https://www.cnblogs.com/reblue520/p/6239801.html

CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解相关推荐

  1. python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...

    职位描述 招聘要求: 至少满足下面三个招聘方向中的一条. 招聘主要方向: 一.python web高级讲师 职位要求: 1.精通Python,具有python web开发经验,有参与多个完整的项目生命 ...

  2. python 自动化运维 读取交换机数据_技术干货|数据中心自动化运维技术探索之交换机零配置上线...

    近几年来,互联网行业处于一个快速发展的快车道,一个又一个风口不断地涌向周边行业.共享单车的出现解决了人们出行***一公里的问题:新零售概念的提出,无人货柜的出现,更是将线上和线下的数据打通,优化了人们 ...

  3. linux云自动化运维基础知识23(DDNS服务配置)

    DDNS(Dynamic Domain Name Server)是动态域名服务的缩写. DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把 ...

  4. linux云自动化运维基础知识23(DNS服务)

    一.DNS概述 作用:提供域名解析服务 正向解析:域名--ip   eg:(www.baidu.com  -- 220.181.111.188) 反向解析:ip--域名   eg:(220.181.1 ...

  5. mysql master-user_【MySQL】MySQL5.6数据库基于binlog主从(Master/Slave)同步安装与配置详解...

    主从数据库同步原理 image.png 主从数据库同步工作原理(流程): 当主库的数据发生修改时,数据更改的记录将写入到主库的二进制文件中,从库此时将会调用一个IO线程读取主库的二进制文件,并与中继日 ...

  6. 自动化运维saltstack(资源)

    2019独角兽企业重金招聘Python工程师标准>>> 简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp ...

  7. 云端自动化运维学习笔记

    云端自动化运维 文章目录 **云端自动化运维** 一.云端自动化运维的基础 1.1云端自动化运维的概述 1.1.1自动化运维势在必行 1.1.2什么是成熟的自动化运维平台 1.2Python环境的搭建 ...

  8. 自动化运维工具-Ansible实战指南

    Ansible实战 前言 一.Ansible简介 1.ansible是什么? 2.ansible特点 3.ansible架构 主要模块 工作流程 命令执行过程 二.Ansible 配置 1 安装ans ...

  9. 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的服务器自动化配置! 来自:公众号talkwithtrend 1.企业运维现状与发展趋势 随着企业信息化的不断发展,运维人员需要面对 ...

最新文章

  1. JQuery 基础:8.节点操作
  2. 两个矩形重叠部分面积
  3. 在腾讯,如何做 Code Review?
  4. Javascript 调用XML制作连动下拉框
  5. WebStorm 8.0.3下简单运行pomelo项目
  6. Spring Security原理分析
  7. 开机先看广告!智能电视这流氓操作被整治,这家厂商败诉
  8. Latex 排版第一页出现空白页
  9. c语言无输出如何表示,c语言中的格式输出
  10. centos 7.5 安装ruby -bash: ruby: command not found
  11. 融入动画技术的交互应用——解压小游戏“蒲公英与星”
  12. 车辆ECU综合测试系统研究
  13. win10虚拟机搭建群晖nas碰到的一些问题
  14. vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
  15. 用selenium模拟登录豆瓣
  16. python百度地图和租房信息_python爬虫租房信息在地图上显示的方法
  17. git中submodule子模块的添加、使用和删除
  18. 启发式函数在A* 中的作用
  19. c语言中整形变量,C语言基本数据类型:整型(int)用法详解
  20. 重磅!马云正式宣布,国产手机操作系统要来了!

热门文章

  1. Linux 主机超全渗透测试命令汇总
  2. QT界面布局、系统信号和槽、启动进程、EDIT回车快捷键、正常信号和槽、QMessageBox、UIC使用(界面重新生成)
  3. windows 播放MP3音乐
  4. iOS之github第三方框架(持续更新)
  5. .Net学习笔记----2015-06-28(值类型和引用类型)
  6. 注意Entity中的Uptate
  7. 4.12L.02_CT Makefile
  8. SharePoint 2013 列表启用搜索
  9. 区别Ruby的require,load,和include
  10. dede设置当前栏目的样式