关于PXE部署的详细配置的文章已经有不少了,这篇文章主要讲一下PXE启动的原理以及PXE启动和普通Linux启动的对比。

一、PXE启动原理:

原理图如下:

DHCP的用途是:提供client network参数和TFTP服务器的地址,最初的bootstrap程序(即DHCP或BootP等)和所需的程序。
首先,PXE client端(BIOS里面的PXE固件)广播一个DHCPDISCOVER的包,它询问所需的网络配置以及网络启动的参数。标准DHCP服务器(非PXE enabled)将回复一个普通的DHCPOFFER包,其中包含网络信息(如IP地址),但并不能提供PXE相关参数,因此PXE Client并不能启动。而PXE enabled的DHCP服务器所回复的DHCPOFFER包里则包含PXE相关信息。
在解析一个PXE enabled的DHCP服务器返回的DHCPOFFER包后,PXE client就能够设置自己的IP地址、IP Mask等等,并且指向网络上的启动资源,比如TFTP服务器上的vmlinuz文件和initrd文件。
然后PXE client就通过TFTP下载这些启动资源到自己的内存中;如果是UEFI Secure Boot(而不是Legacy的BIOS)则还会检验一下这些启动资源。下载完成后就会用这些资源来启动了。
这些启动资源其实就是最小的操作系统(比如WindowsPE,又比如一个basic Linux kernel+initrd)。这个最小操作系统在装载了网络驱动和TCP/IP协议栈之后,就会开始boot或者install完整的操作系统了。而这个boot或install的过程,就不再通过TFTP来做,而是通过更加健壮的网络传输协议(如HTTP、CIFS、iSCSI或NFS)来做。而boot或者install所用到的实体,比如磁盘或者CD-ROM,是位于远端的,因此需要通过网络传输协议来做。

二、PXE启动过程和普通的Linux系统启动过程的对比:

1. 内核引导之前的不同:
普通的从硬盘启动Linux系统最初是BIOS将MBR加载入内存,然后将控制权交给MBR中的bootloader程序(如GRUB),bootloader程序经过几个stage的加载后,最后将vmlinuz加载入内存,开始内核引导;
而PXE的启动过程在内核引导之前,是由BIOS中的PXE固件开启NBP程序(比如DHCP的网络通信),然后下载vmlinuz和initrd,之后再进入内核启动过程。

2. 内核引导之后的不同:
vmlinuz和initrd运行得差不多了之后,普通的硬盘Linux启动就从本地硬盘加载/sbin/init并运行为1号进程,以及启动系统服务等等,而PXE的启动在内核引导完成之后,仍然会通过网络的方式(但不是TFTP协议,而是其他更加健壮的协议如NFS、iSCSI等),加载真正的完整操作系统,如/sbin/init应该就是位于网络远端的硬盘上。

以iSCSI为例,网络远端的硬盘以iSCSI协议挂载到了当前机器,就好像是本地磁盘一样。这就是PXE+iSCSI的启动方式了。

参考文献:

1. https://en.wikipedia.org/wiki/Preboot_Execution_Environment

2. http://blog.csdn.net/nirendao/article/details/75949536

3. http://backreference.org/2013/12/23/diskless-iscsi-boot-with-pxe-howto/

PXE启动原理以及与普通Linux启动的对比相关推荐

  1. winsetup制作linux启动盘,winsetupfromusb怎样做linux启动盘

    [WinSetupFromUSB使用方法]这是个功能非常强大的自启动U盘制作工具,可以完成 WinXP/Vista/Win7的U盘安装,完成同盘多Windows安装源的U盘制作以及Linux启动安装等 ...

  2. linux mysql 怎么启动客服端_脚本之家教你linux如何启动mysql服务教程图解 linux启动mysql服务命令是什么...

    mysql数据库是一种开放源代码的关系型数据库管理系统,有很多朋友都在使用.一些在linux系统上安装了mysql数据库的朋友,却不知道该如何对mysql数据库进行配置.那么linux该如何启动mys ...

  3. 电脑卡在正在启动windows界面_让 Linux 启动更快

    进行 Linux 内核与固件开发的时候,往往需要多次的重启,会浪费大把的时间. 在所有我拥有或使用过的电脑中,启动最快的那台是 20 世纪 80 年代的电脑.在你把手从电源键移到键盘上的时候,BASI ...

  4. java osgi 启动原理_java – 以编程方式启动OSGi(Equinox)?

    可以使用FrameworkFactory API以编程方式启动任何OSGi框架(R4.1或更高版本): ServiceLoader ffs = ServiceLoader.load(Framework ...

  5. 从无盘启动看 Linux 启动原理

    作者:bobyzhang,腾讯 IEG 运营开发工程师 0. 故事的开始 0.1 为什么和做什么 最近家里买了对音响,我需要一个数字播放器.一凡研究后我看上了 volumio(https://volu ...

  6. centos7无盘启动_从无盘启动看Linux启动原理

    作者:bobyzhang,腾讯 IEG 运营开发工程师 0. 故事的开始 0.1 为什么和做什么 最近家里买了对音响,我需要一个数字播放器.一凡研究后我看上了volumio( 我打算让volumio运 ...

  7. 【Android 源码学习】Zygote启动原理

    Android 源码学习 Zygote启动原理 望舒课堂 Zygote进程启动原理学习记录整理. Zygote简介 Zygote是进程在init进程启动时创建的,进程本身是app_process,来源 ...

  8. rc.local介绍(linux启动系列之一)

    摘自http://www.cnblogs.com/diyunpeng/ linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘. 本文中假设inittab中设置 ...

  9. 【Linux开发】Linux启动脚本设置

    前言 linux有自己一套完整的启动 体系,抓住了linux启动 的脉络,linux的启动 过程将不再神秘. 阅读之前建议先看一下附图. 本文中假设inittab中设置的init tree为: /et ...

  10. 装机心得(含启动原理配合排查问题),华硕B365Gaming+i7-9700+华硕TUF3-GeForce GTX 1660S O6G+海康威视c2000pro+金士顿马甲条16G*2

    配置 装机放在公司用于开发,奈何公司cpu是在惨不忍睹,i5-5500的U,根本不能满足现在微服务开发的日常需求.本人又想DIY一台自己的台式机,于是有了接下来的一路踩坑. 鲁大师扫描清单: 电脑型号 ...

最新文章

  1. 基于Servlet+JDBC+Bootstrap+MySQL+AJAX权限管理系统项目实战教程
  2. pandasDataFrame 的定位指定文件
  3. 关于mysql数据库的外键插入报错:Cannot add or update a child row: a foreign key constraint fails,完整性问题
  4. (最新合集)计算机网络谢希仁第七版 第四章课后答案
  5. Z-Blog 爬虫 node实现
  6. 晨哥真有料丨太快得到是不是就不珍惜了?这锅,男生真的不背!
  7. Maven学习总结(57)—— 如何提高 Maven 的构建速度?maven-mvnd 又是什么鬼?
  8. 在GridView的行绑定中应用Animation动画效果
  9. leetcode解题报告:Interleaving String
  10. python读取csv文件中数据_python读取.csv文件中的数据
  11. linux终端命令大全(完善中)
  12. c语言中的百分数怎么求,如何计算具体百分比
  13. c++ 输入数字 输出汉语读法(拼音)代码
  14. 小狐狸VF的一些命令及技巧
  15. excel自定义功能区图标_将您自己的图标添加到Excel自定义功能区选项卡
  16. adob animate_Chrome报告“ Adob​​e Flash Player已被阻止,因为它已过期。”
  17. 高德地图某一城市地铁路线高亮解决方案
  18. iSpring Suite教程:使用iSpring创建视频讲座只需简单6步
  19. 电子书PDF裁减、合并工具及脚本
  20. Windows电脑怎么重装系统?超详细教程!装机不再求人!

热门文章

  1. 【控制系统的数学模型——传递函数】
  2. linux把终端嵌入桌面,在你的Ubuntu Linux桌面上嵌入终端窗口
  3. 【JZOJ】【数论】立体井字棋
  4. 安国主控AU6989SN-GTC/AU6998SN [F500] - F/W FD04 U盘量产工具无法识别方法
  5. android中listview刷新数据,Android动态刷新listview中的数据?
  6. 如何使用科来网络分析系统过滤数据包内容
  7. VB6 TCP通讯服务端、客户端源码
  8. js几种将网站设为首页和加入收藏的代码
  9. visual foxpro v6.0官方版
  10. 测试计算机性能的软件比较专业,用什么软件可以测试计算机的整体性能?