Sunday, September 09, 2012

Scratching at a SCSI Drive Itch - Part II - WinPE Redux

In the first installment, Scratching at a SCSI Drive Itch - Part I - Hello Ubuntu, we were siting on this problem:

  1. I had a bevy of Dell PowerEdge servers to secure wipe.
  2. Each sever used a SCSI controller board and held two SCDI drives of varying size.
  3. I was using DBAN / Darik's Boot And Nuke to do a DoD 3-pass short wipe pattern on them.
  4. I was seeing random “non-fatal” error reports when wiping was done.
  5. I wanted to perform a secondary sector-based verification of the wipe efficacy.
  6. My custom WinPE 3.0 boot-CD disk didn’t have the needed drivers and I was having great difficulty finding them.
  7. I worked out using Ubuntu to accomplish the task, but it wasn’t time-efficient.
  8. A storm was brewing and development time for a solution was short.

The Rub…as they say…

was in the particular set of Adaptec SCSI controller drivers I needed.

The bad news was that I had a collection of Dell PowerEdge server models from 1300’s to a 2800, and just about all steps in between.

The good news is that in using DBAN, during the system and SCSI hardware boot process, they listed themselves. I noted they were the following:

  • Adaptec AIC-7890
  • Adaptec AHA-2940
  • Adaptec AIC-7860

At least I had something more specific to search for…now could I just find them in a WinPE 3.0 compatible driver format?

WinPE Revisited…Tip #1

Apparently, I wasn’t the only one who had encountered this problem finding WinPE drivers for Dell servers.

Chris Osborn had also run into a similar challenge and documented it in his fairly recent post Insentricity :: Installing Windows 7 Without a DVD Drive ::

In his case he was trying to install Windows 7 on a Dell PowerEdge sever (different model from my collection) via USB from a WinPXE source. Only it didn’t have the Adaptec SCSI controller drivers needed. Sounded familiar.

In Chris’s case, he was able to track down the specific Adaptec AIC driver file source.

The problem after booting the WinPE was that it refused to see the HD. After lots of googling trying to figure out how to add drivers to the WinPE image I finally found the secret incantation. It actually wasn't too bad, the real trick was figuring out what to download from Dell. Even with the service tag entered on their site, they give you back an abundance of "things" that may or may not be the driver you're looking for. When I tried the first SCSI driver I downloaded it didn't work so I spent a long time trying to figure out how to convince the WinPE to load the driver. I then decided to try a different driver from Dell, and sure enough, it worked right away.

I could do all that I suppose, but trying to figure out which was the correct Adaptec driver I needed from each of the Dell PowerEdge server driver pages, unpack the Dell driver executable package, and then drop them into a LiveCD to test each time (hoping they would work under PE 3.0) still seemed like a lot of work. Though it did leave me hopeful.

WinPE Revisited…Tip #2

Next I stumbled upon Dell’s AppAssure product page while searching for Adaptec SCSI drivers in the particular models I had.

This page, Protecting and recovering an EFI system looked promising and seemed to use a custom WinPE platform Replay Recover Anywhere (RRA) to accomplish its mission. Additional digging on the site led me to a PDF file of the tool that talked about both the “RAA Driver Library” and listed the ones provided. Sure enough, there on page 22 were the SCSI Adaptec drivers I was looking for…and then some!

Basically the process was thus, download the Boot CD Builder. Next, get the driver download package for the Replay 4 Boot CD Builder and unpack them.

Then, install the RRA Boot CD builder and inject the readied driver pack. Burn the CD. Done.

Simple, right?

Well, not exactly. Turns out as cool as the RAA building tool is for us WinPE geeks, it requires provision of a product License Key to work.

Not so good, but not a total loss as I got some good takeaways.

  • Even if it can’t be used directly, you can download/install and get all kinds of components out of the BootCD building package including some drivers, some interesting WIM files to pick around, and it was interesting learning and exploring the building tool’s file structure and components.

    Below you can see the folder structure for the AppAssure Boot CD Builder installation.

    hz5x40er.h0a
  • The collection of controller drivers for WinPE was golden and too vast to list. It was freely accessible and was easily downloaded, unpacked, and readied for use as needed in this project. Some of these may or may not work under WinPE 3.0, but it’s a good place to start in a single location for a wide range of hardware. Below you can see a list of the folders (and sub-folder “AlternateDrivers”) that the package provides.

5lyslzrj.tw3

WinPE Revisited…Tip #3

I next found this forum thread for someone looking for Windows 7 (WinPE 3.0) Adaptec driver.

Unable to locate Windows 7 compatible driver for Adaptec AIC-7892 - Microsoft Answers

Seemed a stupid thing, but I popped over and dug around on Adaptec’s site. I won’t link to everything I chased but the following should get interested folks started.

It took me a while but I quickly confirmed that it pretty didn’t much matter what family/driver I needed, they were bundled together and all paths led to a few Roman cities, and Windows 7 was listed as a supported driver! Yea!

I also found that the driver packages themselves, being both small in number and small in size, and Windows 7 supported, would not add too much size to my pre-existing custom WinPE 2.0 build.

So for good measure I went ahead and snagged every Adaptec “Ultra” SCSI driver hardware pack download I could find along with the 2940 Family pack. I think I also grabbed the “SAS-4000, SAS-4800SAS, SAS-4805SAS” pack as well. It may sound like a lot but in the end it resulted in just 4 or 5 zip file packages to unpack and tuck away. Just pay attention to the ultimate pack filenames and you will see what I am talking about.

I finally had my WinPE 3.0 Adaptec drivers! Success was in reach.

By the way, did I mention I also found this?

Dell Driver CAB files for Enterprise Client OS Deployment - Enterprise Client - Enterprise Client - Dell Community TechCenter

At the very top of the page you will find WinPE 2.0 and WinPE 3.0 Driver CABs for Dell Enterprise class systems (Latitude, Optiplex, Precision). The WinPE 3.0 collection is very fresh (07/2012).

The log-jam had broken and the flood was coming!

Inject Me!

Next we have to get the drivers added into the existing WinPE boot.wim file.

I’ve mentioned it before, but “wmmayms” had a great, well-illustrated guide that walks one through the process.

Guide: Adding drivers to a custom winPE (3.0) - boot images - Windows-Noob. This post explains just about everything you need to know about the manual/command-line process. It uses the DISM.exe tool and is pure command-prompt based, baby.

Then these additional guides are great and clear supplements.

DISM - WinPE 3.1 Boot Environment - The IT Bros. In this alternative guide and building method, Brian Jackson takes us on a most-excellent walkthough from start to finish. Not only does he help us from the very start in collecting our materials, but besides the command-prompt, Brian offers some custom WinPE 3.1 Scripts of his own and then leverages one of my favorite WinPE wrangling tools, GImageX.

You might also want to compare both of these methods with this Create a WinPE Bootable disk to Support Dell Hardware (NIC, Mass Storage Injection) - OS and Applications - Dell Community TechCenter article as well. Give your attention to the “Winpe” section at the top. This outlines a slightly different technique using imagex.exe.

Of course, this assumes your system has all the bits needed. While I have all my previous custom WinPE files/folder structure handy I ran into a problem.

For some reason, even though my latest custom boot disk was a WinPE build, somehow my work system was still loaded with the Vista (WinPE 2.0) WAIK kit.  As such I was missing the DISM tool that first made it’s appearance in the Windows 7 (WinPE 3.0) WAIK.  You may want to follow up with the Windows 7 WAIK Supplement for Win 7 SP1 if desired. I didn’t.

So I uninstalled the Vista WAIK, rebooted, and then considered the System requirements for the Win 7 WAIK. I noticed XP wasn’t listed and my work system is still running Windows XP Pro SP3. Would it balk and make me move my building to a Win 7 lab PC? Nope. Installed and worked just fine, thank you very much.

Note: there are a number of ways to build a WinPE boot disk without all the WAIK overhead if you desire. This takes it’s own amount of work and dancing. I've used the WAIK for so long it is second nature to me but you may want to consider it if this is new to you.

Now I could have stopped here and followed wmmayms’ guide and after some CLI-fu had it up and running.

But where’s the fun and discovery in that?

Cool Tool MegaFind!

See, in my Google-work I had run across a super-cool -- and new to me -- GUI front-end for manipulating the DISM and injecting drivers into a WIM file.

OMG! Bonus score!

DISM GUI - CodePlex project page developed by mikecel79 (Mike Celone). Mike's Blog

DISM GUI is a graphical interface for the DISM command line utility written in the .NET.  DISM GUI allows you to mount and dismount WIMs, manager drivers, features and packages.

I didn’t find any documentation on using the took, however, if you are even reading this post or know what the DISM.exe file is/does, then you already pretty much know what you need to know.

Here’s a brief walkthrough just in case.

Download the file linked above at CodePlex

Extract the ZIP file contents. You will get a single file called “DISM GUI.exe”

Move/Copy it into the location where your appropriate DISM.EXE file is. On my Windows 7 x64 system it is showing in four locations:

  • C:\Program Files\Windows AIK\Tools\Servicing\Dism.exe
  • C:\Program Files\Windows AIK\Tools\x86\Servicing\Dism.exe
  • C:\Program Files\Windows AIK\Tools\amd64\Servicing\Dism.exe
  • C:\Program Files\Windows AIK\Tools\ia64\Servicing\Dism.exe

Since my WinPE 3.0 building is to support x32 systems, I picked the x86\Servicing location.

I already extracted all my special driver packages which had been downloaded. In my C:\winpe_x86 building folder, I created a folder called “Drivers-To-Inject” and dumped the unpacked folders/contents into it.

Launch “DISM GUI.exe” from the shortcut you made. I ran mine as Administrator, though that may not be necessary depending on your system particulars.

On the first tab, “Mount Control” select your WIM location to mount. In my case I just have a single index build, so I left the index location alone.

Next select the Mount Location where the WIM will be “unpacked” to temporarily.

Finally click the “Mount WIM” button to get started.

gsx0pmra.hql

You should see some output of the commands in the bottom pane. Hopefully it was successful. Depending on how large your wim file is, it may take a while. Be patient.

Next, let’s add our drivers.

Select the “Driver Management” tab.

Click the “Choose Driver Folder” button and browse to the location you put your drivers in. In my case I created a folder called “Driver-To-Inject” and then there is a sub-folder for the Adaptec drivers, a sub-folder for the Dell WinPE 3.0 drivers, and a third sub-folder for the Dell AppAssurance driver collection.

Since I had the “Recurse” check-box selected, it will add ALL the drivers it finds under the main folder. Doing it this way saves a lot of time if you have a lot of separate driver packs to add.

Once you have everything…just click the “Add Drivers” button to inject them into your mounted WIM.

zcgfehz4.l13

Again, that process may take a while to complete depending on the number of drivers you are adding. Be patient and once done you should see the output in the window pane below. Your results may vary based on the drivers you install.

vu0df3kx.z33

Once all is done, you need to dismount and commit the changes you made to your WIM file.

Go back to the first tab “Display WIM Info” and punch the “Dismount WIM” button. You will then be presented with an additional dialog window confirming you want to commit (save) the changes made to your WIM. Select “YES”

13iuzskb.mij

It will take a while again, but once done, your WIM should now be packed with all the additional drivers injected into it to work as needed when you boot your mastered WinPE disk/USB.

The DISM GUI tool makes this entire process a breeze.

Other similar tools I’ve mentioned here at GSD during my previous WinPE building posts worth reminding you about are:

  • GImageX - AutoItScript. This is a great GUI tool that makes working with the WAIK’s Imagex.exe file tool so much simpler.
  • Je Jin's DISM Tool - Another (not so intuitive but pretty powerful) GUI front end for DISM.exe.
  • GUI Dism ELDI v3.0.2 - Early Java version by ELDI developer. His main website is down (or very slow loading). However his latest version appears to be hosted at this MediaFire link and contains several packages that I understand now support the WinPE 4.0 (Win8) WAIK PE’s. unlike the v3 build that is based on Java, this newer one uses .NET. I’ve not played with them. See this GDism ELDI v6.2 forum post for the access bits you need for the MediaFire downloads as well as running discussion on the tool.

Additional notes,

It also supports adding in additional “packages”. See this TechNet page for more on those; Add a Package to a Windows PE Image.

It can also install additional “features” packages as well such as the WinPE-WMI Feature pack, language packs, and the WinPE-Scripting Feature pack. My needs are pretty simple so I skip these. The tabs and controls are very intuitive so if you know you want them, you should be able to figure out how to use this tool to get them in with no issues.

Almost Done!

Now in my case, I already had a lot of bells and whistles added into my previously built WinPE 3.0 building structure.

Besides all the custom apps I had previously included, I also dropped the following apps/folders into my c:\Temp\winpe_x86\ISO folder location so they would be included and accessible off the WinPE CD specific to my needs for this project. Remember the whole point is to use a GUI-sector editor to check the drive sectors out for confirmation of wiping efficacy.

  • HxD - Freeware Hex Editor and Disk Editor’ - mh-nexus
  • wxHexEditor - a Free Hex Editor / Disk Editor for Huge Files or Devices. This is the Windows binary previously discovered in the last post.
  • Forensic Acquisition Utilities - George M. Garner Jr.s awesome command-line collection. Selected as it has a Windows “dd” equivalent just in case as well as the “Volume_Dump.exe” tool to provide volume and drive information.
  • dcfldd - another Windows binary written by Nicholas Harbour which has some “dd” command ability..and then some.
  • TestDisk - CGSecurity. This was added because TestDisk will discover and report all drives and drive path formats it finds. Helpful for quickly confirming your drives are visible and attached, and what size they are. Something FAU’s “Volume_Dump.exe” also does handily.
  • DHE Drive Info - Dipl.-Phys. Dirk Hauschild. This is a super nice tool for getting all kinds of drive info from a system. It does require the MSVBVM60.DLL file to run, so if you add this app to your WinPE disk, be sure to find and copy “MSVBVM60.DLL” from your system along with it to run properly.
  • Drive Manager - A freeware disk-info tool from Alex Nolan.
  • DiskSmartView - NirSoft. Also provides disk info, I was using it to confirm sector information.
  • HDD Wipe Tool - HDDGuru. Just in case…

Feel free to add additional ones depending on your needs. If you aren’t getting too crazy and are just using the base WinPE image WIM file, you should be aware you only boot to a simple Command Prompt window interface. If CLI navigation isn’t your thing, you may want to also add a simple windows file explorer like Explorer++ or My Commander to the root of your disk (copy the binary into the ISO folder). Then when you get to the WinPE command window, just type D:\EXPLORER++.EXE (or whatever the application name is) and get navigating in a handy GUI to browse to your tools.

Depending on the issues seen (for example the drive was not zero-out as believed) I could then use the WinPE embedded command DISKPART> clean all to zero out the drive again, or the FAU’s “dd” or DCFLDD to zero it out as well. The options are many.

Note: if you are using a WinPE CD format, then you may need to confirm they will work off a CD OK. If they need to read/write, you will have to do some other things, like dropping them into your “mounted” WIM before dismounting/committing it so they will be on the X: “RAM Drive” and can operate properly. Some may also require some additional dll dependencies that you will need to find/copy over from your system for them to run properly as well.

Wrapping it all up...

The last thing we need to do is “master” the WinPE package into an ISO file.

Go to the Start menu and under All Programs find the Microsoft Windows AIK folder and launch Windows PE Tools Command Prompt, or open a command prompt and type

cd c:\program files\Windows AIK\Tools\PETools.

Then, type (note your correct paths and change accordingly, mine for this particular project are listed below).

oscdimg -n -bc:\winpe_x86\etfsboot.com c:\temp\winpe_x86\ISO c:\temp\winpe_x86\winpe_x86_Injected.iso

(all one line)

In my case, a WinPE 3.0 bootable ISO file named “winpe_x86_Injected.iso” was created inside the c:\temp\winpe_86 folder.

With the ISO image file created, you can now burn the image file to CD.

I personally stick with the CD sized builds as almost every system we touch (old and new) comes with a CD-ROM drive. This is particularly true with these servers. If you try to burn a DVD sized ISO with the normal instructions above it will error out.  You must use the undocumented "-m" argument in your string to force it to build the ISO over the normal CD-sized ISO size.  Use the -m switch to override the creation of ISO images larger than 700 MB.

oscdimg -n -h -m -bc:\winpe_x86\etfsboot.com c:\temp\winpe_x86\ISO c:\temp\winpe_x86\winpe_x86_Injected.iso

Deploy! Boot! Verify!

Once the work was done, I used the disk to boot one of the now DBAN DoD 3-pass short wiped/zero’ed Dell servers.

The server booted, the WinPE boot disk was accepted and booted the system.

The driver/hardware discovery process completed and WinPE was up and running.

I launched TestDisk to quickly see if both drives were visible;

  • Disk /dev/sda
  • Disk /dev/sdb

…were both reporting. I noted the location naming path and the sizes.

I then launched HXD, my favorite GUI-sector editor. I mounted /dev/sda and quickly scrolled through the display to confirm all zero’s were showing and no non-00 data was present. Good.

I then launched wxHexEditor and repeated the process for both disks. Great.

Zero’s across all sectors as far as the eye could see.

At this stage I was pretty sure DBAN had done the job.

1fttbckp.5ps

Not my actual custom WinPE disk, but a serviceable basic WinPE 3.0 facsimile for illustrative purposes running in a VirtualBox session. Hopefully you get the idea.

Shut down the WinPE session, eject the disk, confirm one more time the physical drives found inside the server chassis matched the number confirmed wiped as above.

Repeat for the next server…

The newly updated WinPE 3.0 (now SCSI controller supported) disk had saved the day again.

Mischief managed.

--Claus V.

 

Bonus Linkage: Additional Valca custom WinPE building blog-post links to check out in case you are just joining the Grand Stream Dreams blog fan club. All organized in one place for quick research and reference.

WinPE 2.0, 3.0 (Win 7), and 4.0 (Win 8) super freaky/tweaky custom building posts

These posts move on beyond CD/DVD media WinPE formats to bootable WinPE USB platforms. These are much faster loading and can make use of “portable” application access from your WinPE OS much more simple.  I also show how to multi-boot a WinPE device on USB and CD/DVD media.

WinPE 2.0 (Vista WAIK based) building posts

For dead-simple custom WinPE 2.0 / 3.0 building projects, check out WinBuilder package tools over at their Projects - reboot.pro pages.

Note WinPE 1.0 (XP WAIK based) is very outdated. I cut my WinPE teeth using old BartPE building tool to make custom WinPE boot CD’s. It worked great and was very slick but Microsoft’s WinPE 1.0 license restrictions were very tight. It has been mentioned glowingly in the way-past here at GSD but, seriously, it’s time to move on…

--CV

No comments: