一、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原理详解及实践的更多相关文章

  1. IP2——IP地址和子网划分学习笔记之《子网掩码详解》

    2018-05-04 16:21:21   在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...

  2. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  3. [Spring学习笔记 5 ] Spring AOP 详解1

    知识点回顾:一.IOC容器---DI依赖注入:setter注入(属性注入)/构造子注入/字段注入(注解 )/接口注入 out Spring IOC容器的使用: A.完全使用XML文件来配置容器所要管理 ...

  4. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  5. C#学习笔记二: C#类型详解

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  6. 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

    这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...

  7. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  8. MyBatis学习笔记2--配置环境详解

    1.MyBatis-config.xml详解 一个完整的配置文件如下所示 <configuration> <!-- <properties resource="jdb ...

  9. CSS学习笔记(9)--详解CSS中:nth-child的用法

    详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是“:nth-child”. 下面我将用几个典型的实 ...

随机推荐

  1. poj_2186 强连通分支

    题目大意 有N头牛,他们中间有些牛会认为另外一些牛“厉害”,且这种认为会传递,即若牛A认为牛B“厉害”,牛B认为牛C“厉害”,那么牛A也认为牛C“厉害”.现给出一些牛的数对(x, y)表示牛x认为牛y ...

  2. c++11——多线程

    c++11中增加了线程以及线程相关的类,很方便的支持了并发编程. 1. 线程 线程创建     使用std::thread创建线程,提供线程函数或者函数对象即可,并且可以指定线程函数的参数. #inc ...

  3. [SharePoint 2010]Sandboxed Solution (沙箱解決方案)

    現有的SharePoint 2007系統中,我們如果要安裝客製化的程式碼到系統中,我們必須製作一個解決方案包裝檔(Solution Package),然後在系統的中央管理後台中,真對整個伺服器農場Fa ...

  4. 记录初次使用tesseract的过程

    目录 简介 安装tesseract 安装成功 python应用识别图片 简介 这个谷歌的识别项目早就听说了,使用之后发现,真的很厉害.写下初次简单使用的过程吧. 安装tesseract 谷歌的开源识别 ...

  5. SQL使用union合并查询结果(转载)

    1.UNION的作用  UNION 指令的目的是将两个 SQL 语句的结果合并起来.从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION 的一 ...

  6. Hibernate的批量处理和分页技术、投影技术

    投影查询——过滤部分字段返回的List集合元素为Object[] Query query = session.createQuery("select c.cname, c.csex from ...

  7. C#中资源文件的使用

    在程序中会用到图片,有两种方法,一种是将图片放在运行文件夹中,直接调用,另一种是将图片放入资源文件中. 方法一,一般在.exe文件同级创建文件夹,如“ico”,然后把图标放进去.在程序中代码采用相对路 ...

  8. Android 判断当前thread 是否是UI thread

    在Android 中判断当前的Thread是否是UI Thread 的方法: 1. if (Looper.myLooper() == Looper.getMainLooper()) { // Curr ...

  9. winform实现QQ聊天气泡200行代码

    c# winform实现QQ聊天气泡界面,原理非常简单,通过webKitBrowser(第三方浏览器控件,因为自带的兼容性差)加载html代码实现,聊天界面是一个纯HTML的代码,与QQ的聊天界面可以 ...

  10. PHP 支持8种基本的数据类型。

    四种标量类型:boolean (布尔型):这是最简单的类型,只有两种取值,可以为 TRUE/true 或 FALSE/false ,不区分大小写.详细请查看:PHP布尔类型(boolean)integ ...