Welcome to the first edition of Windows XP Embedded Weekly… Based on popularity, this might only be a monthly or bi-weekly updated post so the name might still change! I will start by answering two of the most common questions briefly:
Q) What is Windows XP Embedded
A) XPe is a componentized version of Windows XP Professional. It uses the exact same binaries.
Q) Why should I use XPe
A) Smaller footprint, Win32 API Support & Embedded enabling features are just some of the advantages
Tips & Tricks
The following tips & tricks might be usefull building your first image:
TAP a "pure" XPProSP2 installation
Do not run the 16-bit version of Target Analyzer (TA.EXE) under DOS. Do not run the 32-bit version of Target Analyzer (TAP.EXE) under a Windows PE (or BartPE) boot. Do not run TAP on a XP Home or Pro installation that has been updated with drivers or other patches.
Install Windows XP Professional with Service Pack 2 (XPProSP2) on the system, and do not update any drivers. Leave them as-is. That is the absolute best way to generate the most "pure" Devices.PMQ file for use in the next recommendation. I have had nothing but issues with TAP when run under a Windows PE environment (let alone TA in a DOS one).
Yes, still do this even if you have 3, 4, 5+ "Unknown Devices" under Device Manager in XPProSP2, or if you normally update drivers. As long as the XPProSP2 installation can boot on its own (meaning the storage driver and other core components work), this is the "pure" Devices.PMQ file you want.
Do not worry about having all or the latest drivers installed in XPProSP2 for Target Analyzer. The PCI vendor/ID information will result in updated drivers in the Component Database being used when you build a target. In fact, I've found that sometimes updating the driver in XPProSP2 (e.g., the ViA Ultra ATA Bus Master driver) and then seemingly importing its "equivalent" SLD component into the Component Database (e.g., from ViAEmbedded.COM) does not work as it should. It's far better to stick with the "older" driver under XPProSP2 when TAP runs, than what you have updated in your Component Database.
Regarding missing drivers and, therefore, devices missed by TAP that don't make it into your Device.PMQ and, subsequent, SLD file, just manually add them to your target. The First Boot Agent (FBA) will automatically configure any missing devices as long as their components were included in the target. So just because they weren't setup under XPProSP2 when TAP was run doesn't mean they won't be available in XPE -- because that's the job of the FBA, to find all hardware and setup such devices.
To summarize, the focus of the Device.PMQ is to get a full set of "pure" components that will let XPE boot. Running the 32-bit version of Target Analyzer (TAP) under a "pure" (no added drivers/software) Windows XP Professional with Service Pack 2 (XPPProSP2) is the best recommendation I can make given 50+ hours of trial and error with 3 different SBC/Mini-ITX systems.
Fixed Disk CompactFlash boot requirement
This is one of the most grossly overlooked aspects of XP Embedded, and virtually ignored in Microsoft's own documentation. Unlike DOS (including Windows 9x) and Linux, the NT loader (NTLDR) has some very picky requirements on CompactFlash boot.
First off, the more well-known fact is the reality that the CompactFlash must be connected to an ATA channel. I knew this from the get-go, and made sure I had SBC/Mini-ITX systems with either ATA-to-CompactFlash logic on-PCB, or an external ATA-to-CompactFlash adapter.
Secondly, and far less well understood, is the fact that the CompactFlash must appear as a "fixed disk" with a "partition" and not as a "removable" device. I use the terms "partition" and "removable" explicitly as they would appear under NT5 (2000/XP)'s DiskPart utility. Boot Windows XP, Windows PE or BartPE and run DiskPart to see the format type.
There is a lot of commentary out there that an ATA-to-CompactFlash adapter removes this requirement. This is completely false. It's not geometry, ATA format or other issue -- it's the way the CompactFlash device itself presents. Now for DOS or Linux, it has no issue. But for Windows XP, the NTLDR absolute does not want to boot from anything that identifies itself as a "removable" device.
The reasons for this stem from countless, legacy NT design flaws and other ways to prevent (or at least inhibit) copying of a NT system that still plagues NT5+ (2000/XP). I won't go into the extensive technical reasons. But even if you use an alternative master boot record (MBR) and even some disk translating bootstrap, there appears to be no way around the issue.
In a nutshell, the "fixed disk" format is incompatible with "normal consumer usage," so you cannot find them anywhere but from a few CompactFlash vendors as a specialized OEM/Industrial part. And even then, it's typically an added P/N for the "fixed" configuration. E.g., SimpleTech's part numbers are typically of the form SLCFxxxJ-F (the "-F" suffix meaning "fixed" configuration).
The good news is that these devices typically come from the factory with the bootstrap already setup with the bootstrap for NTLR. So it's just a matter of copying over the file tree. No need to run BOOTPREP or any other utility. I mean, and side note/rant here, isn't it ironic that you have to use a set of 16-bit DOS utilities like BOOTPREP, which is always an issue in supporting a 32-bit OS like NT which may differ in geometry, hardware access, etc...?
Taken from BS Blog
Links
Windows XP Embedded Wiki
https://channel9.msdn.com/wiki/default.aspx/Channel9.WindowsXPEmbedded
Windows XP Embedded SP2 Feature Pack 2007
http://www.microsoft.com/downloads/details.aspx?FamilyID=9bdf1dea-a37e-4d25-83df-aabbaa78914f&displaylang=en
And that is all for the first edition… If you need a copy of XPe Trail Edition or have any questions, please email me at rudi@cme.co.za. Any suggestions on how to improve the blog or any subjects that need to be covered would be appreciated…