分享

系统引导相关:pxe u-boot,功能上有什么区别?

 昵称11935121 2018-04-14
  1. PXE启动安装Windows 7原理

    首先,介绍一下PXE。PXE(preboot execute environment)是由Intel公司开发的启动技术,工作于Client/Server的网络模式下,支持工作站通过网络从远端服务器下载镜像文件,并由此支持来自网络的操作系统的启动过程。

    目前,电脑的网卡几乎都支持PXE启动,一般在BIOS启动设置里有类似“PXE boot”菜单即表示支持PXE启动。我们只要在服务器上配置好启动参数和正版Windows 7安装共享镜像(后面有制作方法),客户端启动后通过网络映射即可实现网络安装Windows 7。

  2. 搭建网络服务器

    用准备好的“深度远程启动管理器”和“小小强PE工具箱PXE版”两个小软件。深度远程启动管理器部署在服务器端,用于远程启动客户端电脑并分配IP,同时传输所需的启动文件。小小强PE工具箱PXE版则用于网络启动后的操作环境(WinPE),其已经集成Ghost32,启动后自动映射服务器的共享资源。

    按提示将“小小强PE工具箱PXE版”安装到“C:\ ZJQPXE”,安装完成后关闭“WinPE PXE专用版服务器设置”窗口,自行使用“深度远程启动管理器”配置。

    将 “深度远程启动管理器”解压到“C:\ ZJQPXE”,运行“C:\ ZJQPXE\netbootM.exe”, 单击“配置→选项设置”,在“启动配置”选项中,工作目录选择“C:\ ZJQPXE”,引导文件选择“pxelinux.0”。至此,网络服务器就算搭建好了。

  3. 用ImageX创建镜像

    完成服务器的搭建后,接下来我们就要制作GHO文件,然后在启动的客户端运行“Ghost32”进行快速恢复即可。

    启动安装有Windows 7的电脑,进入Windows 7后右击桌面“计算机”选择“管理”,依次展开“计算机管理→存储→磁盘管理”,然后右击“磁盘管理”选择“创建VHD”,按提示创建一个“Windows 7.vhd”的文件,并完成VHD硬盘初始化、格式化。在磁盘管理中选中这个分区,选择“将分区标记为活动分区”。

    准备好Windows 7正版安装光盘,以管理员的身份启动命令提示符,输入“L:\boot\bootsect.exe /nt60 N:”(L:为光盘的盘符),将N盘引导记录更改为NT60格式。运行 “ImageX一键恢复”软件,单击“分区恢复”,分区盘符选择上述创建的VHD磁盘,镜像文件选择安装光盘中的“sources\install.wim”,按提示将旗舰版的镜像释放到VHD磁盘中

  4. 启动Ghost添加镜像

    运行“C:\ZJQPXE\外置程序\Ghost\11.0.2.1573\ghost32”,选择“分区到镜像”( 切不可选择“硬盘到镜像”,否则恢复时会将客户端硬盘数据清除),把N盘分区制作为“Windows 7.gho”,放置在服务器端电脑上的 “C:\ZJQPXE\外置程序\”下。接着右击““C:\ZJQPXE\外置程序”,选择“共享和安全”,将其文件设置为“everyone”共享,共享名为“OP”

  5. PXE启动开始安装Windows 7

    现在将客户端电脑接入网络并设置从PXE启动,成功分配IP地址后就会自动加载所需的启动文件并进入WinPE,进入WinPE系统后打开“我的电脑”,确保可以看到网络共享驱动器。在客户端电脑上单击“开始→程序→Ghost→Ghost 11.0.2.1573”,启动“Ghost32”后选择“分区→从镜像”,选择上述网络驱动器中的“Windows 7.gho”恢复到客户机的第一分区。如果客户机是一台全新的电脑,我们还可以先利用WinPE自带的分区工具对硬盘进行分区、格式化等操作。

     网络克隆的速度很快,一般10分钟左右即可完成Windows 7的安装,克隆完成后就大功告成了,重启即可进入Windows 7系统。


u-boot是一种普遍用于嵌入式系统中的Bootloader。

Bootloader介绍

Bootloader是进行嵌入式开发必然会接触的一个概念,它是嵌入式学院<嵌入式工程师职业培训班>二期课程中嵌入式linux系统开发方面的重要内容。本篇文章主要讲解Bootloader的基本概念以及内部原理,这部分内容的掌握将对嵌入式linux系统开发的学习非常有帮助!

Bootloader的定义:Bootloader是在操作系统运行之前执行的一小段程序,通过这一小段程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。意思就是说如果我们要想让一个操作系统在我们的板子上运转起来,我们就必须首先对我们的板子进行一些基本配置和初始化,然后才可以将操作系统引导进来运行。具体在Bootloader中完成了哪些操作我们会在后面分析到,这里我们先来回忆一下PC的体系结构:PC机中的引导加载程序是由BIOS和位于硬盘MBR中的OS Boot Loader(比如LILO和GRUB等)一起组成的,BIOS在完成硬件检测和资源分配后,将硬盘MBR中的Boot Loader读到系统的RAM中,然后将控制权交给OS Boot Loader。Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注:有的嵌入式cpu也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boot Loader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。(先想一下,通用PC和嵌入式系统为何会在此处存在如此的差异呢?)

Bootloader是基于特定硬件平台来实现的,因此几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader,Bootloader不但依赖于cpu的体系结构,还依赖于嵌入式系统板级设备的配置。对于2块不同的板子而言,即使他们使用的是相同的处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也需要修改Bootloader的源程序。

Bootloader的启动方式

Bootloader的启动方式主要有网络启动方式、磁盘启动方式和Flash启动方式。

1、网络启动方式

图1 Bootloader网络启动方式示意图

如图1所示,里面主机和目标板,他们中间通过网络来连接,首先目标板的DHCP/BIOS通过BOOTP服务来为Bootloader分配IP地址,配置网络参数,这样才能支持网络传输功能。我们使用的u-boot可以直接设置网络参数,因此这里就不用使用DHCP的方式动态分配IP了。接下来目标板的Bootloader通过TFTP服务将内核映像下载到目标板上,然后通过网络文件系统来建立主机与目标板之间的文件通信过程,之后的系统更新通常也是使用Boot Loader的这种工作模式。工作于这种模式下的Boot Loader通常都会向它的终端用户提供一个简单的命令行接口。

2、磁盘启动方式

这种方式主要是用在台式机和服务器上的,这些计算机都使用BIOS引导,并且使用磁盘作为存储介质,这里面两个重要的用来启动linux的有LILO和GRUB,这里就不再具体说明了。

3、Flash启动方式

这是我们最常用的方式。Flash有NOR Flash和NAND Flash两种。NOR Flash可以支持随机访问,所以代码可以直接在Flash上执行,Bootloader一般是存储在Flash芯片上的。另外Flash上还存储着参数、内核映像和文件系统。这种启动方式与网络启动方式之间的不同之处就在于,在网络启动方式中,内核映像和文件系统首先是放在主机上的,然后经过网络传输下载进目标板的,而这种启动方式中内核映像和文件系统则直接是放在Flash中的,这两点在我们u-boot的使用过程中都用到了。

U-boot的定义

U-boot,全称Universal Boot Loader,是由DENX小组的开发的遵循GPL条款的开放源码项目,它的主要功能是完成硬件设备初始化、操作系统代码搬运,并提供一个控制台及一个指令集在操作系统运行前操控硬件设备。U-boot之所以这么通用,原因是他具有很多特点:开放源代码、支持多种嵌入式操作系统内核、支持多种处理器系列、较高的稳定性、高度灵活的功能设置、丰富的设备驱动源码以及较为丰富的开发调试文档与强大的网络技术支持。另外u-boot对操作系统和产品研发提供了灵活丰富的支持,主要表现在:可以引导压缩或非压缩系统内核,可以灵活设置/传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,支持多种文件系统,支持多种目标板环境参数存储介质,采用CRC32校验,可校验内核及镜像文件是否完好,提供多种控制台接口,使用户可以在不需要ICE的情况下通过串口/以太网/USB等接口下载数据并烧录到存储设备中去(这个功能在实际的产品中是很实用的,尤其是在软件现场升级的时候),以及提供丰富的设备驱动等。

u-boot源代码的目录结构

1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现。

2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件。

3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录。

4、Doc是文档目录,有u-boot非常完善的文档。

5、Drivers中是u-boot支持的各种设备的驱动程序。

6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统。

7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件。

8、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现。

9、Tooles是生成U-boot的工具。

对u-boot的目录有了一些了解后,分析启动代码的过程就方便多了,其中比较重要的目录就是/board、/cpu、/drivers和/include目录,如果想实现u-boot在一个平台上的移植,就要对这些目录进行深入的分析。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多