PXE启动原理以及与普通Linux启动的对比

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

大家好,又见面了,我是你们的朋友全栈君。

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

一、PXE启动原理:

原理图如下:
PXE启动原理以及与普通Linux启动的对比

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/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147785.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Object C中的数据类型表

    类型例子NSLogcharschar'a','\n'%cshortint—%hi,%hx,%hounsignedshortint%hu,

    2021年12月26日
    49
  • STM32单片机介绍_单片机智能控制DIY

    STM32单片机介绍_单片机智能控制DIYSTM32库函数开发系列文章目录第一篇:STM32F103ZET6单片机双串口互发程序设计与实现第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案第三篇:最简单DIY基于STM32F407探索者开发板的MPU6050陀螺仪姿态控制舵机程序第四篇:最简单DIY基于STM32F407探索者开发板和PCA9685舵机控制模块的红外遥控机械臂控制程序第五篇:注释最详细、代码最简单的STM32+摄像头+显示屏的颜色跟踪电路软硬件方案第六篇:最简单DIY基于STM32单片机的WIFI智能小车设计

    2022年10月17日
    4
  • 服务器基础知识_服务器初学者入门

    服务器基础知识_服务器初学者入门定义:从广义上讲,服务器是指网络中能对其它机器提供某些服务的计算机系统(如果一个PC对外提供ftp服务,也可以叫服务器)。从狭义上讲,服务器是专指某些高性能计算机,能通过网络,对外提供服务。相对于普通

    2022年8月1日
    7
  • 海尔楼宇可视对讲

    海尔楼宇可视对讲海尔楼宇可视对讲我公司是青岛海尔集团内的智能化产品生产企业。生产楼宇可视对讲等智能化设备,以海尔的品质为您的楼盘提升价值。 室内分机分类序号类型图片显示屏安装方式主要功能1黑白可视对讲分机HR-Q100AV 4寸黑白CRT壁挂式安装★免提通

    2022年6月22日
    32
  • 蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器

    蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器

    2021年7月3日
    138
  • Python的正则表达式_python正则表达式例子

    Python的正则表达式_python正则表达式例子nlp任务中,正则表达式是一个很好的工具。推荐资源:https://github.com/ziishaned/learn-regex/https://regex101.com/在线练习结合网上的教程,我的整理如下:先来举个例子:#解析网页HTML<html><body><h1>helloworld&…

    2022年9月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号