`

PXE服务器架设指南及PXE启动WinPE(含PE2.0)解决方案总结

阅读更多

作者:Climbing (xclimbing@msn.com )
创建日期:2007年5月28日
最后修改日期:2007年6月17日(增加启动PE 2.0有关总结)

这个总结源于“sysoft时空论坛的这个求助帖子(点击访问) ”, 这个求助帖子发布的时间已经很早了(2006年10月份),据我所知,这大概是当时我经常访问的各论坛里第一个讨论通过PXE启动PE的帖子(当然,后来 的讨论证明,很多人都在研究这个东西,并且国外早就有人解决了这个问题),而且在大家的努力下成功的找到了解决方案,当时,grub4dos还不支持 pxe启动方式。但是,那个帖子中的讨论内容比较乱,没有条理。现在随着grub4dos对pxe启动方式的支持,又有很多人尝试使用grub4dos通 过pxe启动pe(而且总是报告失败),所以这个问题又重新提到了桌面上来,而我发现很多人通过pxe启动WinPE之所以失败(无论是用 pxelinux还是用grub4dos),并不是因为启动方法或者PXE服务器设置有问题,而是不了解pxe启动PE的过程和原理,所以有必要在这里总 结一下。当然,我对通过PXE启动PE的原理也只是通过实践的猜测,可能下面讲述的原理并不严谨,但大体是还是正确的,至少可以解决大部分人遇到的问题。 详细的严谨的过程还需要有关高手进一步阐述,也希望高手们对我的总结加以批评指正。


1、PXE启动服务器的架设


简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到网络 上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务器的 IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是 pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端再联系启动服务器(TFTP服务器)获 得启动文件并执行,这样基本上就完成了pxe启动过程。


在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实Windows下的设 置也是一样的,但在Windows下,我们可以通过使用HaneWin DHCP服务器软件或TFTPD32,这样使用一个软件就搞定了两台服务器(我个人推荐使用HaneWin DHCP服务器软件,但TFTPD32设置起来更简单一些,就是效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好 DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名(066选项)和启动文件名(067选项)。


下面提供一个我在给下属单位讲课时所写的pxe服务器设置讲义(比较简略,但有截图,你如果理解了上述原理,应该不难搞定):

http://nufans.net/upload/winpe/PXE_Server_Setup.rar


2、PXE启动PE 1.0的原理


首先声明,这里讲的方法不见得适应于所有的PE,基本上基于无忧启动论坛老九(lxl1638)所制作的PE(例如老毛桃定制的版本)都应该是可以的,这些PE都是基于RAMDisk方式启动的,我试验时,深山红叶的PE是不能这样启动的。


通过PXE启动PE需要这么几个文件:


1)startrom.n12:这个文件从Windows 2003 SP1/SP2光盘中来,这个文件实际上也是一个符合pxe启动规范的启动文件,可以直接作为pxe服务器的启动文件来直接运行,当然,它也可以通过 pxelinux的kernel命令来运行,我不知道grub4dos是否识别它的文件格式,如果能够识别,原理上它也可以使用grub4dos的 kernel命令来执行,否则就使用chainloader --force命令来执行。


在Windows 2003 sp1/sp2的光盘中,还有一个startrom.com文件,它的作用跟startrom.n12是相同的,只是启动时需要按一个F12键才能继续,而startrom.n12则去掉了F12这个提示。


2)ntldr:这个文件是从Windows 2003 SP1/SP2光盘中的setupldr.exe改名而来,它的作用应该相当于从本地硬盘启动PE的setupldr.bin,但两者并不相同,但它决不 是我们平常所使用的ntldr。这个文件必须放到TFTP服务器的根目录。


3)ntdetect.com:这个就是XP或2003所使用的c:\下的ntdetect.com。这个文件也必须放到TFTP服务器的根目录。


4)winnt.sif:这个是PE的启动配置文件(用来指定PE的系统目录及PE映像文件所在路径及启动选项)。这个文件也必须放到TFTP服务器的根 目录。通过pxe启动的PE支持3种映像文件格式,例如,ISO、IMG或者SDI。其实,SDI格式相当于IMG格式,只是SDI格式在IMG文件前加 了一个文件头。一般我们都使用ISO或IMG格式,但这两种格式的启动选项是有所不同的,ISO格式要在启动选项中增加一个/rdexportascd, 而SDI格式还要增加一个/rdoffset选项。下面是Winnt.sif的示例:

复制内容到剪贴板
代码:
[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\I386\SYSTEM32\"
OsLoadOptions = "/minint /fastdetect /rdpath=\netpe.c\winpe.img"
;OsLoadOptions = "/minint /fastdetect /rdexportascd /rdpath=WINPE.ISO"

另 外,winnt.sif文件中还要注意的就是BootPath选项,默认它指向"\I386\SYSTEM32"目录,但老毛桃的PE将I386目录修改 成了WXPE,那么这里要作对应的修改,同时还要修改2)中的ntldr文件,将其中所有的I386替换为WXPE。只是修改winnt.sif是没有用 的。后面我们讲通过PXE启动多个PE时还要讲更多的hack PE启动文件的方法。


5)PE映像文件(IMG或者ISO或者SDI格式,例如WinPE.IMG):这里特别要注意的就是PE的映像文件一定不能使用cab压缩格式,如果你 用老毛桃的PE,一定要将它光盘根目录下的WinPE.IS_解压缩成winpe.iso然后放到这里使用。这样,IMG格式的PE就比较有优势了,因为 IMG格式是硬盘分区映像格式,你可以对这个分区使用NTFS文件系统并加上NTFS压缩,基本上压缩率也接近cab压缩格式,这样img文件就没有必要 使用cab压缩但仍然具有cab的压缩率,而且img格式可以直接使用Virtual Disk Manager(VDM)挂载并进行编辑,修改起来比较方便。另外,这个PE映像文件没有必要放在TFTP服务器的根目录下,例如上面的 winnt.sif中就将winpe.img放在了TFTP服务器的/netpe.c/目录下。


PXE启动PE的过程大致是(可能也不是很严谨):startrom.n12获得执行后,在TFTP服务器根目录下寻找 ntldr(setupldr.exe),找到后加载ntldr并执行,而ntldr则在TFTP服务器的根目录下查找winnt.sif,根据 winnt.sif的内容从TFTP服务器上下载PE的映像文件并根据选项进行PE的加载,在PE的加载过程中可能会用到ntdetect.com。


3、让PXE服务器支持同时启动多个PE(1.0)的设置方法

通过上面的讲述,我们已经明白了通过PXE启动PE的一个概况,由于PE通过PXE启动时,要求NTLDR(setupldr.exe)、 winnt.sif和ntdetect.com必须放在TFTP服务器的根目录,那么要想让PXE服务器支持同时启动多个PE,必须对文件名进行 hack,其中ntdetect.com是PE启动时共用的,没有必要进行修改,但ntldr和winnt.sif由于只跟一个PE有关,所以文件名必须 进行更改。假设我们要启动的第二个PE的映像文件名为netpe.iso,该映像文件放在TFTP根目录下的netpe目录下,ISO中的I386目录被 改成了WXPE,由于该PE通过pxe启动时不能再使用ntldr和winnt.sif,那么这两个文件我们对应改成:netpe和netpe.sif, 详细的hack过程如下:

1)startrom.n12:这个文件没有必要放到TFTP服务器的根目录下,可以将它跟PE映像文件放到同一个目录下,文件名可以起成 netperom.0,由于它启动时要查找TFTP服务器根目录下的ntldr,所以必须使用十六进制编辑器(UltraEdit)打开它进行修改,将该 文件中的所有ntldr字符串查找替换成netpe。

2)将原来的ntldr(setupldr.exe)改名为netpe并放到TFTP服务器的根目录下,用UE打开并将所有的winnt.sif字符串替换为netpe.sif,同时将所有的I386字符串替换为WXPE。

3)新建一个文件,名为netpe.sif,放到TFTP服务器根目录下,内容如下:

复制内容到剪贴板
代码:
[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\WXPE\SYSTEM32\"
OsLoadOptions = "/minint /fastdetect /rdexportascd /rdpath=\NETPE\NETPE.ISO"

4)修改pxelinux的启动菜单文件(pxelinux.cfg/default),加入一个条目,内容如下:

LABEL netpe
MENU LABEL WinPE with Network Support for PXE boot
kernel /netpe/netperom.0

如果使用pxegrub,那么启动菜单是类似这样的:
title WinPE with Network Support for PXE boot
pxe keep
chainloader --force /netpe/netperom.0

基本上,上面所讲的就包括了有关PXE启动PE的所有内容,下面提供一个我的TFTP服务器目录结构(包括pxelinux.cfg/default)下载包,供大家参考:
http://nufans.net/upload/winpe/PXE_WinPE_Climbing.rar


4、PXE启动PE 2.0的原理

首先声明,我个人从来没有制作甚至使用过PE 2.0,因为从心理上我一直比较排斥它,感觉它是微软为了打压BartPE才出来的东西,而且体积也很大,没有PE 1.0的短小精悍,从功能上也没有发现它比PE 1.0有什么优胜的地方(最新的不一定是最好的)。所以,这篇总结纯粹是为了方便对相关的技术感兴趣的人参考而做的,这里总结的东西都是参考别人的帖子再 加上我的理解而做出来的,纯粹是纸上谈兵,没有任何实践基础,因此错漏难免,敬请各位高手批评指正。

参考帖子:

1) http://bbs.wuyou.com/viewthread.php?tid=106600 ,由titanbai站友提供的PXE启动PE 2.0的详细技术细节,感谢titanbai站友的无私奉献!
2) http://bbs.wuyou.com/viewthread.php?tid=100886 ,由“原名丢了”站友提供的PXE启动多个PE 2.0的设置文档(英文),来源于911CD论坛。


其实PXE启动PE 2.0的原理大体与启动PE 1.0的原理相似,只是换了几个启动文件而已。首先,PE 2.0的引导方式不再使用NT的NTLDR方式,而是使用了VISTA的BCD方式,PE 1.0和PE 2.0在引导上的主要区别也就在于此。

PE 2.0的启动文件变成了下面几个:

1) pxeboot.0: 由pxeboot.com或者pxeboot.n12改名而来,这两个文件可以从WAIK中获得,详细方法请参考titanbai站友的帖子。这个文件对 应PE 1.0中的startrom.0文件。它的放置位置一般是TFTP服务器的/boot目录下,个人感觉它的位置可以随意放置。它的主要作用是加载TFTP 根目录下的bootmgr.exe文件。

2) bootmgr.exe: 这就是VISTA的bootmgr了,它也是由WAIK中获得的,而且它必须放到TFTP服务器的根目录下(与PE 1.0中的setupldr.exe对应)。它的作用主要是读取启动配置文件也就是/boot/BCD,根据BCD的配置进一步加载/boot /boot.sdi文件。

3) /boot/BCD:这是bootmgr的启动菜单配置文件,跟VISTA的启动菜单配置文件没有什么区别,它主要对应NT的boot.ini文件,由VISTA的命令行程序bcdedit.exe来进行配置和修改。一个创建BCD文件启动PE 2.0的例子如下:

复制内容到剪贴板
代码:
Bcdedit -createstore c:\BCD
Bcdedit -store c:\BCD -create {ramdiskoptions} /d "Ramdisk options"
Bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdideviceboot
Bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdipath\boot\boot.sdi
:: NEW GUID CREATED HERE
for /f "tokens=1-3" %%a in ('Bcdedit -store c:\BCD -create /d "WinPE 2.0" /application osloader') do SET GUID1=%%c
Bcdedit -store c:\BCD -create {bootmgr} /d "VISTA Boot Manager"
Bcdedit -store c:\BCD -set {bootmgr} timeout 15
Bcdedit -store c:\BCD -set {bootmgr} displayorder %GUID1%
Bcdedit -store c:\BCD -set %GUID1% systemroot \Windows
Bcdedit -store c:\BCD -set %GUID1% detecthal Yes
Bcdedit -store c:\BCD -set %GUID1% winpe Yes
Bcdedit -store c:\BCD -set %GUID1% osdevice ramdisk=[boot]\Boot\WinPE.wim,{ramdiskoptions}
Bcdedit -store c:\BCD -set %GUID1% device ramdisk=[boot]\Boot\WinPE.wim,{ramdiskoptions}

4) boot.sdi: 这个文件好像是通用的,将VISTA光盘上的boot.sdi文件复制过来即可,必须放到TFTP服务器/boot目录下。

5) WinPE.WIM: 这就是PE 2.0的主映像文件了,也要放到/boot目录下。

PE 2.0的PXE启动过程大概是这个样子的:

首先,pxeboot.0获得执行权限(可以由pxelinux菜单直接调用,或者将pxeboot.0直接作为PXE服务器的启动文件),然后,该文件 下载TFTP服务器根目录下的bootmgr.exe并执行,bootmgr.exe再读取/boot/BCD文件获得PE 2.0的启动配置,并进一步下载/boot/boot.sdi及/boot/winpe.wim,然后执行winpe.wim中的winload.exe 开始PE 2.0的启动过程。

5、让PXE服务器支持同时启动多个PE 2.0的方法

这个主要参考上面“原名丢了”站友所贴的那个英文帖子的内容,我简单翻译一下,其实,主要还是hack相应的启动文件,麻烦就在于bootmgr.exe加了checksum校验及数字签名校验,相应设置一下就行了。翻译的不太好,有什么问题,大家再继续探讨。

英文原文及对照翻译如下:

you want to be able to boot different images. You could put extra entries in the BCD file using BCDEDIT but perhaps like me you don't want to display bootmgr's menu and want to use your existing PXELINUX initial PXE stage to choose the image. So want bootmgr to use different BCD files.

你想启动多个PE 2.0的映像文件,一个方法是你可以使用BCDEDIT修改BCD启动配置文件,加入多个PE的启动项。但如果你跟我一样,不想看到bootmgr的启动 菜单,而想通过pxelinux选择要启动的PE,这时候就需要bootmgr使用不同的BCD启动配置文件。

So you currently have an entry in pxelinux.cfg\default (or a specific config for your test PC) that says:

目前,你的pxelinux.cfg\default中应该有这么一项:

复制内容到剪贴板
代码:
label winpe2
kernel boot/pxeboot.0

which startes the process:

这一项启动PE 2.0的过程是这样的:

复制内容到剪贴板
代码:
pxelinux.0
|
v
boot/pxeboot.0
|
v
bootmgr.exe <-- /Boot/BCD
|
v
boot/boot.sdi <-- /Boot/WinPE.wim
|
v
winload.exe

But...the file "\Boot\BCD" is hardcoded into bootmgr.exe!

但是,文件“\Boot\BCD”是固化在bootmgr.exe里面的!

Ok, no problem...

好,没问题...

Copy bootmgr.exe to testmgr.exe and hex edit it:
复制bootmgr.exe为testmgr.exe并用十六进制编辑器编辑它:
Change the "\Boot\BCD" unicode text at 0x4F98C to "\Test\BCD".
将0x4F98C位置处的Unicode字符串"\Boot\BCD"修改为"\Test\BCD"。

Also, copy boot\pxeboot.0 to test\pxetest.0 and hex edit this too:
同样的,复制\boot\pxeboot.0为\boot\pxetest.0,并同样编辑:
Change the "bootmgr.exe" at 0x5961 to "testmgr.exe"
将0x5961位置处的“bootmgr.exe”字符串修改为“testmgr.exe”。

Copy boot\BCD to test\BCD and use BCDEDIT to change the osdevice and device entries to use "[boot]\Test\TestPE.wim,{ramdiskoptions}". No need to change the boot/boot.sdi entry.
复制 \boot\BCD 为 \test\BCD,然后用BCDEDIT修改“osdevice”和“device”项为“[boot]\Test\TestPE.wim,{ramdiskoptions}”,没必要修改\boot\boot.sdi那一项。

Add an entry in pxelinux.cfg\default:

在pxelinux.cfg\default中增加一项:

复制内容到剪贴板
代码:
label testpe2
kernel test/pxetest.0

Ok, we hope this will now follow this process:
好,我们希望这一项的启动过程是这样的:

复制内容到剪贴板
代码:
pxelinux.0
 |
 v
test/pxetest.0
 |
 v
testmgr.exe <-- /Test/BCD
 |
 v
boot/boot.sdi <-- /Test/WinPE.wim
 |
 v
winload.exe

We, try it and get a checksum error with testmgr.exe.
而测试启动时会出现“checksum error with testmgr.exe”(testmgr.exe文件校验错误)。

Ok, it has a PE checksum at 0x130 so we use a tool (such as PE Explorer) to calculate our testmgr.exe's checksum and update the file.

原来,bootmgr.exe在0x130位置处有一个PE checksum(PE文件校验码),我们可以使用工具(例如PE Explorer,注:用google可以找到很多下载)重新计算testmgr.exe的校验码并将新校验码添入对应位置。

Try again...bootmgr reports:

再试...bootmgr 报告:

引用:
Windows cannot verify the digital signature for this file.

Windows不能验证这个文件的数字签名。

Looks like testmgr.exe has a digital signature that is getting checked and fails!

看来象是testmgr.exe有一个数字签名机制,由于没有通过验证所以失败了!

Now we're stuck...but there's this stuff about -set nointegritychecks Yes on various google pages...

现在,我们遇到了不可克服的困难...但在很多google页面上(关于PE 2.0)有这样的设置:-set nointegritychecks Yes。

Using "bcdedit -store x:\BCD -set nointegritychecks Yes"
or "bcdedit -store x:\BCD {guid} -set nointegritychecks Yes"
puts the setting in for the WinPE image (disabling driver signing - I believe) but doesn't stop the problem with our testmgr.exe (which stops before TestPE.wim is even retrieved).

使用上面的命令(甚至在WinPE的映像中禁用了驱动数字签名检测),但testmgr.exe仍然出现上述错误(甚至还没有等到下载TestPE.WIM文件)。

But, what about "bcdedit -store x:\BCD {bootmgr} -set nointegritychecks Yes" ?

但,"bcdedit -store x:\BCD {bootmgr} -set nointegritychecks Yes"这个命令又如何呢?

Yeah, it works!

好,解决了!

PXE启动PE 2.0相关下载 by Climbing

注:bcdedit.exe可直接运行于XP/2003环境下并用于创建或者修改BCD文件。

分享到:
评论

相关推荐

    转贴 PXE指南 作者:Climbing (xclimbing@msn.com)

    ### PXE服务器架设与PXE启动WinPE解决方案 #### PXE服务器的构建与功能解析 PXE(Preboot Execution Environment)技术允许计算机通过网络从远程服务器启动操作系统,这一技术在大规模部署操作系统、进行硬件诊断...

    OFDM、OOK、PPM、QAM 的误码率模拟【绘制不同调制方案的误码率曲线】附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    8c71b76fb2ec10cf50fc6b0308d3dcfc_9545878e2b97a84b2e089ece58da9e82.png

    8c71b76fb2ec10cf50fc6b0308d3dcfc_9545878e2b97a84b2e089ece58da9e82

    Android SO逆向-对象的拷贝构造函数.pdf

    Android逆向过程学习

    基于S7-200 PLC的糖果包装控制系统设计与实现

    内容概要:本文详细介绍了基于西门子S7-200 PLC的糖果包装控制系统的设计与实现。首先阐述了PLC在工业自动化领域的优势及其在糖果包装生产线中的重要性。接着深入探讨了系统的硬件连接方式,包括传感器、执行机构与PLC的具体接口配置。随后展示了关键的编程实现部分,如糖果计数、包装执行、送膜控制、称重判断以及热封温度控制等具体梯形图代码片段。此外,还分享了一些实用的经验技巧,如防止信号抖动、PID参数优化、故障诊断方法等。最后总结了该系统的优势,强调其对提高生产效率和产品质量的重要作用。 适合人群:从事工业自动化控制、PLC编程的技术人员,尤其是对小型PLC系统感兴趣的工程师。 使用场景及目标:适用于糖果制造企业,旨在提升包装生产线的自动化程度,确保高效稳定的生产过程,同时降低维护成本并提高产品一致性。 其他说明:文中不仅提供了详细的理论讲解和技术指导,还结合实际案例进行了经验分享,有助于读者更好地理解和掌握相关知识。

    PLC与WinCC实现三部十层电梯协同控制及优化技巧

    内容概要:本文详细介绍了参与西门子杯比赛中关于三部十层电梯系统的博图V15.1程序设计及其WinCC画面展示的内容。文中不仅展示了电梯系统的基本架构,如抢单逻辑、方向决策、状态机管理等核心算法(采用SCL语言编写),还分享了许多实际调试过程中遇到的问题及解决方案,例如未初始化变量导致的异常行为、状态机遗漏空闲状态、WinCC画面动态显示的挑战以及通信配置中的ASCII码解析错误等问题。此外,作者还特别提到一些创意性的设计,如电梯同时到达同一层时楼层显示器变为闪烁爱心的效果,以及节能模式下电梯自动停靠中间楼层的功能。 适合人群:对PLC编程、工业自动化控制、电梯调度算法感兴趣的工程技术人员,尤其是准备参加类似竞赛的学生和技术爱好者。 使用场景及目标:适用于希望深入了解PLC编程实践、掌握电梯群控系统的设计思路和技术要点的人士。通过学习本文可以更好地理解如何利用PLC进行复杂的机电一体化项目的开发,提高解决实际问题的能力。 其他说明:文章风格幽默诙谐,将严肃的技术话题融入轻松的生活化比喻之中,使得原本枯燥的专业知识变得生动有趣。同时,文中提供的经验教训对于从事相关领域的工作者来说非常宝贵,能够帮助他们少走弯路并激发更多创新思维。

    慧荣量产工具合集.zip

    慧荣量产工具合集.zip

    永磁同步电机FOC控制与SVPWM算法仿真模型解析

    内容概要:本文详细介绍了永磁同步电机(PMSM)的FOC(磁场定向控制)和SVPWM(空间矢量脉宽调制)算法的仿真模型。首先解释了FOC的基本原理及其核心的坐标变换(Clark变换和Park变换),并给出了相应的Python代码实现。接下来探讨了SVPWM算法的工作机制,包括扇区判断和占空比计算的方法。此外,文章还讨论了电机的PI双闭环控制结构,即速度环和电流环的设计与实现。文中不仅提供了详细的理论背景,还分享了一些实用的编程技巧和注意事项,帮助读者更好地理解和应用这些算法。 适合人群:电气工程专业学生、从事电机控制系统开发的技术人员以及对永磁同步电机控制感兴趣的科研人员。 使用场景及目标:① 学习和掌握永磁同步电机的FOC控制和SVPWM算法的具体实现;② 提供丰富的代码示例和实践经验,便于快速搭建和调试仿真模型;③ 探讨不同参数设置对电机性能的影响,提高系统的稳定性和效率。 其他说明:文章强调了在实际应用中需要注意的一些细节问题,如坐标变换中的系数选择、SVPWM算法中的扇区判断优化以及PI控制器的参数调整等。同时,鼓励读者通过动手实验来加深对各个模块的理解。

    spring-ai-qianfan-1.0.0-M5.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    Android安全之旅系列博客导读.pdf

    Android逆向过程学习

    【图像处理】基于双目视觉的物体体积测量算法研究附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    3dmax插件按面积分离.ms

    3dmax插件

    spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar中文文档.zip

    # 【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar中文文档.zip】 中包含: 中文文档:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar中文文档.zip,java,spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar,org.springframework.ai,spring-ai-autoconfigure-vector-store-qdrant,1.0.0-M7,org.springframework.ai.vectorstore.qdr

    【ARIMA-WOA-LSTM】差分自回归移动平均方法-鲸鱼优化算法-LSTM预测研究附python代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    永磁同步电机控制系统中平方根容积卡尔曼滤波(SRCKF)的应用及优化

    内容概要:本文详细介绍了平方根容积卡尔曼滤波(SRCKF)在永磁同步电机(PMSM)控制系统中的应用及其相对于传统CKF的优势。文章首先指出传统CKF在处理协方差矩阵时存在的数值不稳定性和非正定问题,导致系统性能下降。接着,作者通过引入SRCKF,利用Cholesky分解和QR分解来确保协方差矩阵的正定性,从而提高状态估计的精度和稳定性。文中展示了具体的电机模型和状态方程,并提供了详细的代码实现,包括状态预测、容积点生成以及观测更新等关键步骤。此外,文章还分享了实际调试过程中遇到的问题及解决方案,如选择合适的矩阵分解库和处理电机参数敏感性。最终,通过实验数据对比,证明了SRCKF在突加负载情况下的优越表现。 适合人群:从事永磁同步电机控制研究的技术人员、研究生及以上学历的研究者。 使用场景及目标:适用于需要高精度状态估计的永磁同步电机控制系统的设计与优化,特别是在处理非线性问题和提高数值稳定性方面。 其他说明:文章引用了相关领域的权威文献,如Arasaratnam的TAC论文和Zhong的《PMSM无传感器控制综述》,并强调了实际工程实践中代码调试的重要性。

    tokenizers-0.31.1.jar中文文档.zip

    # 【tokenizers-***.jar***文档.zip】 中包含: ***文档:【tokenizers-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【tokenizers-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【tokenizers-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【tokenizers-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【tokenizers-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: tokenizers-***.jar***文档.zip,java,tokenizers-***.jar,ai.djl.huggingface,tokenizers,***,ai.djl.engine.rust,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,djl,huggingface,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【tokenizers-***.jar***文档.zip】,再解压其中的 【tokenizers-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>ai.djl.huggingface</groupId> <artifactId>tokenizers</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'ai.djl.huggingface', name: 'tokenizers', version: '***' Gradle (Short): implementation 'ai.djl.huggingface:tokenizers:***' Gradle (Kotlin): implementation("ai.djl.huggingface:tokenizers:***") ``` # 含有的 Java package(包): ``` ai.djl.engine.rust ai.djl.engine.rust.zoo ai.djl.huggingface.tokenizers ai.djl.huggingface.tokenizers.jni ai.djl.huggingface.translator ai.djl.huggingface.zoo ``` # 含有的 Java class(类): ``` ai.djl.engine.rust.RsEngine ai.djl.engine.rust.RsEngineProvider ai.djl.engine.rust.RsModel ai.djl.engine.rust.RsNDArray ai.djl.engine.rust.RsNDArrayEx ai.djl.engine.rust.RsNDArrayIndexer ai.djl.engine.rust.RsNDManager ai.djl.engine.rust.RsSymbolBlock ai.djl.engine.rust.RustLibrary ai.djl.engine.rust.zoo.RsModelZoo ai.djl.engine.rust.zoo.RsZooProvider ai.djl.huggingface.tokenizers.Encoding ai.djl.huggingface.tokenizers.HuggingFaceTokenizer ai.djl.huggingface.tokenizers.HuggingFaceTokenizer.Builder ai.djl.hu

    3.png

    3

    pchook源码纯源码不是dll

    pchook源码纯源码不是dll

    spring-ai-azure-store-1.0.0-M7.jar中文-英文对照文档.zip

    # 【spring-ai-azure-store-1.0.0-M7.jar中文-英文对照文档.zip】 中包含: 中文-英文对照文档:【spring-ai-azure-store-1.0.0-M7-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【spring-ai-azure-store-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-azure-store-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-azure-store-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-azure-store-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-azure-store-1.0.0-M7.jar中文-英文对照文档.zip,java,spring-ai-azure-store-1.0.0-M7.jar,org.springframework.ai,spring-ai-azure-store,1.0.0-M7,org.springframework.ai.vectorstore.azure,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,springframework,spring,ai,azure,store,中文-英文对照API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【spring-ai-azure-store-1.0.0-M7.jar中文-英文对照文档.zip】,再解

    ### XD/XL系列可编程控制器用户手册硬件篇总结. **手册概述

    内容概要:本文档是关于信捷电气XD、XL系列可编程序控制器的用户手册(硬件篇)。手册详细介绍了该系列PLC的硬件特性,包括产品概述、本体规格参数、系统构成、电源及输入输出规格、运行调试与维护、软元件切换等内容。此外,还提供了丰富的附录信息,如特殊软元件地址及功能、指令一览表、PLC功能配置表和常见问题解答。手册强调了安全操作的重要性,列出了多个安全注意事项,确保用户在正确环境下安装和使用设备,避免潜在风险。 适合人群:具备一定电气知识的专业人士,尤其是从事自动化控制系统设计、安装、调试及维护的技术人员。 使用场景及目标:①帮助用户了解XD、XL系列PLC的硬件特性和规格参数;②指导用户正确安装、接线、调试和维护设备;③提供详细的故障排查指南和技术支持信息,确保设备稳定运行;④为用户提供编程和指令使用的参考资料。 其他说明:手册不仅涵盖了硬件方面的内容,还涉及到了一些基础的软件编程概念,但更深入的编程指导请参考相关软件篇手册。用户在使用过程中遇到问题可以通过提供的联系方式获得技术支持。手册中的内容会定期更新,以适应产品改进和技术发展的需求。

Global site tag (gtag.js) - Google Analytics