Running VMware ESX Server 2.5

One of my favorite things about VMware is that it can run itself.  This allows me to test & stage new setups, test API stuff on my desktop, allowing me to build a “micro data center” that I don’t need to ask & beg for permission to take down, or if I do something stupid, I’m just a quick revert away from putting it back, and more importantly not making other people mad.

This also let’s me step back in time, in this case to the dark & ancient world of 2005, where I’d first deployed VMware ESX 2.5.2 along with vCenter 1.3.1 .  I figured that I could use my ancient Dell P490, as I’d been using it as a desktop at home for casual use, but this seemed like a good thing to stress the system on.  Also handy to have is the installation guide, which VMware still has online.

I installed Windows 10 Pro, and VMware Player 12.5.9, The box has a single physical processor that is dual core, 8GB of RAM and a 1TB disk.  Not exactly a high end machine, but it’ll suffice.

The first thing to do was install ESX 2.5.2, I’d set it up as a Linux VM, with 1 CPU, 2GB of RAM, and 3 disks, one for the OS, another for SWAP, and a Data store / Data disk.

After the nice GUI setup is completed we are dumped to a console on reboot.  ESX is meant to be managed remotely.

Once the OS installed, edit the VMX file, and make the following changes, to allow VMware to setup the passthrough capabilities so the VM can run other VMs.

guestOS = “vmkernel”
monitor_control.vt32 = “TRUE”
monitor_control.restrict_backdoor = “TRUE”

Now the Version will report that it’s VMware ESX.  The other thing you’ll find out quickly is that you need a browser to manage the server (funny how things went back to this direction, later versions relied entirely on the ‘fat’ .NET client), and I found that FireFox 1.5 works the best.

The .NET client requires .NET 1.1 to operate correctly.  It will not install on Windows 10 by default, as the .NET 3.5 (which includes .NET 2.0 runtime) is not acceptable, it has to be the 1.1 runtime, along with the J# runtime, which it’ll install if needed.  I went through the installation steps in the aptly name ‘Installing .NET 1.1 on Windows 10‘. post.

Of course you’ll need a place to run the vCenter server, I just setup a Windows 2000 server, installed SQL 2000, .NET v1.0 & v1.1 and then the Virtual Center component.  VirtualCenter relies on a database backend, and I thought it’d be interesting to look at the tables through MSSQL, although Oracle, Access and some generic ODBC are also options for this ancient version of VirtualCenter.

For those who don’t know, VirtualCenter is the application that lets you build a ‘virtual datacenter’ join multiple ESX servers together, and more importantly orchestrate them together into a cluster, allowing you to vMotion VMs between servers,  which of course is the ‘killer feature’ of VMware ESX.  If you don’t have vCenter / VirtualCenter then you are missing out on so much of the products capabilities, which is sadly hidden away.

I setup a tiny Windows NT 4.0 domain, with a domain controller, and a terminal server.  My host machine is a bit weak to setup more ESX hosts, as there just isn’t enough punch in the box.  Although any modern machine will probably exhaust RAM before CPU running a mid 90’s workload.

Back in the day, I had moved our entire DC onto 4 ‘killer’ machines with fiber channel storage and had consolidated the entire DC to a single cabinet.  It was incredible that we were initially able to almost meet existing performance.  Of course the killer feature again is vMotion so a year later, I only needed 4 new servers which was an easy budget ask, and in the middle of the day I vmotioned from the old servers into the new servers, and things across the board were now faster.  Finally the bean counters saw the light that we didn’t have to buy faster gear for a single group, or that we no longer had the issues where we had ‘important enough’ to be in the data center but with no hardware maintenance, or proper backups.  Now everyone is on equal footing and all the boats raised with the tide so to speak.

In this quick re-visitation it would be fun to setup shared storage, multiple hosts and vMotion, but back in the days of ESX 2.5 there was no support for having VMFS over NFS or iSCSI.  As much as I’d love to use the Dr Dobbs iSCSI Target Emulator, it just sadly isn’t an option.  The ability to move beyond Fiber Channel shared storage (or other supported dedicated host bus adapters) was added in version 3, greatly expanding the capabilities of ESX.

 Obviously the career mistake here was to be a happy Admin, and concentrate on other things as now the infrastructure ‘just worked’ and it freed up an extraordinary amount of time.  The smarter people were either taking these types of experiences and turning it into a consultation gig (low effort) , or taking lessons learned in VMware space, and focusing them onto QEMU/KVM and building libre infrastructure (high effort).

Such is life, be careful riding those trendy waves, eventually you have to either lead, follow or just get out of the way.

OpenNT 4.5 revisited

OpenNT 4.5 installed

It’s been a few years since Tenox had mentioned OpenNT 4.5, and in that time the project pages, repositories and well just about everything has vanished.  It seems that the hardest thing to do with OpenNT had become finding it.

Then I found this over on vetusware, and with my curiosity piqued, I thought I’d check it out.

As mentioned the first thing to do is combine the parts, and create the single 7zip file, and then extract that.

copy /B "OpenNT45(Source).z00" + "OpenNT45(Source).z01" + "OpenNT45(Source).z02" "OpenNT45(Source).7z"

Extracting that will give a simple ISO file, weighing in at 1.7GB!

While not obvious at first, there is a readme in the ISO that provides instructions on how to compile it.  Basically it boils down to a few main points:

  • xcopy the CD onto a ‘W’ drive, or subst any other drive to ‘W’ as apparently the build process requires it to be on W.  Did I mention that the CD needs to be copied onto the W drive?
  • Run the ‘setup.cmd’ file to configure the environment and get the build process ready
  • run zTESTBUILD and do a clean build.  It will run and eventually fail.
  • run zTESTBUILD again, but do not do the clean build, and it should finish
  • run \cdimg\genall to create the ISO image

So with those points basically figured out after the fact, let’s go!

The first thing to do is either create a VM to compile this in, or just xcopy and go.  The big requirement though is that it must be a 32bit version of Windows, as part of the build process requires the ability to use NTVDM.  For simplicity sake, I chose Windows 2000 server, so I could allocate 2GB of RAM, and 4 CPU cores.  During the build it doesn’t use that much memory, cores are more so important during various phases of the build that can seemingly use any and all cores, while various other parts only run on a single core.

OpenNT disk space after a build.

I chose to use a separate ‘C’ drive, and ‘W’ drive for the 2000 VM.  With no idea how much space to give it, I setup a 32GB W drive, which after the build takes up just under 4GB of space.  

With the VM installed, and the W drive formatted, and the contents of the CD copied over, it’s time to start the build.

Phase 1

So basically you just answer ‘Y’ to zTESTBUILD.cmd and it’ll do it’s thing.  For me this took about 42 minutes for this to run until it failed, as expected.

Failure building MVDM

Looking at the \binaries\nt directory there was now 1,274 files currently built.  Naturally with the failure this is not a complete build.

Starting phase 2

After this failure you then re-run zTESTBUILD.cmd but this time answer ‘No’ to the clean build.

This step took about 15 minutes to complete.


The \binaries\nt directory now has 1293 files.

Checking the binaries\nt directory there is now 1,293 files and looking at the entire directory there is 2,624 files taking up about 120MB of space.

With the OS compiled, all that remains is to create an install CD and boot it up.  running \cdimg\genall.cmd will create the ISO image.

Creating the ISO with CDIMAGE 2.47

This will compress almost all the files, and took another 15 minutes to create the CD.  After this is all done it’s just a matter of setting up a VM to run the NT45Wks.iso file.

Bluescreen bootup of OpenNT 4.5

The first thing you notice is the extra banners on OpenNT 4.5, when compared to a retail copy of NT 4.0.

OpenNT Project

And of course the different branding during setup.  One of the nice things about OpenNT is that it can format filesystems directly as NTFS, instead of the old way of first creating a FAT partition, and converting it to NTFS.  This ought to bypass all the limitations of disk/partition sizes for the older NT.

WOW Crash

Running OpenNT 4.5 on VMWare seemed to run the Win32 stuff okay, although Win16/WOW stuff immediately crashed, and MS-DOS was incredibly slow with screen redraw issues. I know that NT 4.0 builds prior to SP 6 have issues with many newer emulation/hypervisors even when CPU levels are set to regular Pentium.

MS-DOS DPMI stuff like DooM are incredibly slow, and seemingly lock up when launching.

Oddly enough the OS/2 subsystem works just fine.

So there it is, the nearly vanished ‘OpenNT 4.5’.

A week with the Microsoft Lumia 950

Lumia 950

I’m a sucker for old / obsolete junk.  I was looking through an electronic market, and was near some used cellphone vendors and I saw this little gem, the Microsoft (Nokia)  Lumia 950.  I used to have a Windows 8 phone back in 2013, I picked it up in China on my accidental trip, the Huawei Ascend W1, which Huawei quickly dropped and distanced itself from Microsoft as a sign of the impending failure of Windows Phone.  It was a barely serviceable phone, the music subscription service would frequently corrupt downloaded audio tracks constantly requiring me to reset the phone, and re-download over and over.  Other than being part of the launch of the NT kernel on a phone it really wasn’t that great of an experience, but it was a budget phone so my expectations were pretty low.

So I found this 950 for $400 Hong Kong, or about $50 USD.  So yeah I thought it’d be a fun toy to play with, even though Microsoft had finally conceded defeat in the mobile space and pulled further development of Windows 10 based Windows Phone platform.  Again this isn’t too surprising, Android simply dominates the world outside of the USA/Western Europe, while Apple IOS is still a profitable and comfortable #2 world wide.  There simply is no room for a #3 mobile platform.

So why would I even care about this obsolete phone? Simple it’s the greatest feature never really touted or pushed, It’s simply called Continuum.  Simply put, docking the phone into a USB + Power + HDMI dock allows the phone to transform into a (limited) desktop.

Lumia 950 with Continuum

I know for most people it’d be “just get a real computer” but I have to say that this is one of those opportunities blown things in the fun world of corporate IT.  You see many of us ‘desktop’ users have been reduced to glorified mainframe users, where our desktops are actually just access ports into products like VMWare VDI, where we no longer have VPN access in this brave new world, and on our local machines all we have if Microsoft Office, all 3rd party installations are blocked by GPOs.  And this is where a corporate phone like the HP x3, Microsoft 950/950xl simply shines, as now we can dock and have that VDI terminal, we still can run office from the phone, and better we can unplug and take the phone with us on the go.  I have no doubt that this was instead targeted to executive users, numbering in the tens instead of the entire back office in the tens of thousands.

Well ok that’s all cool, but how does it function as a phone?  I’ve taken call on it, and yeah it was OK.  Looking at the hardware specs from AnTuTu gives you some idea of the class of hardware for this vintage October 2015 handset.

Lumia 950 Specs

And how does it hold up?  Well as luck has it I managed to scrounge up some other models, and put the numbers together:

From left to right, the Samsung Galaxy S8+, The Microsoft Lumia 950, The Nokia Lumia 1520, and a Microsoft Lumia 535.

Three years is a LONG time in the cellphone market, and comparing a high end model to a mid range at best is just not fare, although if anything it really goes to show how 3D performance has picked up.   One fun thing is that since the AnTuTu benchmark is a Windows Universal application I can run it on my vintage 2010 MacPro and see how it compares!

And in this case a circa 2010 Xeon with a Nvidia 1030 crushes cellphones.  Even though it weighs significantly more.

And then there is the apps.  And the complete lack of.  Since I go between Hong Kong & China the lack of WeChat makes Windows Phone 100% useless and reduces me to a feature phone with a nice camera.  Obviously Microsoft Office works nice on here, but it also runs on Android & IOS just as well.  I used it for work, and it was okay for me, but the lack of anything fun besides Minecraft was well.. sad.

There was an Uber application, however it’s been terminated, and instead redirects you to use a web page instead.  I was lucky in that I already knew where I was, and where I wanted to go, but the web interface to Uber is poor at best.  Looking around the map, or trying to pick locations on the web interface is just an all around terrible experence.

Naturally there are NO Google applications for the Windows Phone.  So you can only view YouTube via Edge, which actually works surprisingly well.  Even on a lowly 535 that really was only hampered by the tiny screen.  Speaking of Google the Mail/Outlook program on the phone reads Gmail just fine.

Another must have application for me is Google translate, which Microsoft certainly had no answer back in 2013, however there is now Microsoft Translator however it does NOT currently support OCR of Asian languages.  Which is a really big disapointment as the quality of text translations felt better with the Microsoft app.  That said, it is now available for Android and IOS, which goes to show that Microsoft really has no choice but to fully commit to abandoning their own platform.

There is one thing to be said about having next to no applications which is it is very free of distractions, and gave me more moments to looking around at the world, instead of staring into a tiny screen.  For those who care, here are some pictures from the 950.

It’s always interesting when a major player falters and misses out on a new platform setting themselves up for obsolescence.  And doubling down by not chasing the business market harder instead being happy to fade into irrelevance.  Microsoft has done it’s best to take the success of crushing most midrange to small range UNIX with Windows NT, but the lawsuits against Linux have in the long term set them up to fail on their own island.  Just as they have lost the mindset of generations of developers and even with their purchase of github in an attempt to stay relevent will be any indication if they really are going to long term exit the desktop/server market and become a cloud services company first, and a language developer second.

The desktop is dead, long live mobile.

WinFile comes back from the dead.

WinFile!

Yes, this WinFile.  So Microsoft apparently went through their Windows NT 4.0 source code tree from 2007, and decided to pull this tool out, and send it out into the world.  It’s available in a ‘original’ version, and a ‘v10’ version which includes the following enhancements:

  1. OLE drag/drop support
  2. control characters (e.g., ctrl+C) map to current short cut (e.g., ctrl+c -> copy) instead of changing drives
  3. cut (ctrl+X) followed by paste (ctrl+V) translates into a file move as one would expect
  4. left and right arrows in the tree view expand and collapse folders like in the Explorer
  5. added context menus in both panes
  6. improved the means by which icons are displayed for files
  7. F12 runs notepad or notepad++ on the selected file
  8. moved the ini file location to %AppData%\Roaming\Microsoft\WinFile
  9. File.Search can include a date which limits the files returned to those after the date provided; the output is also sorted by the date instead of by the name
  10. File.Search includes an option as to whether to include sub-directories
  11. ctrl+K starts a command shell (ConEmu if installed) in the current directory; shfit+ctrl+K starts an elevated command shell (cmd.exe only)
  12. File.Goto (ctrl+G) enables one to type a few words of a path and get a list of directories; selecting one changes to that directory. Only drive c: is indexed.
  13. UI shows reparse points (e.g., Junction points) as such
  14. added simple forward / back navigation (probably needs to be improved)
  15. View command has a new option to sort by date forward (oldest on top); normal date sorting is newest on top

Which is quite the list of things to add to the old WinFile.

You can find the source & binaries on github.

Microsoft Editor

(This is a guest post by Antoni Sawicki aka Tenox)

In a recent blog post Wanted: Console Text Editor for Windows I lamented about lack of a good console/cmd/PowerShell text editor for Windows. When researching for the article I made rather interesting discovery. There in a fact has been a native Windows, 32bit, console based text editor. It was available since earliest days of NT or even before. But let’s start from…

…in the beginning there was Z editor. Developed by Steve Wood for TOPS-20 operating system in 1981. Some time after that, Steve sold the source code to Microsoft, which was then ported to MS-DOS by Mark Zbikowski (aka the MZ guy) to become the M editor.

M editor

The DOS-based M editor was included and sold as part of Microsoft C 5.1 (March 1988), together with the OS/2 variant, the MEP editor (perhaps M Editor Protected-mode). The official name of M/MEP was simply Microsoft Editor. The same editor was also available earlier (mid-1987) as part of the MS OS/2 SDK under a different name: SDKED. Note that normally SDKED insists in operating in full screen mode. Michal Necasek generously spent his time and patched it up so that it can be run in windowed mode for your viewing pleasure.

SDKED on OS/2

However my primary interest lies with Windows NT. The NT Design Workbook mentions that in the early days a self-hosting developer workstation included compiler, some command line tools and a text editor – MEP. Leaked Windows NT builds sometimes include IDW, Internal Development Workstation, which also seem to contain a variant of the same editor. In fact some these tools including MEP.EXE can be found on Windows NT pre-release CD-ROMs (late 1991) under MSTOOLS. It was available for both MIPS and 386 as a Win32 native console based application.

MEP on Windows NT Pre-Release

The editor was later also available for Alpha, i386, MIPS, and PowerPC processors on various official Windows NT SDKs from 3.1 to 4.0. It survived up to July 2000 to be last included in Windows 2000 Platform SDK.

M editor
M editor from NT SDK 3.1 running on Alpha AXP
MEP from NT SDK on Windows NT 4.0

The Win32 version of MEP also comes with an icon and a file description which calls it M Editor in NT 3.1 SDK and later Microsoft Extensible Editor.

From time perspective, it was rather unfortunate that this gem was buried in the SDK rather than being included on Windows NT release media. However I can understand that the editor wasn’t very user friendly or intuitive, compared to say edit.com from MS-DOS. It came from a different era and similar to VI or Emacs, didn’t have “PC user friendly” key bindings or menus.

But that’s not the end of the story. The editor of many names survives to this day, at least unofficially. If you dig hard enough you can find it on OpenNT 4.5 build. For convenience, this and other builds including DOS M, OS/2 MEP and SDKED, NT SDK MEP can be downloaded here.

Digging through the archive I found not one but two copies of the editor code, lurking in the source tree. One under the name MEP inside \private\utils\mep\ folder and a second copy under name Z (which was the original editor for TOPS) in \private\sdktools\z folder. MEP was included in Platform SDK, while Z was only available as part of IDW.

Doing a few diffs I was able to get some insight on the differences. Looks like MEP was initially ported from OS/2 to NT and bears some signs of being an OS/2 app. The Z editor on the other hand is a few years newer and has many improvements and bug fixes over MEP. It also uses some specific NT only features.

Sadly the internal Z editor was never released anywhere outside of Redmond. All the versions outlined so far had copyrights only up to 1990, while Z clearly has copyright from 1995. Being a few years newer and more native to NT I wanted to see if a build could be made. With some effort I was able to separate it from the original source tree and compile stand alone. Being a pretty clean source code I was able to compile it for all NT hardware platforms, including x64, which runs comfortably on Windows 10. You can download Z editor for Windows here.

Z editor on flashy Windows 7 x64

But how do you even use this thing?

Platform SDK contains pretty solid documentation in tools.chm.

Here is a handy cheat sheet:

Last but not least there is a modern open source re-implementation of Z editor named K editor. It’s written from scratch in C++ and LUA and has nothing to do with the original MEP source code. K is built only for x64 using Mingw. There are no ready to run binaries so I made a fork and build.

K editor on Windows 10 x64

The author Kevin Goodwin has kindly included copies of original documentation if you actually want to learn how to use this editor.

What is a VLAN (part 5)

With the textmode setup complete, it’s time to do the graphical setup of Windows NT 4.0

Next

You can use any name/org

Select how many licenses you have for your NT Server.

Give the server a name

I’m not going to build a domain, so a stand alone server is fine.

You can give the Administrator account a password if you so desire.

I don’t need any emergency repair disk, as this server is the epitome of disposable.

I added all the components.  Again for this test it really doesn’t matter.

Configure the networking

Now for the fun part, we are going to configure the networking.

I’m sticking to ‘wired’ networking.  I’ll save RAS for another lifetime.

Everyone wants to be a webserver.  Sure why not.

You can either manually select a NIC, or just let it auto-detect.  We are going to auto-detect it though.

And it’ll correctly identify the AMD PCNet card.

I selected all the protocols available.  I didn’t bother adding other ones like AppleTalk.

Next..

Next

It’ll prompt for the media type and duplex.  The card isn’t real and it’ll work fine no matter what.  I just leave the options alone.

Our network doesn’t have any DHCP server.  Since we are plugged into a simple hub.  DHCP requests will fail.  Let’s give it a static address.  For Advanced people, yes you could wireshark on the wire to observe the DHCP.  We will touch on how to do that later, as I just want to get NT installed .

There is no need for a gateway.

We don’t have any bindings that need adjusting, so you can just hit Next

And Next again

Again, no domain, so run in workgroup mode.

Finish, although it’s far from over.

IIS components to install.  I just hit OK for the defaults.

Confirm the creation of the directory

And the child directories

And creating the IIS child directories

Gopher isn’t happy without a domain name, but I don’t care.

Select your timezone.  Or don’t.  This is from 1996, so many of the timezones are no-longer correct.  Just as DST has changed so many times.  But it really doesn’t matter yet again.

The display adapter is SVGA compatible.

Move the resolution slider to 800×600

Then hit OK.  It’ll want to test the resolution

Everything looks good

YES I saw the bitmap

OK

OK to accept the display at 800×600

Files will finally start to copy

And now we can finally restart are computer.

By default the NT Loader will wait for 30 seconds.  You can hit enter to get it to load right away or wait.

But we have now completed installing Windows NT, so we can now move on to capturing some traffic, aka part 6..

What is a VLAN (part 4)

In this post we are going to install Windows NT 4.0 Server into our VM.

The first step is to turn the VM on.  Simply right click on the VM, and choose Start. The red dot will then turn green.  Although it may appear that nothing is happening we just can’t see it yet.

Right click again, and choose the console, and VNC will then connect to the Qemu VM, and we can now interact with it.

And here is where we start installing Windows NT 4.0.  I’ll just put the keys in parenthesis of what I’m doing. In this case just hit:

(enter)

(enter)

(c)

(page down) until you get to the end, then hit (f8) to agree to the license

The default options are OK.  (enter)

(c)

(enter)

I chose NTFS for my server.  Although I’m not interested in creating a domain, so FAT will work too.  It really doesn’t matter.

(enter)

(enter)

(enter)

Waiting for the files to copy

(enter)

On reboot if you have selected NTFS it’ll convert the filesystem like this:

converting FAT to NTFS

After the conversion, NT will reboot again, then it’ll continue the setup process.

Otherwise you’ll just reboot directly into the graphical setup of Windows NT, and we can continue in part 5.

What is a VLAN (part 3)

In our previous post, we configured a Qemu template for Windows NT.

With the NT template ready we will be prompted to give this project a name.

So I called this one ‘what-is-a-vlan’ sticking with the theme.

Now we can drag components out.  I selected the NT template that I’ve created, and dragged it out to the design pane.  Now we have a computer!

I then selected a simple Ethernet hub, to begin verifying that our configuration is working.  Just drag it out to the toplogy pane.

Now for the fun part, we are going to connect the Windows NT VM to the Hub.  Right click on the Qemu VM, and it’s available Ethernet interfaces will pop up.  It only has one, so select Ethernet 0.

Now you can select the Hub to complete the connection.  Hubs repeat every packet they receive, and don’t change anything.  They offer zero intelligence, and have no way to save you from yourself, if you do anything stupid (see creating a loop).  Every packet that comes into a hub is sent to every port going out.  They don’t care about protocols, or anything they just simply repeat.

 

So this will be our simple network.  The next thing to do is to turn on our PC, and install Windows NT 4.0.  I’ll save that for the next step which you can follow here.  If you don’t care about installing Windows, then you can skip to the following step where we will do a simple packet capture of the NT machine connected to the hub so we can observe how it’s packets look.

What is a VLAN (part 2)

In the last post, we quickly went over the default install of GNS3.

We are now going to configure a QEMU template for Windows NT.  I’m going with Windows NT as its pretty resource low, has TCP/IP and other protocols like IPX/SPX which can be routed and NetBEUI which has to be bridged.

We are going to use the Qemu option

Although we do get this warning, it really doesn’t matter.  NT runs fine.

Give the machine a name

The default 256MB of RAM is more than enough.

Set the console to VNC, as NT is graphical

I set it to use the included qemu-2.4.0’s Qcow2 image format for the virtual hard disk

The default options are fine.

I’m not going to try to build anything that sophisticated, so 500MB is more than enough for NT 4.0 .  If you do want something more involved 2GB is the effective limit for a boot disk for NT 4.0 SP1

The default name is fine too.

We do however need to make some changes.  The network card needs to be the AMD PCnet version, and we need to add an additional flag to Qemu to restrict the CPU functionality to a 486 so that NT will install without any issues.

So the networking tab will let you change the type.  AMD PCNet is the one that is supported out of the box, and verified working!

On the Advanced settings tab, is where you can add the -cpu 486 flag, as indicated above.

On the CD/DVD tab, you will want to point it to an ISO of Windows NT.  It doesn’t matter if it’s Workstation, Server, Enterprise, Terminal Server.  They all install the same.

It will prompt you if you want to copy the ISO into the default images directory.  It really doesn’t matter one way or the other.

Qemu image configured for NT

Now the image is configured for NT.

Now we can continue to building our first topology (AKA Part 3).