HCNP学习笔记之PXE原理详解及实践
一、PXE简介
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由支持通过网络启动操作系统,再启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8/linux等。
二、PXE启动原理
当计算机引导时,BIOS把PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行,工作流程图如下


PXE工作原理示意图说明:
#1.Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client。 #2.Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。 #3.Client执行接收到的pxelinux.0文件。 #4.Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。 #5.Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。 #6.Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。 #7.Client启动Linux内核(启动参数已经在4中的配置文件中设置好了)。 #8.Client通过NFS下载镜像文件,读取autoyast自动化安装脚本。
三、PXE安装配置
1.安装tftp
在server 172.16.47.101上:
[root@node1~]# yum install tftp tftp-server -y
[root@node1~]# systemctl start tftp.socket
[root@node1~]# systemctl enable tftp.socket
tftp的默认目录为/var/lib/tftpboot/,如下图,拷贝一个文件到该目录下,测试tftp服务是否正常

2.安装DHCP服务
在server 172.16.47.101上安装dhcp服务,和tftp服务是在同一台机器上

3.yum源
把光盘挂载上

4.配置httpd web服务
安装httpd:yum install httpd;并把yum源挂载在http下,让客户端能够访问

可以看到httpd能正常服务,不过操作的时候要注意selinux和iptables

5.安装syslinux
安装syslinux:yum install syslinux,并复制系统引导启动所需要的文件到相应的目录中

编辑default文件
default menu.c32
prompt
timeout
MENU TITLE CentOS 7_Lurker PXE Menu
LABEL linux-Lurker
MEMU LABEL Install CentOS 7_Lurker X86_64
KERNEL vmlinuz
APPEND initrd=initrd.img
inst.repo=http://172.168.47.101/centos/7/x86_64
新建虚拟机,可以看到启动的引导过程如下:

启动界面如下:

如上default文件中并没有指定kickstart文件,无法应答安装时的各步骤,无法实现全自动安装。
现我们修改一下/root/目录下的anaconda-ks.cfg文件,放到/var/www/html/kickstarts/下,并重新修改default文件如下:
default menu.c32
prompt
timeout
MENU TITLE CentOS 7_Lurker PXE Menu LABEL Linux-Lurker
MEMU LABEL ^Install CentOS 7_Lurker X86_64
KERNEL vmlinuz
APPEND initrd=initrd.img
inst.repo=http://172.168.47.101/centos/7/x86_64 LABEL Linux_Autoinst
MENU LABEL ^AutoInstall CentOS x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img
inst.repo=http://172.168.47.101/centos/7/x86_64
ks=http://172.16.47.101/kickstarts/centos7.cfg
如下图,可以看到,正在安装,分区中


至此,我们就实现了linux的全自动化安装。
参考
HCNP学习笔记之PXE原理详解及实践的更多相关文章
- IP2——IP地址和子网划分学习笔记之《子网掩码详解》
2018-05-04 16:21:21 在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...
- CDN学习笔记二(技术详解)
一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...
- [Spring学习笔记 5 ] Spring AOP 详解1
知识点回顾:一.IOC容器---DI依赖注入:setter注入(属性注入)/构造子注入/字段注入(注解 )/接口注入 out Spring IOC容器的使用: A.完全使用XML文件来配置容器所要管理 ...
- [读书笔记]C#学习笔记三: C#类型详解..
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
- C#学习笔记二: C#类型详解
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
- 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...
- jQuery学习笔记之Ajax用法详解
这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...
- MyBatis学习笔记2--配置环境详解
1.MyBatis-config.xml详解 一个完整的配置文件如下所示 <configuration> <!-- <properties resource="jdb ...
- CSS学习笔记(9)--详解CSS中:nth-child的用法
详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是“:nth-child”. 下面我将用几个典型的实 ...
随机推荐
- 匿名(无账号密码)从ftp服务器下载文件
public static String downFile(String ip,String ftpFileName,String savePath,String fileName) { FTPCli ...
- debian卸载旧内核
debian卸载旧内核要先看看有哪些旧的内核,用命令: uname -a dpkg --get-selections |grep linux 如果你的内核是以kernel开头的就把上面的linux改成 ...
- UVA12470—Tribonacci (类似斐波那契,简单题)
题目链接:https://vjudge.net/problem/UVA-12470 题目意思:我们都知道斐波那契数列F[i]=F[i-1]+F[i-2],现在我们要算这样的一个式子T[i]=T[i-1 ...
- Spring AOP和事务的相关陷阱
1.前言 2.嵌套方法拦截失效 2.1 问题场景 2.2 解决方案 2.3 原因分析 2.3.1 原理 2.3.2 源代码分析 3.Spring事务在多线程环境下失效 3.1 问题场景 3.2 解决方 ...
- mysql复习-来源考试
mysql复习- No1 .登录和权限 (一)常用命令1.登录mysqlmysql -h localhost -u root -p 2.重启mysqlservice mysql restart 延 ...
- 0602-Zuul构建API Gateway-Zuul Http Client、cookie、header
一.Zuul Http Client zuul使用的默认HTTP客户端现在由Apache HTTP Client支持,而不是已弃用的Ribbon RestClient.要使用RestClient或使用 ...
- Node.js REST 工具 Restify
Restify 是一个 Node.JS 模块,可以让你创建正确的 REST web services.它借鉴了很多 express 的设计,因为它是 node.js web 应用事实上的标准 API. ...
- Uboot命令U_BOOT_CMD
转载:http://blog.csdn.net/shengzhadon/article/details/52766263 U_BOOT_CMD是一个宏定义,具体功能是定义一个struct cmd_tb ...
- python16_day22【cmdb注释】
https://github.com/willianflasky/growup/tree/master/s16/day23/learnMadKing
- linxu系统压缩解压命令
使用cat命令进行文件的纵向合并 两种文件的纵向合并方法 归档文件和归档技术 归档的目的 什么是归档 tar命令的功能 tar命令的常用选项 使用tar命令创建.查看及抽取归档文件 使用tar命令创建 ...