原理:


要进行自动安装的主机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,说明成功了。

最新文章

  1. Git权威指南 书摘
  2. iOS开发之微信聊天工具栏的封装
  3. Tomcat服务相关
  4. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
  5. Android之drawable state各个属性详解
  6. Nginx如何隐藏index.html
  7. Silverlight 动画详解
  8. ios摇一摇截屏代码
  9. Investment_完全背包
  10. js返回上一页并刷新的多种方法
  11. DataRow数组 转 datatable
  12. ajax_jsonp —— 跨域
  13. 时间处理总结(一).net
  14. LCIS(线段树区间合并)
  15. dwz+jquery+fileupload+springmvc实现文件上传 及图片预览
  16. POJ 3421 X-factor Chains
  17. C# 导出Excel的示例(转)
  18. Codeforces Round #305 (Div. 2) A. Mike and Fax 暴力回文串
  19. 如何学习 JavaScript?
  20. Linux下网络排查之ping|traceroute|mtr工具(zz)

热门文章

  1. pclint在VS2013中的配置
  2. 2016.6.30 java.util.concurrent.ExecutionException java.lang.OutOfMemoryError
  3. 通过项目了解JAVA注解
  4. Angular 学习笔记——自定义标签
  5. vue笔记二
  6. Architects Must Be Hands On
  7. Font Awesome入门教程
  8. sqlserver 中EXEC和sp_executesql使用介绍
  9. WCF实现上传图片功能
  10. Linux下画原理图和PCB