原理:


要进行自动安装的主机A,加电启动时以网卡为第一启动设备

1.启动时会向网络广播,找到dhcp服务器B请求分配IP地址信息,服务器B除了给其分配基本的IP信息(ip、netmask、geteway、dns、domain,主要为前2者),并给出pxe引导文件地址

2.主机B根据A提供的pxe相关文件的tftp地址下载这些文件然后启动这个引导装载器(为什么用tftp而不用ftp因为前者是后者的精简版,访问资源不用用户认证!!)

3.主机B在引导装载器的命令行交互模式中告诉其kickstart文件的http地址,由引导装载器下载此文件 (本文将该ks地址写入到引导装载器的配置文件中,从而略去命令行的交互)

4.引导装载器根据kickstart上提供的主机安装步骤以及centos7安装包所在的http地址来完成自动安装

实验环境:


1.CentOS7光盘镜像一张

2.主机A(centos7)、B(centos6或7)、C(centos7)位于同一网络中

主机A:192.168.56.6

dhcp服务:

提供地址:192.168.56.0/24内分配192.168.56.20-254

提供pxe启动服务器文件地址 : 192.168.56.6 pxelinux.0

tftp服务:

提供pxe文件、引导文件(含图形界面),tftp服务器在数据目录/var/lib/tftpboot/提供pxelinux.0文件和centos7安装光盘上的相关文件

.

├── boot.msg

├── initrd.img

├── pxelinux.0

├── pxelinux.cfg

│   └── default

├── splash.jpg

├── vesamenu.c32

└── vmlinuz

http服务

提供软件包库: centos7安装盘的内容放在/var/www/html/centos/7/iso/x86_86

提供kickstart文件: ks文件放在/var/www/html/centos/7/iso/ks_c7_x86_64.cfg

主机B:192.168.56.12

负责验证主机A上的网络服务是否正常

测试dhcp服务是否正常

dhclient -d 192.168.56.6

测试pxe引导文件是否能下载

tftp 192.168.56.6 -c get pxelinux.0

测试软件包库地址:

elinks http://192.168.56.6/centos/7/iso/x86_86

测试kickstart文件地址:

elinks http://192.168.56.6/centos/7/iso/ks_c7_x86_64.cfg

主机C:要进行自动安装centos7的主机

实验步骤:


一、主机A的环境准备


1.关闭selinux服务和防火墙服务

# grep "^SELINUX=" /etc/selinux/config

SELINUX=disabled

# systemctl disable firewalld

# systemctl stop firewalld

2.设置yum源,以便安装其他服务软件

# cat /etc/yum.repos.d/CentOS-dvd.repo

[dvd]

name=CentOS-7 - dvd

baseurl=file:///media/dvd

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

# tail -1 /etc/fstab

/dev/cdrom /media/dvd iso9660 defaults,ro 0 0

在第一个的光驱插入centos7的安装盘,然后执行

# mount -a

如下看到挂载已成功

# mount | grep /media

/dev/sr0 on /media/dvd type iso9660 (ro,relatime)

二、主机A搭建DHCP服务,并用主机客户端B测试


a.安装和配置DHCP

# yum -y install dhcp

# vim /etc/dhcp/dhcpd.conf

# cat /etc/dhcp/dhcpd.conf

##########################dhcpd.conf文件开始##########################

#设置客户端的搜索域名,也就是/etc/resolv.conf中的search指令

option domain-name "tangsw.comg";

#设置客户端的DNS

option domain-name-servers 192.168.56.6, 192.168.56.11;

#IP地址的最小、大租约时间

default-lease-time 600;

max-lease-time 7200;

#日志设置

log-facility local7;

#给客户端分配的地址段,以及指定客户机从哪个地址下载pxe文件来启动引导装载器

subnet 192.168.56.0 netmask 255.255.255.0 {

range 192.168.56.20 192.168.56.254;

option routers 192.168.56.6;

next-server 192.168.56.6;

filename "pxelinux.0";

}

##########################dhcpd.conf文件开始##########################

b.启动并设置开机启动

# systemctl start dhcpd

# systemctl enable dhcpd

c.用主机B验证能否从服务器A获取IP租约信息

[root@localhost ~]# yum install -y dhclient

[root@localhost ~]# dhclient -d eth0

Internet Systems Consortium DHCP Client 4.1.1-P1

Copyright 2004-2010 Internet Systems Consortium.

All rights reserved.

For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/08:00:27:85:73:30

Sending on   LPF/eth0/08:00:27:85:73:30

Sending on   Socket/fallback

DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x4b5bbd38)

DHCPACK from 192.168.56.6 (xid=0x4b5bbd38)

bound to 192.168.56.104 -- renewal in 277 seconds.

^C

从输出的信息可以看到eth0能从192.168.56.6获取到IP 192.168.56.104

三、主机A上tftp服47务的安装,准备tftp要提供文件,以及主机B客户端测试、主机C测试


1. 安装tftp,tftp是依赖于超级守护进程xinetd的,由xinetd负责管理tftp的启动和运行

# yum -y install tftp-server

...........(略去).........

================================================================================

Package             Arch           Version                   Repository   Size

================================================================================

Installing:

tftp-server         x86_64         5.2-11.el7                dvd          44 k

Installing for dependencies:

xinetd              x86_64         2:2.3.15-12.el7           dvd         128 k

...........(略去).........

tftp的配置文件以及数据文件路径

# rpm -ql tftp-server | egrep "^(/etc|/var)"

/etc/xinetd.d/tftp

/var/lib/tftpboot

2.设置xinetd和tftp开机启动

# systemctl enable xinetd

# systemctl start xinetd

# vim /etc/xinetd.d/tftp

# grep disable /etc/xinetd.d/tftp

disable = no

3..准备pxelinux.0 (来自syslinux包)

# yum -y install syslinux

# rpm -ql syslinux | grep '/pxelinux.0'

/usr/share/syslinux/pxelinux.0

# cd /var/lib/tftpboot/

[root@c7 tftpboot]# cp /usr/share/syslinux/pxelinux.0 .

4.准备pxe引导相关的引导装载器

[root@c7 tftpboot]# mkdir pxelinux.cfg

[root@c7 tftpboot]# cp /media/dvd/images/pxeboot/{initrd.img,vmlinuz} .

[root@c7 tftpboot]# cp /media/dvd/isolinux/{boot.msg,vesamenu.c32,splash.png} .

[root@c7 tftpboot]# cp /media/dvd/isolinux/isolinux.cfg pxelinux.cfg/default

[root@c7 tftpboot]# vim /media/dvd/isolinux/isolinux.cfg pxelinux.cfg/default

label linux

menu label ^Install CentOS 7

kernel vmlinuz

append initrd=initrd.img inst.ks=http://192.168.56.6/centos/7/iso/ks_c7_x86_64.cfg ip=dhcp

#  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet ,上一行对本行(源文件)做了修改,告诉引导装载器从哪里下载ks文件进行自动安装。

5.通过工具tftp测试客户端B能否正常访问服务器A上的tftp服务

注意:客户端要关闭防火墙,否则可能tftp能连接上去但是下载不了文件

[root@localhost ~]# yum -y install tftp

[root@localhost ~]# tftp 192.168.56.6 -c get pxelinux.0

如果pxelinux.0文件能下载,则表示TFTP服务正常

6.测试主机c能否正常通过网络引导(主机A上提供的DHCP以及TFTP)

设置主机c的网卡设备为第一启动设备,加电开机,如果能看到安装引导界面则表示DHCP、TFTP服务正常,并且用于pxe引导的文件部署正常。

四、主机A上http服务的安装,部署安装源,部署kickstart文件,以及主机B客户端测试、主机C测试


1.安装httpd服务,设置开机启动,启动该服务

# yum -y install httpd

# systemctl enable httpd

ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

# systemctl start httpd

2.在httpd服务上部署pxe安装的安装包库

# mkdir -p  /var/www/html/centos/7/iso/x86_64

# vim /etc/fstab

# tail -2 /etc/fstab

/dev/cdrom /media/dvd iso9660 defaults,ro 0 0

/media/dvd /var/www/html/centos/7/iso/x86_64 none bind,ro 0 0

# mount -a

关盘镜像先挂载在/media/dvd作为服务器A的yum源,再通过该目录绑定到A的httpd目录,作为pxe自动安装的安装包,一举两得

在测试换

3.通过工具elinks,让客户端B测试服务器A上所部署的安装源是否正常

[root@localhost ~]# yum -y install elinks

[root@localhost ~]# elinks http://192.168.56.6/centos/7/iso/x86_64

4.在httpd服务上部署kickstart文件

# yum -y install system-config-kiskstart

# system-config-kiskstart &

如果是用xshell之类的远程登录工具,则需要配置才能显示system-config-kiskstart命令弹出的窗口,否则在A的桌面环境执行该命令。

在这个kickstart文件创建的程序中导入/root/anacodor-ks.cfg,基于这个文件来修改,然后将修改后的文件放到http的目录,保存路径为/var/www/html/centos/7/iso/ks_c7_x86_64.cfg,并用ksvalidator校验语法是否正确

# ksvalidator /var/www/html/centos/7/ks_c7_x86_64.cfg

# cat /var/www/html/centos/7/ks_c7_x86_64.cfg

##########################ks_c7_x86_64.cfg文件开始##########################

[root@c7 iso]# cat /var/www/html/centos/7/iso/ks_c7_x86_64.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Install OS instead of upgrade

install

# X Window System configuration information

xconfig  --startxonboot

# Keyboard layouts

# old format: keyboard us

# new format:

keyboard --vckeymap=us --xlayouts='us'

# Reboot after installation

reboot

# Root password

rootpw --iscrypted $1$KHH8cH8b$1O7rrwphchrB2AE0GGku/0

# System timezone

timezone Asia/Shanghai --isUtc

# Use network installation

url --url="http://192.168.56.6/centos/7/iso/x86_64"

repo --name="CentOS" --baseurl="http://192.168.56.11/centos/6/iso/x86_64" --cost=100

# System language

lang en_US

# Firewall configuration

firewall --disabled

# Network information。如果根据安装主机的网卡数来重复指令的次数很可能安装不了

network  --bootproto=dhcp --device=link

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

# Run the Setup Agent on first boot

firstboot --enable

# SELinux configuration

selinux --disabled

ignoredisk --only-use=sda

# System bootloader configuration

bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda

autopart --type=lvm

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

%packages

@base

@core

@desktop-debugging

@dial-up

@directory-client

@fonts

@gnome-desktop

@guest-agents

@guest-desktop-agents

@input-methods

@internet-browser

@java-platform

@multimedia

@network-file-system-client

@networkmanager-submodules

@print-client

@x11

kexec-tools

%end

##########################ks_c7_x86_64.cfg文件结束##########################

5.通过工具elinks,让客户端B测试服务器A上所部署的安装源是否正常

[root@localhost ~]# elinks http://192.168.56.6/centos/7/iso/ks_c7_x86_64.cfg

验证


将主机C在bios设置第一启动设备为网卡,开机后显示引导界面,选择"Install CentOS 7",按enter,如果能自动安装centos7,说明成功了。

centos7 PXE自动安装环境搭建的更多相关文章

  1. DHCP服务+PXE自动安装系统

    DHCP服务+PXE自动安装系统 DHCP安装 安装DHCP服务器 yum install dhcp -y 安装完dhcp默认无法启动,需要编辑配置文件设置分配地址范围等相关信息,服务器自身IP地址要 ...

  2. PXE自动装机

    PXE自动装机 一.搭建PXE远程安装服务器 PXE自动装机需要桌面模式 假如不是桌面模式安装的PXE需要安装桌面模式软件包 yum groupinstall "Desktop" ...

  3. centos7下git服务器端搭建

    git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...

  4. centos7下git服务器端搭建(转)

    git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...

  5. kickstart半自动安装centos系统与pxe自动安装centos系统

    一.kickstart半自动安装centos系统 关闭防火墙,关闭selinux,使用system-config-kickstart生成kickstart配置文件,启动xmanger-Passive ...

  6. 自动化安装操作系统(Centos7+PXE+Cobbler+kickstart)

    一.简介 PXE称作是一种引导方式而不是安装方式似乎更加准确,PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动,但是有一个前提 ...

  7. PXE 自动安装物理机 (DHCP服务由路由提供, 不能再配置)

    目录 1. PXE 自动安装物理机 (DHCP服务由路由提供, 不能再配置) 1.1. 需要的软件 1.2. 启动 proxy dhcp 服务 1.3. 关键的几个配置文件 PXE 自动安装物理机 ( ...

  8. centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)

    搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master ...

  9. centos7.3使用squid搭建代理服务器

    centos7.3使用squid搭建代理服务器 1 安装 yum install squid 2 编辑 vi /etc/squid/squid.conf 3 设置 最底部增加 如下http_acces ...

随机推荐

  1. 【重点突破】—— Nodejs+Express+MongoDB的使用基础

    前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发.这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识. 一.Express ...

  2. Codeforces #282 div 1 C Helping People 题解

    CF 282 C Helping People 题解 [原题] time limit per test 2 seconds memory limit per test 512 megabytes in ...

  3. 往MySQL数据库datetime类型字段中插入数据库的当前时间

    代码: StringBuilder sb = new StringBuilder(); sb.append(" insert into uosdetailfile ("); sb. ...

  4. IOS 开发环境,证书和授权文件是什么?

    一.成员介绍 1.    Certification(证书) 证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种: 1)    Developer Certification(开发证书) 安装 ...

  5. Android 珍藏(一)

    1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.ACTI ...

  6. Linux学习笔记 (三)Vi文本编辑器

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  7. python——双下划线与python命名机制

    python中双下划线的作用(1)所有以双下划线开头的成员是私有的(2)python对于私有变量是会进行扎压(mangling)的,扎压规则是原始定义:class A():    __function ...

  8. Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序执行生命周期中,使用了单类模式的类仅仅能有一个实例对象存在。

                                                                                                        ...

  9. AspectJ风格的Aop切点表达式

    execution(*com.aptech.jb.epet.dao.hibimpl.*.*(..)) 这样写应该就可以了,这是com.aptech.jb.epet.dao.hibimpl 包下所有的类 ...

  10. python单元测试框架 pyunit

    概况 系统要求 使用PyUnit构建自己的测试 安装 测试用例介绍 创建一个简单测试用例 复用设置代码:创建固件 包含多个测试方法的测试用例类 将测试用例聚合成测试套件 嵌套测试用例 测试代码的放置位 ...