The Zen of Hosting: Part 10 - Windows 2008 Core

Since we had Windows 2008, we just had to try out Core Edition, which is the version of Windows where Microsoft promised everything would be command-line-based. I like to think of it this way: if Vista stole the UI from Apple’s Mac, then Win2k8 tried to steal it from Linux...

So before I get into Core, let me first state that Win2k8 is the best server OS Microsoft has ever released. It’s amazing how well-polished everything is, and the tools included are great. Does it compare to Linux servers? Well, in some places it kicks ass, and in others, it doesn’t—but since Linux servers are the de facto standard for command-line-based systems, if we compare the command-line features, Microsoft has done a horrible job.

All that’s actually happening is you get the normal command prompt in Windows, and they dropped Explorer.exe from being the shell. In fact, Explorer.exe doesn’t even get installed—but a lot of our old favorites are still there, like Ctrl+Alt+Del, which still brings up the usual menu, and Task Manager still works.

Microsoft dropped so much that the gain in RAM is impressive (our average RAM usage normally is 750 MB, but on Core, it’s a mere 300 MB). The attack surface and patch requirements have also shrunken significantly.

Getting back to command.com as the shell—that’s likely the biggest single mistake of Core. It’s not like Microsoft doesn’t have a great command-line system, like PowerShell, which they could have used instead. In fact, there’s so little added to the command line that after this experience, I went back to a Win2k3 machine and was able to do most of this anyway—and it’s not hard to kill Explorer.exe as the shell in Win2k3. One advantage of doing this Core mockup on 2k3 is that at least Internet Explorer is there for you to get online for help. But in Win2k8 Core, there’s no decent help—just the same old crappy command.com stuff.

Linux has man pages, PowerShell has Get-Help, but the console has… thank the heavens that I was able to use my laptop to get online. For example, I had problems with the first two Core boxes trying to run Hyper-V on them—it just gave all kinds of RPC issues. Turns out, even though I hadn’t set the DNS correctly using netsh, I had set it for Primary Only instead of Both. What the difference is, I don’t know—because using the Windows GUI to set network settings for the last 20 years obviously gets this right. Why make it so much tougher?

Another interesting feature of Core—something I never had to worry about until I attended Win2k8 IIS training that Microsoft ran—is that in Core, you can’t run ASP.NET for websites, because Core doesn’t have the .NET Framework. This is because the .NET Framework installer requires a GUI. I suspect this is the same reason PowerShell can’t be used either, since it’s .NET-based. But here’s what I don’t understand: THERE IS A FRIGGING GUI—it’s all around the command-prompt window!

My recommendation is to avoid Core—the extra work doesn’t make up for the cost of a little extra RAM. Instead, spend less time setting up the server and more time billing customers—just buy more RAM. Hopefully, Windows Server vNext gets it right.