centos7 PXE自动安装环境搭建
原理:
要进行自动安装的主机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自动安装环境搭建的更多相关文章
- DHCP服务+PXE自动安装系统
DHCP服务+PXE自动安装系统 DHCP安装 安装DHCP服务器 yum install dhcp -y 安装完dhcp默认无法启动,需要编辑配置文件设置分配地址范围等相关信息,服务器自身IP地址要 ...
- PXE自动装机
PXE自动装机 一.搭建PXE远程安装服务器 PXE自动装机需要桌面模式 假如不是桌面模式安装的PXE需要安装桌面模式软件包 yum groupinstall "Desktop" ...
- centos7下git服务器端搭建
git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...
- centos7下git服务器端搭建(转)
git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...
- kickstart半自动安装centos系统与pxe自动安装centos系统
一.kickstart半自动安装centos系统 关闭防火墙,关闭selinux,使用system-config-kickstart生成kickstart配置文件,启动xmanger-Passive ...
- 自动化安装操作系统(Centos7+PXE+Cobbler+kickstart)
一.简介 PXE称作是一种引导方式而不是安装方式似乎更加准确,PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动,但是有一个前提 ...
- PXE 自动安装物理机 (DHCP服务由路由提供, 不能再配置)
目录 1. PXE 自动安装物理机 (DHCP服务由路由提供, 不能再配置) 1.1. 需要的软件 1.2. 启动 proxy dhcp 服务 1.3. 关键的几个配置文件 PXE 自动安装物理机 ( ...
- centos7+nginx+rtmp+ffmpeg搭建流媒体服务器(保存流目录与http目录不要随意配置,否则有权限问题)
搭建nginx-http-flv-module升级代替rtmp模块,详情:https://github.com/winshining/nginx-http-flv-module/blob/master ...
- centos7.3使用squid搭建代理服务器
centos7.3使用squid搭建代理服务器 1 安装 yum install squid 2 编辑 vi /etc/squid/squid.conf 3 设置 最底部增加 如下http_acces ...
随机推荐
- OC第五课
主要内容:字典.集合.数组排序 一.字典 演示样例: name : @" 张三 " .sex:@" 男 " ; age :@" 21 " ; ...
- 倍福TwinCAT(贝福Beckhoff)基础教程2.1 TwinCAT常见类型简介
常见数据类型可以参考EXCEL表格的内容,在准备值中输入非法数据,然后回车会有错误提示(例如BYTE数据输入256) 右击可以切换二进制或十进制显示,wData5可以被挨个采集每个位上的数据,也可 ...
- bootstrap之PressKeyCode&&LongPressKeyCode
PressKeyCode package io.appium.android.bootstrap.handler; import com.android.uiautomator.core.UiDevi ...
- 【Excle数据透视表】如何为一个字段添加多种分类汇总方式
解决方案1 右键单击人员分类字段包含的任意单元格→右键→字段设置→自定义→(最大值.最小值) 解决方案2 单击人员分类→分析→字段设置
- Ubuntu下安装配置和卸载Tomcat
转载自:http://zyjustin9.iteye.com/blog/2177291 注:此处不采用apt-get安装,因为这种方式安装后,tomcat安装目录会到处都是,像天女散花一样.此处采取下 ...
- DbVisualizer出现下列错误:Could not read XML file
数据库连接工具对于我们软件测试工程师来说是日常的工具,一旦关键时刻报些莫名的错误,相信大家很是苦恼.当然,各公司数据库连接工具各异,像DbVisualizer.PLsql.sqldeveloper.T ...
- LBS 附近的人
1 http://www.infoq.com/cn/articles/depth-study-of-Symfony2 2 http://lbsyun.baidu.com/
- c# 获取毫秒值,时间戳
获取时间戳(秒) (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 获取时间戳(毫秒) (DateTime. ...
- centos7 中文输入法设置
安装centos7 后,他有自带的中文输入法安装包找到 applications->systemTools->settings->region&language 2:在 in ...
- 为什么jdbc中的resultset只能取一次去第二次就报错了
引用 6 楼 的回复: 好吧各位,应该写getInt(1)但是我要问的是为什么第二次用会出错 啊,好古老的一个问题... 第二次出错的原因,是因为你创建Statement的时候,没有指定结果集(游标 ...