To Core Or Not To Core

I started a thread on the Minasi forum today wondering if people would think I was crazy or not.

I like Windows Server 2008.  2003 was excellent and 2008 has jumped way ahead.  It’s stable, modular and easy to use, e.g. clustering is a dream.  One of the things that got loads of PR was Server Core.  I was determined to deploy it in the Hyper-V cluster I’m deploying now.

I set up a pilot build to work out the kinks of the hardware and the OS configuration.  I’ve been having a few hardware issues and troubleshooting them on Core is impossible.  Pure, 100% impossible.  I can do certain amounts using remote GUI’s but it’s not the same.

We use HP hardware that’s monitored using OpsMgr 2007 with the HP management packs.  You soon discover the SIM agents have V8.0 issues.  I tend to disable the remote management and the performance SIM agents because I don’t need them.  Unfortunately, the GUI for configuring them is not available in Core and I don’t know of a command line option.  HP haven’t publicly documented one that either their search nor Google can find.

We know that getting Broadcom NIC’s working with VLAN trunks requires an advanced configuration of the NIC.  Apparently there’s a script we can write to get this working on GUI.  Great – more crap I have to learn.  If I was a single function administrator then maybe I could invest several weeks getting to grips with that.

I made a simple mistake when configuring a virtual switch in Hyper-V on the parent OS NIC (I wanted to be able to get VM’s onto the management network for initial build configuration).  My parent OS on that server went offline.  I got onto ILO to log on locally on that box.  However, what the hell is the command to undo what I did?  I could probably find powershell to run it …. but powershell isn’t available on Core!

So the long and short of it is that I decided that Core is not ready for me yet.  MS needs to come up with operational docs for all the roles and features on Core – locally on the machine itself and not via the network/WMI.  And the OEM’s need to catch up too.

I kicked off a thread on the Minasi forum to see what people thought.  I expected to get slammed because Core has been a popular idea.  I was shocked (and relieved) to see people had the same experiences as me.

W2008 Clustering and HP EVA

I’m preparing a Windows Server 2008 cluster on HP BL480C G1 blade servers with an EVA SAN.  Windows 2008 clustering is EASY to set up … really easy.  The restricted HCL for clusters is no more; instead you can use pretty much anything on the Windows Server 2008 HCL.  You assemble the hardware, install the OS, install the failover cluster role and provision the network/storage.  You then run the wizard for creating a cluster on a management node, e.g. a Vista SP1 or W2008 machine with the Failover Cluster (feature) tools installed.  A scan checks the health of the config either saying that MS PSS will support the configuration or not.  If you get a "yes" then you’re good to go.

I just did this to create a cluster.  The first run failed with the error "Cluster Disk 0 does not support persistent reservation" in the storage set of checks.  This refers to a change for Windows Server 2008 and how it handles shared storage.  I did some googling and found where someone with an EVA SAN had identified their own fix on a forum thread.  The solution was simple enough.  In the EVA command view, you need to be sure that the nodes running Windows 2008 that are using the SAN are configured as "Microsoft Windows LH" (as in Longhorn, the codename for W2008) and not "Microsoft Windows".  Rerun the test and you’ll find that you will get a pass for that test.

BL460C G1, NC373i, WDS, W2008 and Boot.WIM

I’ve been working with HP’s BL460C G1 blade servers recently.  I’m putting together a network "my way" and part of that is using Windows Deployment Services for OS deployment.  Reasons?
 
  1. It’s free.
  2. It’s good.
  3. It’s quicker for DVD installs than ILO mounted ISO’s.
  4. I can make template images for physical images that I can quickly deploy.
  5. The images are disk space efficient – moreso than Ghost.

The trick to getting WDS to work is to get a boot image working.  It took a while for this model of server because the onboard NIC, the NC373i, is not supported in Vista or Windows Server 2008 out of the box in for the pre-installation environment.  That means it’s driver is not in the boot.wim on the DVD.  Here’s my start to finish guide on getting things working:

  • Get a Vista SP1 machine.  I use a virtual machine (VM) that I can reset quickly.
  • Install WAIK for Vista and Windows Server 2008
  • You’ll find that there is no download for the NC373i driver (not at this time) from HP.  I found a Broadcom driver but only in setup.exe format and not in the required .inf, .cat and .sys format.  Download the latest version of the Network Configuration Utility for your OS architecture. I.E. I’m deploying x64 Windows so I’m using x64 boot.wim.  I downloaded the HP NCU for W2008 x64.
  • Extract that.  Under W2008x64 you’ll find a series of the HP setup/extaction files.  Extract them until you find a series of files called bx*.inf, bx*.cat and bx*.sys.  These are the driver files we’re after.
  • Copy the boot.wim from the sources folder of your W2008 DVD, ensuring that it’s the right architecture, x86 or x64 and it matches your HP NCU.  I copied it to E:Image on my Vista VM.
  • Copy the drivers to the Vista machine, e.g. into E:Drivers.
  • Launch the WAIK command prompt – not the usual Windows one.  We need the WAIK tools in the search path for executables.
  • Create an empty folder called mount, e.g. E:Mount.
  • We’ll now mount the boot.wim into the Mount folder.  WIM files have indexes, e.g. different images.  You should run the command "imagex /info E:Imageboot.wim" to list the indexes and identify the one you need to add the drivers to.  However, the DVD boot.wim index we will need to edit is 2.  The one you can create from WAIK to create a default WinPE image uses index 1.
  • Mount the boot.wim index using "imagex /mountrw E:Imageboot.wim 2 E:Mount".
  • We will now add the drivers.  The first you will add is done by running "peimg /inf=E:Driversbxnd.inf E:Mount".  You add the second by running "peimg /inf=E:Driversbxvbd.inf E:Mount".
  • That’s the driver injection done.  Now you need to save the image by running "imagex /unmount /COMMIT E:Mount".
  • Copy this to a folder on your WDS server and rename it as "Deploy – W2008 – x64.wim" (or " – x86" if it’s a x86 boot image).  Go into the WDS console and add this file as a new boot image.  Give it a name such as "Deploy – W2008 – x64".  This way it’ll be clear what this boot image is for when you see it in the PXE client.
  • Add the install image(s) on your WDS server from sourcesinstall.wim on your W2008 DVD.
  • Enable PXE on your blade server in the BIOS, in the Onboard administrator and in Virtual Connect if you are using ethernet VC’s.
  • Ensure the network is configured for PXE (Cisco portfast may be required – i.e. the request for DHCP address and BOOTP response from the WDS server may be too fast for Cisco spanning tree and the switch port may be still offline).  Ensure your PXE NIC (configure one only!) is on the network where BOOTP is being routed to your DHCP server and WDS server.
  • Boot the blade up and hit <F12>.  When it gets an address you may will to hit <F12> again very quickly.  I find it helps to configure the onboard administrator to do a one time only PXE boot for the server.  Don’t do this on ILO via RDP – it’s sucks because it’s too slow and can suffer from "sticky keys".
  • The PXE client connects to the WDS server and lists your new boot image.  Select it.  Once it loads, press <SHIFT>+<F10>.  The command prompt appears.  Do an IPCONFIG and your address should appear.  If nothing does, run "WpeUtil InitializeNetwork" to try forcing the network to start.  The driver should be working and your NIC should have a valid IPv4 configuration.  Ping the WDS server to be sure.
  • Continue installing Windows from the default install image.
  • Customize the server as required and according to MS best practices for Sysprep and template images.  You’ll want to install the HP PSP and maybe a MPIO driver if using Fibre Channel EVA’s.  Remember to configure the SNMP service with public and private strings, otherwise the HP System Management page won’t work.  Run sysprep to shut the server down.  We’re now going to capture an image of this server which we can redeploy to an BL460C.
  • In WDS, right click on our new boot image.  Choose to create a new capture image.  Save this in the same place as the file we copied over from the Vista machine.  Call it "Capture – W2008 – x64.wim".
  • In the WDS console, create a new boot image and import "Capture – W2008 – x64.wim".
  • Configure the onboard administrator to do a one time boot from PXE for the server.
  • Boot the server up and launch PXE again.
  • This time, choose the capture image and let it load.  You will have to run the WPEUTIL command here if you want to confirm network connectivity.
  • Choose to capture C: and give the image a good name including a version number for your build and a good description.
  • Choose to save the .wim image on C: and name the file after the image name e.g. "BL460CG1-W2008Std-x64-Full-V1.WIM".  Connect to your WDS server so that the image will upload to there.
  • Finish off the wizard and then check WDS to see that the image is correct.  Deploy it to an idential BL406C G1 and ensure everything is OK.

Reducing the Server Core Disk Footprint

There’s an interesting entry on the TechNet blogs about how to further reduce the amount of disk required for running Server Core.

Server Core is tiny compared to a full installation of Windows Server 2008, sacrificing the GUI and .NET to reduce RAM & disk requirements as well as reducing the attack surface.  It supports a number of roles whose install files are on the hard disk.  You can uninstall those packages using the instructions on the linked blog entry.

This is a one-way deal.  You cannot re-install those packages.  To get them back you have to re-install the OS.  You will no longer be able to install the functionality of the packages once you remove them.

Why would you consider this?  If you’re installing Core, you’ve probably got a very set idea of what the server will do, e.g. it will be nothing but a file server, or a DC, or maybe even a Hyper-V host.  In fact, a Hyper-V host is a perfect example.  It should be nothing but a Hyper-V host.  Uninstalling the other packages will guarantee that and you’ll have minimised how much disk the OS needs, thus freeing up space for VM’s … although it’s not going to all that much!

This Sucks: CoreConfigurator Is Discontinued

The author of CoreConfigurator has had to pull the plug on CoreConfigurator.  Like many of us, he had that awful clause in his employment contract that gives the employer ownership rights over all intellectual property he created while employed by that firm, even if he did it on his own time and at home. 

That one brought up some interesting discussions when I took my current job because some of the things I’ve been writing are already the property of a publisher.  My employer was able to confirm that legally the contract could not extend to my independent work at home.

The author, Guy Teverovsky, has had to hand over ownership to his now former employers.  What they’ll do with the code is uncertain.  This sucks because it was a great little tool for those new to the ways of command prompt.

But, not that I condone piracy in any way, you will find this tool out and about in the wilds of the Internet if you Google hard enough.