原理介绍
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
了解整个安装流程
1、pxe 启动,就去广告寻找dhcp 服务器获取ip 地址pxelinux.0 文件
2、client 通过tftp 连接到服务器,下载pxelinux.0 文件。
3、client 下载成功pxelinux.0 文件后,系统还会下载控制pxelinux.0 的配置文件,叫default。然后client 就会按照default 的配置来执行pxelinux.0 文件。
4、现在client 端会在获取一次IP 地址。并且根据DHCP 服务器配置文件找到kickstart 配置文件并下载。也是使用的tftp 协议。
5、pxelinux.0 文件定义的想服务器请求linux 内核,根文件系统之类的参数。运行这个文件,client 就会向服务器请求相关的文件并下载,都里使用的都是tftp 协议。
6、文件下载成功后,client 就会启动linux 内核,这就进入了我们安装时候看见的第一个图形界面,这个界面和自己安装看见的第一个画面一样,回车就是图形安装,输入text 就是文本安装那里。如果使用了kickstart,这个界面消失很快,可能看不见。到这里PXE 启动就完成了。
7、下面就该主角kickstart 出场了。其实kickstart 在第四步已经出现了,当按照default 要求运行pxelinux.0 文件,系统读取内核,挂在根文件系统以后,的任务就都交给了kickstart 了。包括安装介质来源、语言、时区、分区、安装哪些包等,都是在kickstart 文件中定义。只要进入这一步,kickstart 配置文件正确,我们的无人值守安装已经成功了。
原理:通过kickstart生成ks.cfg文件,过滤掉安装过程中人工干预的部分,最终达到从网卡启动后能够自动安装系统直到完成从而实现了大规模部署安装操作系统.
PXE服务器安装
第一步:配置yum环境
挂载镜像文件
[root@pxesv ~]# mount /dev/cdrom /mnt/cdrom/ //挂载光盘镜像文件
mount: block device /dev/sr0 is write-protected, mounting read-only
配置YUM库,指向镜像文件挂载位置.
第二步:安装无人值守所需要的服务及软件包
包括: dhcp,xinetd,tftp,nfs, system-config-kickstart syslinux
[root@pxesv Packages]# yum -y install dhcp xinetd tftp-server nfs* syslinux system-config-kickstart //安装所有需要的包
查看安装的包是否安装成功:
[root@pxesv Packages]# rpm -qa dhcp //为pxe网卡提供网络参数并指向tftp服务器文件
dhcp-4.1.1-31.P1.el6.i686
[root@pxesv Packages]# rpm -qa xinetd //tftp服务依赖服务
xinetd-2.3.14-34.el6.i686
[root@pxesv Packages]# rpm -qa tftp-server //提供启动安装需要的内核文件
tftp-server-0.49-7.el6.i686
[root@pxesv Packages]# rpm -qa nfs-utils //提供安装需要的系统文件
nfs-utils-1.2.3-26.el6.i686
[root@pxesv Packages]# rpm -qa syslinux //提供pexlinux.0文件
syslinux-4.02-7.el6.i686
[root@pxesv Packages]# rpm -qa system-config-kickstart //生成ks.cfg文件
system-config-kickstart-2.8.6.4-1.el6.noarch
第三步:配置tftp
[root@pxesv tftpboot]# vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the ISOation process for some operating systems.
service tftp
{
disable = no //将yes改成no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
[root@pxesv tftpboot]# service xinetd restart
[root@pxesv tftpboot]#chkconfig xinetd on
第四步:配置dhcp服务器
复制模版进行配置
[root@pxesv ~]# cp -p /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf //复制dhcpd.conf配置模版
添加tftp服务器地址及pexlinux.0文件
[root@pxesv ~]# vi /etc/dhcp/dhcpd.conf //配置DHCP服务器
# dhcpd.conf
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.128.0 netmask 255.255.255.0
{
option routers 192.168.128.254;
option subnet-mask 255.255.255.0;
next-server 192.168.128.101; //指向tftp服务器
filename "pxelinux.0"; //tftp根目录的相对路径
option time-offset -18000;
range dynamic-bootp 192.168.128.100 192.168.128.200;
default-lease-time 21600;
max-lease-time 43200;
}
[root@pxesv ~]#chkconfig dhcpd on
[root@pxesv ~]#service dhcpd restart
第五步:复制安装系统需要的核心文件及光盘镜像
复制初始化安装需要的系统内核等文件到tftp根目录下,并通过模版创建default文件.
[root@pxesv ~]# cd /var/lib/tftpboot/ //tftp的目录跟RHEL5位置不同
[root@pxesv isolinux]# pwd
/mnt/cdrom/isolinux
[root@pxesv isolinux]# cp vmlinuz initrd.img boot.msg vesamenu.c32 splash.jpg /var/lib/tftpboot/ //复制所需要的文件到tftp服务器根目录
[root@pxesv /]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxesv /]# mkdir /var/lib/tftpboot/pxelinux.cfg //创建pxelinux.cfg目录
[root@pxesv /]# cp -p /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default //复制default文件
第六步创建image文件夹
[root@pxesv ~]# cd /var/lib/tftpboot
[root@pxesv tftpboot]# mkdir image
[root@pxesv tftpboot]# ls
boot.msg image initrd.img pxelinux.0 pxelinux.cfg splash.jpg vesamenu.c32 vmlinuz
进入image文件夹,创建对应系统的pxe启动文件夹
[root@pxesv tftpboot]# cd image/
[root@pxesv image]# ls
RH63_64 RH64_64 centos63_64 centos64_64
第七步:共享NFS文件
[root@pxesv ~]# vi /etc/exports
/mnt/nfs *(ro,async)
重启服务
[root@pxesv /]#chkconfig nfs on
[root@pxesv /]#service nfs restart
第八步:创建安装系统文件夹,ks文件夹
[root@pxesv ~]# cd /mnt/nfs
[root@pxesv nfs]# ls
iso ks
[root@pxesv ~]# cd /mnt/nfs/iso/
[root@pxesv iso]# ls
RH63_64 RH64_64 centos63_64 centos64_64
在对应文件夹下面存放系统光盘的所有安装文件(copy方式)
[root@pxesv ~]# cd /mnt/nfs/ks/
[root@pxesv iso]# ls
RH63_64 RH64_64 centos63_64 centos64_64
在对应文件夹下面存放该系统ks.cfg文件,系统安装时调用ks文件可以实现全自动安装
第九步:编辑default文件
编辑default文件,多余部分可以删除,也可以不删除,创建label RH53_32标签,内容指向内核及ks.cfg位置[root@pxesv /]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to Pxeboot Server!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label local //默认从本地硬盘启动,防止正常服务器重启中进入PXE安装,毁坏系统。
menu label Boot from ^local drive
localboot 0xffff
label redhat64_64_ks //后面跟了ks文件路径的可以实现系统无人值守安装
kernel image/redhat64_64/vmlinuz
append initrd=image/redhat64_64/initrd.img ks=nfs:192.168.128.101:/mnt/nfs/ks/redhat64_64/ks.cfg
label centos65_64_ks //后面跟了ks文件路径的可以实现系统无人值守安装
kernel image/centos65_64/vmlinuz
append initrd=image/centos65_64/initrd.img ks=nfs:192.168.128.101:/mnt/nfs/ks/centos65_64/ks.cfg
label redhat61_32 //后面没有跟ks文件的,需要手动指定系统安装方式,如NFS安装,后面有说明
kernel image/redhat61_32/vmlinuz
append initrd=image/redhat61_32/initrd.img
··············
到此,pxeboot引导安装到此结束
附:配置ks.cfg
安装ks图形化配置界面:
rpm -ivh system-config-kickstart-2.6.19.6-1.el5.noarch.rpm
[root@pxesv /]# system-config-kickstart
根据个人需要配置。配置完成后保存一下文件,并且放到/mnt/nfs/Ks 下对应系统目录
Kick Start是网络安装无人值守按照预定要求自动安装的脚本。文件名称为 ks.cfg,此文件必须为可读的文本文件。获得此文件的方式有两种,一种为通过Kick Start
程序手工创建,而且使用那一个发行版只能用那一个发行版的 Kick Start程序来创建。另外一种是更为直接的通过安装完成后的anaconda-ks.cfg修改得到,anaconda-ks.cfg是在安装过程中有anaconda 程序自动生成的ks.cfg文件,通过修改安装介质(修改CDRom行为 nfs --server=192.168.128.101 --dir=/mnt/nfs/iso/redhat64_64)和去掉分区前面的“#”得到ks.cfg。
[root@pxeserver ~]# cat /mnt/nfs/ks/redhat64_64/ks.cfg
#version=DEVEL
install
nfs --server=192.168.128.101 --dir=/mnt/nfs/iso/redhat64_64
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto static --ip 192.168.128.123 --netmask 255.255.255.0 --gateway 192.168.128.1 --noipv6 --hostname rhel64
rootpw --iscrypted $6$XVtpTT79LYB.y8/z$kH5GvD9isP/TwitUXaeYvAOOa/nuFu26aPNo8X/JxC4RUC0bquiTkZ4Le1hLZPIC8hSEawHXJzTrQvZyDEagM0
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Chongqing
text
reboot
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
clearpart --all --drives=sda
part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1
volgroup vg_rhel64 --pesize=4096 pv.008002
logvol /home --fstype=ext4 --name=lv_home --vgname=vg_rhel64 --grow --size=100
logvol / --fstype=ext4 --name=lv_root --vgname=vg_rhel64 --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_rhel64 --grow --size=4000 --maxsize=4000
%packages
@additional-devel
@base
@cifs-file-server
@chinese-support
@client-mgmt-tools
@compat-libraries
@console-internet
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@desktop-platform-devel
@development
%end
配合前面配置的PXE服务器通过NFS安装linux系统(需要人工干预)
服务器安装设置从网卡启动打开后启动如下界面
等待进入选择需要安装的系统版本界面
选择需要安装的系统版本等待进入系统安装界面
按照提示步骤安装操作系统,到下面这步选择NFS directory
选择网卡,配置网卡自动获取ip地址
NFS安装linux:注意NFS mount options这一行空着就行
进入安装图形界面和正常安装系统一样

- linux下实现自动部署tomcat的脚本
linux下实现自动部署tomcat的脚本 由于经常部署war到tomccat上,经常有一些重复的工作要做:停服务.备份war包.上传新的war包.启动服务.索性就写了一个自动部署的脚本. 脚本如下a ...
- DHCP服务+PXE自动安装系统
DHCP服务+PXE自动安装系统 DHCP安装 安装DHCP服务器 yum install dhcp -y 安装完dhcp默认无法启动,需要编辑配置文件设置分配地址范围等相关信息,服务器自身IP地址要 ...
- linux开发脚本自动部署及监控
linux开发脚本自动部署及监控 开发脚本自动部署及监控一.编写脚本自动部署反向代理.web.nfs:要求:1.部署nginx反向代理三个web服务,调度算法使用加权轮询: #!/bin/sh ngx ...
- PXE自动部署工具
1.工具介绍1.1::本工具主要以图形界面的方式帮助使用者快速部署PXE安装Linux的基础环境环境,(如不需要可忽略相关操作)并且支持自动配置静态IP地址和为H3C设备划分VLAN. 1.2::对于 ...
- Ubuntu 16.04 PXE+kickstart部署系统
#PXE+TFTP+Kickstart 自动部署服务器系统系统Ubuntu16.04apt-get install isc-dhcp-servervim /etc/default/isc-dhcp-s ...
- 10分钟实现dotnet程序在linux下的自动部署
背景 一直以来,程序署都是非常麻烦且无聊的事情,在公司一般都会有 devops 方案,整个 cicd 过程涉及的工具还是挺多的,搭建起来比较麻烦.那么对于一些自己的小型项目,又不想搭建一套这样的环境, ...
- Linux服务器pxe+kickstart部署无人值守安装
一. 使用光盘镜像安装好一台Redhat6.8系统的虚拟机(图形化界面) 二. 部署相关服务程序 1. 安装并配置dhcpd服务程序 a)安装dhcp服务程序 b)对dhcp服务进 ...
- 使用electron开发桌面级小程序自动部署系统
那一天我二十一岁,在我一生的黄金时代,我有好多奢望.我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样. ...
- linux 持续构建(自动部署) 重启动tomcat或进程的脚本
#!/bin/sh TOMCAT_PATH=`dirname "$0"` echo "TOMCAT_PATH is /usr/local/tomcat" PID ...
随机推荐
- 【渗透笔记】拿下某小H网的全过程
自从班上A片小王子的7个T资源被封了以后,本小白为造福全班同学,尝试拿下个小H网,先用webrobot搜某些只有小H网才会出现的关键词 本以为直接导出放御剑里跑就行了,然并软.于是用awvs扫了一下, ...
- 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程
上星期写了一个篇文章,数据库方面的面试技巧,如何从建表方面展示自己能力,承蒙管理员抬举,放入首页,也承蒙各位厚爱,两天内收获了将近770个点击,也一度进入48小时热榜. 为了感谢管理员和大家的支持,再 ...
- MySQL之数据的备份与还原
备份db_book:这里用到了cmd,以管理员方式运行,不然后面使用mysqldump会被拒绝访问!!! 1.启动cmd,输入命令,切换到MySQL的bin文件: 2.然后输入备份命令: 备份好的sq ...
- jQuery遍历-后代
后代是子.孙.曾孙等等. 通过 jQuery,您能够向下遍历 DOM 树,以查找元素的后代. 向下遍历 DOM 树 下面是两个用于向下遍历 DOM 树的 jQuery 方法: children() f ...
- C#:委托(delegate)和事件(event) (转)
委托(delegate): 它是C#语言里面的函数指针,代表可以指向某一个函数,在运行的时候调用这个函数的实现.下面来看看它的实现步骤: 声明一个delegate对象. 实现和delegate具有相同 ...
- Linux学习之路 -- 简单日常使用命令
tail -f catalina.out #在 logs 下面查看日志( -f 实时查看) rm -rf /var/log/httpd/access #删除文件(-r删除文件 并删除文件夹下的内容 - ...
- ubuntu16.04下源码安装onos1.0.2
由于工作需要,下载安装onos1.0.2的版本,大家看需求可以下载安装更高级的版本 参考链接:http://www.sdnlab.com/14650.html 1.系统环境 Ubuntu16.04 L ...
- Linux下的I/O模型以及各自的优缺点
其实关于这方面的知识,我阅读的是<UNIX网络编程:卷一>,书里是以UNIX为中心展开描述的,根据这部分知识,在网上参考了部分资料.以Linux为中心整理了这篇博客. Linux的I/O模 ...
- 【★】微信之于QQ的市场哲学
2016年的移动app下载排行榜出炉后,我们惊奇发现,前十名中有6个应用软件来自腾讯公司.而前两名毋庸置疑是远远碾压第三名的微信与qq.这让我们看到社交app的重要性的同时也回到了那个原始的问题:腾讯 ...
- python--简易购物车实现
目标要求: 1.用户输入购物预算 2.打印商品清单,由用户选择,预算够则购买,不够则提示 3.输入q,退出程序 4.购物结束,显示购买的东西和余额 实现: 1.用列表存储商品及价格信息 2.建立空列表 ...