Tag Archives: Windows

I Got Your 64 bit Upgrade Right Here Punk!

I have been warned that come mid-year, I’ll be trading in my office with a view for returning to an open-plan experience in the newly constructed Sir Samuel Griffith Building up here on the Nathan campus. Beloved view, I love you!

The view from my office

The view from my office

As you might understand, I’m a little mixed about returning to an open-plan experience. It really isn’t conducive to going and staying deep in the flow, and you’d think that after research on what facilitates flow, maybe peeps would get the message that open-plan layouts actively work against certain kinds of productivity. Then again, I was raised on the open-plan experience, and this being my first “own office” experience, there’s not much shock expected.

I’ve heard that the open-plan nature of the building falls out in the wash whilst maximising amount of natural light coming into the building, reducing its carbom footprint. So, what we’ve got here peeps, is an attempt to find a sweet-spot between an environmentally sustainable building played off against maximising people’s output. I guess only time will tell on how well these researchers can maintain their flow in the new environment. Still, I feel for those researchers, entering the world of prarie-dogging for the first time.

So, in preparation for a move to the new building, our IT team has just returned my laptop. Gone the 32-bit Windows XP operating system. Hello to a 64 bit Windows 7 upgrade. The 64-bit thing was a surprise. The consequent breakage of my development environment was not. Though, now I’ve had some time to investigate it, I’m now able to describe the particular nature of my non-surprise.

It seems that we have a 32-bit install of Microsoft Office on our 64-bit machines, thanks to some incompatibilities with other 32-bit software that is in common use on campus. My “Species Benefit Optimiser for the Murrumbidgee Wetlands” relies on Microsoft Excel to import model data through the usage of the ACE Database engine. As Excel is 32-bit, I need the 32-bit ACE library.

Though I can compile my tool to use “Any CPU” as my target platform via Visual Studio, I get this fun little runtime error unless I specify a target platform of “x86”, guaranteeing that the 32-bit ACE driver gets picked up and used for conversations with Excel:

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

The ‘Microsoft.ACE.OLEDB.12.0’ provider is not registered on the local machine.

If I DO compile it against a target platform of “x86”, I get this runtime error instead:

BadImageFormatException

BadImageFormatException

Which is in many ways worse, because my most foundational support library is apparently borked, as opposed to just a rogue Microsoft library that with a little more work, could be made optional.  Lots of interesting trawling ensued.

Once again, StackExchange delivered the non-nonsense heart of the issue.  Ihe VisualStudio debugger is running 64-bit, and has a cow trying to debug a 32-bit application.  I tested this out and confirmed it for myself.  I can run my application just fine from within VisualStudio so long as it’s not with the debugger.

I’ve considered and rejected a lot of workarouds.   The winner is an approach where I coax VisualStudio to run its debugger as a 32-bit  application. They tell me I need to run a command from the VisualStudio command prompt in administrator mode.  Here’s a picture of  that happening:

Running the VisualStudio Command Prompt As Administrator

Running the VisualStudio Command Prompt As Administrator

They also warn me that the command modifies the debugger executable, meaning we’re taking an all-or-nothing approach to debugging 32-bit applications.  As I may want to get back to 64-bit applications, here’s another picture of me keeping both a 32-bit and a 64-bit backup of the exeutable, so I can toggle this hackery later:

Creating a 32-bit Debugger... carefully

Creating a 32-bit Debugger… carefully

And done.  The debugger is working again on my 32-bit application, though this degree of hackery last left me shaken, not stirrred.

Advertisements

Notes on dual booting

A little while back, I signed up to be a Lego Universe Beta Tester (surely there has to be a networked game out there that parents and their kids can play together?!?). After lots of experimentation, I came to the following conclusions:

  • The game wouldn’t run under Wine or Cedega
  • The game wouldn’t run under the Windows Virtualisation environment VirtualBox (bit of a shame, VirtaulBox is coming along in leaps and bounds).
  • The game wouldn’t run on the most modern Windows Licence I had in the house (and it was probably OEM anyway, thus casting my usage of it into doubt vs the M$ EULA)

This made me a sad panda. After pretty much a decade of running my personal computing needs from various flavours of linux, and getting my PC gamer fix from Cedega, I was finally forced to revert back to a dual-boot system with a more modern Windows Licence.

So. Below are the salient details for my dual-booting Windows 7/Ubuntu 10.04 setup:

Two HDDs:

  • /dev/sda == Ubuntu device path for my “OS” HDD
    • /dev/sda1 == The Windows partition, formatted as a NTFS filesystem. It gets the very first because it’s too egocentric to seem to be happy living elsewhere.
    • /dev/sda2 == The Ubuntu partition, formatted as an ext4 filesystem, with the / mount point.
    • /dev/sda3 == the Ubuntu swap partition
  • /dev/sdb == Ubuntu device path for my “Data” HDD
    • /deev/sdb1 == the entire drive in a single partition, formatted as an ext4 filesystem, with the /home mount point.

Basically, I use the Ubuntu install disk to lay out the partitions as above (well, the Ubuntu install disk didn’t allow me to format the Windows partition as NTFS. I settled on FAT32), then install Ubuntu. Once that’s done, I install Windows, reformatting as an NTFS partition. This results in the MBR completely forgetting about Ubuntu, so I then reboot from the Ubuntu install disk, pop open a command-line terminal and follow the instructions for GRUB2 here.

Viola!!!

Grub is now being invoked at boot time, and allowing me to choose between the two operating systems.