Welcome to the second part of my guide on converting the DX4000 into a nice little Windows Server 2012 build. In this article, we will cover what is needed to create the auto unattended installation and a couple neat features (at the end). Like usual, please read the entire article before getting started. I tried to make things as linear as possible,… read first, then do.
I would like to start with the bad news and just get this out of the way. There are some caveats to converting the server. Mainly the fact that this is totally not supported by Western Digital in any form. You are on your own. Will this affect my warranty? Potentially. I honestly am not sure… I mean, it is just software… right? It’s not like we are cracking open the chassis and going all cowboy on things. But, we are removing the Western Digital system services that come with the original system. These things controlled fan speed, monitored temperature, gave some control via the front panel for LCD information, and several other things related to the basic Server Essentials web panel. So, just keep this in mind while we progress on this adventure.
When I first learned about the features being integrated into the 2012 platform from Microsoft, I have to admit… I was a little giddy. The system requirements were very reasonable and the DX4000 actually exceeded those specifications. Having been involved in data center services for quite some time, I found that the data deduplication capabilities were just too powerful of a feature to bypass. If you have ever researched or tried to find a good de-dup solution you’ll understand what I mean. They (as in vendors) make it not only ridiculously complicated but pathetically expensive.
Here is an excellent video regarding Microsofts’ implementation: Video Link
(please note his comments at time 15:00)
There were other not-so-mentionable reasons why I chose to do this, but they all added up to be worth the challenge of converting the system.
I had a few goals in mind when preparing this document and process, but my primary goal was to create a non-destructible way to image/re-image the operating system and preserve my data partition. Non-destructible in the sense that the data partition does not get touched at all.
Along with all the requirements from the first article, you will need to copy the following files from the original system to a safe place on your technician computer. Try looking in the Program Files\Western Digital\LPC Driver and WD LCD Provider directories:
Backing up to image:
Before starting to work on the auto unattended installation, I want to emphasize the need to save the original Windows partition. I mentioned this in first article and just wanted to provide an example on how.
Use the bootable WinPE USB flash drive created earlier and boot the DX4000 with the “magic” button. On your technician computer, create a network share. You can assign user security as needed, just make sure the account you will be using has modify or full rights. From the DX4000 console (in the TightVNC Viewer), mount a free drive letter to the network share. For example:
C:\> net use x: \\10.0.0.97\networkshare
Enter the credentials as needed. You will need to make the “system” partition viewable if you want to capture its’ contents to an image. To do this, you’ll need to assign a letter to the correct partition using DiskPart. I apologize, but I do not have an example of this to share, please check the linked reference.
Here are a couple examples of DISM commands you can use to create a backup image of the system and windows partitions:
C:\> Dism /Capture-Image /ImageFile:x:\my-windows-partition.wim /CaptureDir:C:\ /Name:”My Windows partition”
C:\> Dism /Capture-Image /ImageFile:x:\my-system-partition.wim /CaptureDir:S:\ /Name:”My system partition”
Note Disk Layout:
Before you begin creating the auto unattended configuration file, it would be a good idea to familiarize yourself with the partition layout on the DX4000. You can use DISKPART to list the partitions on the system and in doing so will find a layout similar to this:
Partition ### Type Size Offset
————- —————- ——- ———
Partition 1 System 100 MB 1024 KB
Partition 2 Reserved 128 MB 101 MB
Partition 3 Primary 60 GB 229 MB
Partition 4 Primary 8 TB 60 GB
The “main” reason you will want to do this is to verify the partition which contains the operating system. In this case (as shown above), the 60GB partition (or partition 3) will be the one we want to work on. So make note of this! We do not want to ruin our Data partition… that would be bad.
Building autounattend.xml for server 2012:
Using your favorite ISO mounting utility, mount the Windows Server 2012 ISO. Create a new directory in c:\winpe_amd named s2012 and copy all contents from the ISO into it. We will be using DISM to rebuild a customized image, so open the console with administrator privileges. Execute DISM and mount the boot.wim from the C:\winpe_amd\s2012\sources directory, note the added Index switch:
C:\> dism /mount-image /imagefile:e:\winpe_amd\s2012\sources\boot.wim /mountdir:e:\winpe_amd\mount /index:1
Follow instructions from the first article and modify this boot.wim to create a compatible winpe build. Remember to inject the Intel RST drivers and commit your changes.
Use DISM to mount the install.wim file that is located in the sources directory. Please note that this image has 4 indexes, each with its’ own special setup. We will be using Index 2 for this article as it provides us with the GUI installed. You can check the variants by using the following command:
C:\> dism /Get-ImageInfo /ImageFile:<path>\filename.wim
Inject the Intel RST drivers for the RAID controller and commit your changes.
Extending WinPE properties for auto unattended installation:
We will following similar processes from the first article to create our unattended command file. Launch WSIM, keeping the catalog as-is, and open the answer file “unattend.xml” that we created previously. We can save a bit of time this way. Follow the instructions below to add the remaining properties and complete our auto unattended command file:
In “windows image” pane, drill down to the amd64_microsoft-windows-setup_neutral section, expand, and locate diskconfiguration > disk, right click and add to pass 1. In answer file pane, drill down the properties:
- Delete “createpartitions”
select modifypartitions and change the properties:
- Action : “modify”
- Format: “ntfs”
- Label: “Boot”
- Letter: “C:
- Order: “1”
- PartitionID: “3” (note: verify your windows partition!)
- TypeID: “ebd0a0a2-b9e5-4433-87c0-68b6b72699c7”
Select “Disk” and change properties:
- Action: “modify”
- DiskID: “0”
- WillWipeDisk: “false
Select “diskconfiguration” and change properties:
- Willshowui: “onerror”
In “windows image” pane, drill down to the amd64_microsoft-windows-setup_neutral section, expand, and locate ImageInstall > OSImage > InstallFrom > MetaData , right click and add to pass 1. Also include ImageInstall > OSImage > InstallFrom > InstallTo. In answer file pane, drill down the properties:
Select “MetaData” and change the properties:
- Action : “AddList Item”
- Key : “/IMAGE/INDEX”
- Value : “2”
Select “OSImage”, change properties:
- WilShowUI : “OnError”
Select “InstallTo”, change propertie:
- DiskID : “0”
- PartitionID : “3” (note: verify your windows partition)
In “windows image” pane, drill down to the amd64_microsoft-windows-setup_neutral section, expand, and locate UserData > ProductKey , right click and add to pass 1. In answer file pane, drill down the properties:
Select “ProductKey” and change the properties:
- Key : “xxxxx-xxxxx-xxxxx-xxxxx-xxxxx” (enter your product serial key)
- WillShowUI : “OnError”
Select “UserData”, change properties:
- AcceptEULA : “true”
- FullName : “<company-name” (enter your company name)
In “windows image” pane, drill down to the amd64_Microsoft-Windows-International-Core-WinPE__neutra section, expand, and locate SetupUILanguage, right click and add to pass 1. In answer file pane, drill down the properties:
Select “SetupUILanguage” and change the properties:
- UILanguage : “en-us” (or your appropriate language code)
- WillShowUI : “OnError”
Select “amd64_Microsoft-Windows-International-Core-WinPE__neutral” and change the properties: (again, use your appropriate language code as necessary)
- InputLocale : “en-us”
- SystemLocale : “en-us”
- UILanguage : “en-us”
The WinPE section of the answer file should now be complete and look similar to the following:
Add specialized capabilities to the installation:
We will only require the use of TightVNC during the first portion of the installation process. This provides us with a way to connect to the server and check its’ progress or for errors. Just note, there will be “black out” periods during the windowsPE configuration pass when we will not be able to connect with the TightVNC Viewer. Once the WinPE pass is completed, we will enable RDP capability and use RDC from the technician computer to manage the system. Microsoft provides an overview of these passes in TechNet.
In “windows image” pane, drill down to the amd64_Microsoft-Windows-Shell-Setup__neutral section, expand, and locate AutoLogon > Password, right click and add to pass 4. In answer file pane, drill down the properties:
Select “Password” and change the property:
- Value : “<enter a password>” (used for administrator account)
Select “AutoLogon” and change the properties:
- Enabled : “true”
- LogonCount : “2”
- Username : “Administrator”
In “windows image” pane, drill down to the amd64_Microsoft-Windows-TerminalServices section, expand, and add LocalSessionManager as well as RDP-WinStationExtensions to pass 4. In answer file pane, drill down the properties:
- Under LocalSessionManager properties, set fDenyTSConnections to “false”
- Under RDP-WinStationExtensions, set the properties for SecurityLayer to “1” and UserAuthentication to “0”
Complete OOBE pass settings:
While we did disable the firewall settings for the WinPE pass, we need to actually configure the firewall to accept RDP sessions during run-time. If not, then we have no way to access the system remotely once the configuration passes complete and the system is in operation mode. This is enabled during the oobesystem configuration pass and can be done automatically for us by added the following:
In “windows image” pane, drill down to the amd64_Microsoft-Windows-Shell-Setup__neutral section, expand, and locate FirstLogonCommands > SynchronousCommand and add to pass7. Add this twice to the answer file. In the same section, locate UserAccounts > AdministratorPassword and add to pass 7. In answer file pane, drill down the properties:
Under one of the “SynchronousCommand”, change the properties:
- Action : “AddListItem”
- CommandLine : “netsh advfirewall firewall set rule group=”Remote Desktop” new enable=yes”
- Order : “1”
Under the other “SynchronousCommand”, change the properties:
- Action : “AddListItem”
- CommandLine : “shutdown /L”
- Order : “2”
In UserAccounts, Select “AdministratorPassword”, change the property:
- Value : “<enter a password>” (use the administrator account password)
The above instructions will configure the firewall to allow us to connect with RDC from the technician computer. We have finished all basic requirements to create an auto unattend installation instructions. Save the answer file as “autounattend.xml” into the directory where we copied the contents of the original installation media (c:\winpe_amd\s2012).
Format your USB flash drive to make it bootable, and copy the contents of this directory to it. Perform the “magic” button steps from the first article, sit back and relax… well done.
What to expect?
While the system performs the setup, you can periodically check it with ping to see if its’ alive and connect with TightVNC Viewer. There will be times when you are not able to connect, don’t panic. These “black out” periods are annoying, but just keep checking to see if the system is alive. After the oobesystem pass is complete you should be able to use Remote Desktop Connection to access the system. If you run into a problem, or are not able to access the server, just wait and make sure the drive lights are not flashing and power it down. Just be patient, and make sure the system is not performing a long operation during the installation. If I remember correctly, the entire installation took about 15 minutes and rebooted a couple times to complete.
Ok, are we done yet?
Not yet, the system is showing a message like “Loading OS, Please wait…”? Yes, we have a couple things to do to wrap this up. If you recall my notes regarding some caveats to doing this, we no longer have Western Digital management services controlling the LCD output and Fan speeds. The LCD is a minor annoyance; however, the fan speed situation is not good. By default, the system reset lowers the fan speed. Let’s correct that.
Setting Fan speed
Remember those requirements and I said to get 4 files from the original computer? (lcd.exe, inpoutx64.dll, sioapi.dll, and sioutil.exe) Well, if you didn’t and you made a backup image of the original system to your technician computer, you could mount that image and look for the files. Otherwise you will need to acquire the Sentinel Recovery ISO and find them there. However you acquired them, put them on the USB flash drive, and copy them into a directory on your DX4000 windows partition. I placed them in C:\LCD, but use what you want. Open a command prompt and change to that directory. Execute the SIOUTIL file with the following switches:
C:\> sioutil setfan sysfan 255
This sets the fan speed to the highest level (between 0 and 255). In my situation, this works fine as I live in the southern United States where it is freakin’ hot… everywhere. The ambient temperature of my room averages 25 °C, so my unit runs a little warmer than I prefer ( 32°C ±3), but it’s acceptable.
I took a little time to check the values for fan speed control (0 – 255) and I believe the following chart is fairly accurate:
I graphed the temperatures for my system when I initially started working to test the various fan speed settings. In the following chart, you’ll see a plateau reached around 2100 RPMs. You may find different results for your environment, so just keep an eye on it and adjust it to your needs. These tests were done in the middle of winter and the ambient temperatures in the room where lower than normal.
What about that LCD?
To keep this article short, I’ll give you the quick and dirty on this thing. Open a command prompt and change to the directory where you place those 4 files I told you about earlier. Execute the following to clear the display:
C:\> lcd clear
To output a text stream to the display execute something like the following commands:
C:\> lcd 0 “ALL YOUR BASE”
C:\> lcd 1 “ARE BELONG TO US”
And so, there you have it… your own personalized system message J Yes, that is a little silly and not so useful for us Admin types, but those are the basics. With a little sweat, you can create a PowerShell script to clear the display automatically and set the fan speed… perhaps using Task Scheduler.
Why did you make me download the ProWinx64 file?
Well, now that you have 2012 running and are able to RDC into the unit, you can install the proper NIC software and enable teaming! Go for it…
Well, besides warning you about all that stuff regarding how I take no responsibility if something goes wrong and that Western Digital will not support you with this conversion. The customization of the auto unattended installation and use of the DISM tool is beneficial for many situations besides this one. The knowledge will carry over into other areas and I hope that you found this article at least interesting and informative.
I decided to do a quick and dirty example on how to control the fan and LCD so that anyone wanting to get started with this conversion can do so. However, I have spent quite a bit of time learning more about the system LCD microcontroller. Unfortunately, I do not have a full grasp of the SIO controller portion yet, so I will probably just leave the fan controller alone… for now. With that said, I do have a few PowerShell scripts that I’ve been working on to program the LCD. In the next, and last article, I’ll discuss this in detail and provide some sample scripts that will give any administrator the capability to provide useful information to the display.
Good Luck out there!