Install 64bit Windows OS (7+) on older 64bit Mac’s (2007 32bit EFI white MacBook)

/ / /

When working at HP I came up with a Windows Vista restore/install solution that worked using Windows PE for both 32bit and 64bit architectures.  A few years ago, I tried the same solution against my 2007 White MacBook, and, lo and behold, I was able to install 64bit Windows 7 on my MacBook.  I didn’t have the time to document it as it was just for curiosity, but I am doing so here now because I am repurposing my MacBook as a 3D Printer server.

To start, you need a 32bit Windows install on DVD and the version of Windows you want to install on a USB key (or another DVD).  This is because the MacBook will not DVD boot off of a 64bit install, or the USB key.

1) Boot off the 32bit install DVD.

2) Shift-F10 into a command prompt.

3) Format your hard drive/partition.  Make sure you only have 1 partition.  You may need to use diskpart, whenever I used the Windows Setup it created 2 partitions which causes 0xc000000f errors on startup because the BCD file is configured to look for [boot]pathtowim which doesn’t reside on the boot drive.

4)  Robocopy everything from the DVD to the HDD. (My DVD drive came up as E:)
Robocopy E:\ C:\ /MIR

5) Insert your Windows x64 USB/DVD and copy over *just* the install.wim from %USB%\sources\install.wim to your C:\sources\install.wim

6) Eject the DVD and reboot your computer off the hard drive.  Do the install as usual.

This trick only seems to work when you have both 32bit versions and 64bit versions of the SAME software.  It does not appear to work if you try, for instance, to use the Windows 7 Enterprise x86 and Windows 7 Ultimate x64.



Read More

Installing Oculus Rift SDK on Windows Server OS (or bypass the product type check with most apps)

/ / /

I run a server OS as my primary OS for my home lab, which is a hyper-v system.  I’m not interested in dual-booting this system just to run a consumer OS so I can play with my Oculus Rift.  So I explored bypassing these checks and this is how I was able to get my software to think it was running on a consumer OS.

First thing you need is Application Verifier.  This utility allows you to customize shims for applications.  Once it’s installed, go “File > Add Application” and add your application.

Under “Test” expand out compatibility, check “HighVersionLie” then right-click on it and select “Properties”

It’s here that you can now determine what “Product Type” this application will recognize the underlying OS as.  The values for Product Type are:

The system is a domain controller and the operating system is Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
The operating system is Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
Note that a server that is also a domain controller is reported as VER_NT_DOMAIN_CONTROLLER, not VER_NT_SERVER.
The operating system is Windows Vista, Windows XP Professional, Windows XP Home Edition, or Windows 2000 Professional.

Specifying a value of 1 in Product Type simulates that this is a consumer/workstation OS and the Oculus Rift software now installs without issue.

Read More

Data Recovery

/ / /

My RAID-0+1 (2 sets of RAID-0 2TB HDD’s) just failed with two drives failing, both drives being from each stripe.  The worst case scenario.  The Intel RAID utility could not recover the array.  I went and then downloaded some utilities to try and recreate the array but they all couldn’t determine what the array’s configuration was that I setup.  Time to read up on Microsoft’s clustering file shares.

SO I went ahead and recreated the array using defaults and then tried the tool “TestDisk“.  TestDisk recognized my previous partition (which was GPT — Wow!).  I had to manually set the type to NTFS then the tool could let me see the files within.  I pulled out about 900GB of Hyper-V VHD’s and each one works perfectly.  I am going to try recreating the partitions with that tool, but it’s telling me that the disk is too small, the previous partition is 4000MB and the current partition is 3800MB.  This maybe accurate because the Intel RAID utility tries to reserve 5% at the end of the array for expansion/drives of different sizes so they can be added to the array.  Once the recovery of the VHD’s completes, I will recreate the array with a slightly larger size then use TestDisk to recover the partitions and update it here if it worked or not.

UPDATE: I was not able to recover the partitions but I was able to recover the files successfully.

Read More

Windows 8 iSCSI

/ / /

iSCSI and Windows 8 changes

It appears Windows 8 has removed the CriticalDeviceDatabase key.  Or, it looks like it just moved it to HKLMSystemControlSet001ControlDeviceLocations.  Under the old CDD key there was thousands of listings of hardware ID’s that were useless.  It appears they just eliminated them and then renamed CDD to DeviceLocations.

There you go.

Read More

ESXi 5.1 on MacBook 4,1

/ / /

Well…  I got ESXi 5.0 installed on the MacBook but I was unable to get Mountain Lion to work.  VMWare just came out with ESXi 5.1 which supports Mountain Lion so I attempted to install ESXi 5.1 on a USB key and get it up and running on my MacBook.  5.1 was a little different from 5.0 as the installerhelper.sh appears to operate differently…?  Anyways, what I had to do was slipstream the sky2 driver into the ESXi 5.1 image, boot into “ESXi ‘No Network Adapters Found'” then Fn-Option-F1 into the console.  I then typed the following commands:

vmkload_mod sky2
esxcfg-init -n
vmkload_mod lvmdriver

Without the lvmdriver the install would not see the storage (USB or HDD)

I am now installing ESXi 5.1 onto my MacBook.  Hopefully, I’ll be able to run Mountain Lion from it 🙂

Read More

ESXi 5 on older MacBook 4,1

/ / /

I’m looking to get my MacBook 4,1 under a little more utilization and I thought playing with VMWare’s ESXi-5 on it would be interesting.  As well, I’m hoping that I’ll be able to install a virtualized Mountain Lion in there (unsupported natively on this MacBook).  My first attempt at installing ESXi 5U1 was a miserable disaster.  ESXi won’t let you complete the installation process without a NIC.  This triggered a search to find what NIC was in my MacBook (Marvell Yukon 88E8055 VEN_11AB&DEV_436A) and a requirement to get it working.

I found this thread:

It got me started on the path I needed to enable the drivers for my MacBook.  I found that the Marvell driver is already included but it is only enabled for two device ID’s and neither were the same as my macbook’s; but they were from the same family.


I later found that the driver supports my device ID but you need to edit a text file in the VMWare driver files to enable it.  This will not work though, because VMWare signs their files and if there is a mismatch it will error out (unable to boot or corrupt image or some such).  To get around this we need to inject the driver into the ESXi installer.

In order to do this I needed to understand how to make a driver injectable.  It appears whatever you make will overwrite files during the unpacking process when ESXi is booting.  I was able to “sort-of” confirm this by packing up the sky2 driver and including my Device ID in the ESXi driver ID file.  When I packed up the sky2 binary driver in addition to the text files the install would error out.  Since it’s redundant to include the driver as well, I just tried including the driver text file that enables the deviceID.  This file could be located here:


To also make this more complicated I did everything on Windows and had to install UnxUtils and UnxUpdates and some Cygwin tools to do the archiving/unarchiving.

By editing sky2.map I could add my device ID:

regtype=linux,bus=pci,id=11ab:4354 0000:0000,driver=sky2,class=network
regtype=linux,bus=pci,id=11ab:4362 0000:0000,driver=sky2,class=network
regtype=linux,bus=pci,id=11ab:436A 0000:0000,driver=sky2,class=network

I compressed the file into a .tgz (bsdtar  -cvzf sky2.tgz “etc”) and then used ESXi Customizer 2.7 to inject it into a generic ESXi 5.0U1 image.  I then used Linux  Live USB Creator to move the ISO to a USB key that was made bootable.

I could now boot my MacBook4,1 off the USB key.  At least, it worked to a point.  I got to a stage where I was notified that I had no Network Adapters Found.  At this point I dropped into the ESXi console (Fn-Option-F1), logged in to root and ran the following commands:

vmkload_mod sky2
#loads the sky2 driver
lspci -p
#confirms sky2 driver is loaded for 436A DEV ID
esxcfg-init -n
#initializes network for default settings
#preps install command

The install command kicked me out to the default console where I was sitting at the “Network Adapters Not Found” screen.  Simply Fn-Option-F1 to return to the console and run through the install prompts.  Choose the same USB key you used earlier (or choose a new one if you prefer) and do the install.  Once it’s complete; restart onto the USB key.  You should go into a full ESXi install but the network (for me anyways) was still no working correctly.  I had to enable the console through the “GUI” of the text screen, drop into the console and run vmkload_mod sky2 and I had network again and was up and running.  Once I can figure out how to automatically run that command I will come back and update this post.  But for now I have ESXi working on a old MacBook and hopefully I’ll be able to install Mountain Lion on this old workstation   🙂

Read More

DataRAM RAM Disk Review (part 2)

/ / /

I’ve purchased some RAM to replace my 1GB sticks. This new RAM allows my system to operate at 1333MHz DRAM speed without issues. So, I’ve set my RAM to this new bandwidth speed and my memory went to:

14099MB/s Read, 12034MB/s Write, 16901MB/s Copy.
This represents an improvement of:
23% Read, 0% Write, 10% Copy.
With a 23% Read performance improvement will DataRAM’s RAMDrive solution improve?
It does not.
It appears something else is holding the performance of the RAMDrive software down. IOMeter *did* see some improvement (from 5000Mb/s to 5094MB/s… a 1.9% improvement) but pretty insignificant from what it *should* be, if it was hardware being the hold up.
The “bandwidth” of the RAMDrive is 40Gbps, a pretty large leap from the maximum you could get from SATA at it’s best (6Gbps), but I hope DataRAM investigates what the performance ceiling is of their software and can explain or correct what’s causing it.
Overall though, I’m still happy with the software and for a free 4GB RAM disk or $10 for a maximum of ~64GB, I think it’s a great value. I have 18GB of RAM in my system and utilize this software for programs like StarCraft or VMWare machines and the loading speeds are great.
Read More

Dataram RAMDisk Review

/ / /

I’ve purchased a product called Dataram RAMDISK and am going to do a quick review on it. It’s free for RAM Disk’s up to 4GB in size. Beyond that size and you need to pay $9.99 for a license file that allows you to increase it to whatever amount of free RAM you have in your system up to a maximum of 64GB. My system is a P6T SE with 6 RAM slots, 3x2GB RAM and 3x1GB RAM sticks are installed, giving me 9GB in total. This configuration activates triple-channel mode, so I’m getting the full 192bit of available bandwidth from my memory.
All of my RAM is DDR3 @ 1333MHz (PC3-10600), but Everest is reporting a speed of 800MHz. My theoretical MB/s speed should max out at 32000MB/s, but if Everest is only operating at 800MHz that means my theoretical maximum speed is 19200MB/s. I think the reason I did this is because my triple channel puked at the unmatched channels causing BSOD’s and non-boots, but I’ll investigate later as it’s a huge performance penalty. Everest confirms this is the measured speed I’m running at 19200MB/s
(Everest measures 19198MB/s)
(My unmatched odd sets of RAM pairs. Note, 1333MHz is the lowest my RAM goes, to 1800MHz for the fastest).
With that said, my current theoretical maximum speed my RAM should be able to operate at is 19200MB/s. I’m going to test my RAM first to gauge it’s maximum speed, then test the RAM Disk to see if it matches up.
Everest reports that my actual performance is 11446MB/s Read, 11978MB/s Write and 15376MB/s Copy. The Memory Read benchmark reads a 16 MB sized, 1 MB aligned data buffer from system memory into the CPU. Memory is read in forward direction, continuously without breaks. The Memory Write benchmark writes a 16 MB sized, 1 MB aligned data buffer from the CPU into the system memory.
I will attempt to duplicate these with IO Meter to see how close the RAMDisk can get to the theoretical benchmark.
Before that, he’s Everest Disk Benchmark result (everything is automatic – Linear Read):

With IOMeter I have the following configuration:
Size 1MB
Access 100%
Read 100%
Burst 1
Alignment 1MB
100% Sequential
Align I/O’s 1MB
The results I get are:
5000 I/O per second
5000 MB/s
Swapping Read 100% to 0% (making it 100% Write) I get:
4930 I/O and MB/s
So writes are more intensive then reads, as they usually are, but I cannot get anywhere close to the speed of reading a 16MB sized file in 1MB chunks to the maximum theoretical speed of the RAM. I’m unsure as to why that may be, but I suspect it’s the path the file takes from the RAMDisk -> Driver -> Bus -> CPU…?
To try and maximize the speed of the drive and match up to Everest Linear read to gauge the maximum speed of the disk, I’ll setup IO Meter to match Everest’s description of the Linear Read test:

This test is designed to measure the sustained linear (sequential) reading performance of the storage device by reading all data from the surface of the device.

IOMeter does this easily enough.
Using Procmon, I was able to verify that Linear Read uses a 64KB block size and reads the entire disk. Doing this with IO Meter I achieved the same results as above in the MB/s, but much higher IO/s. I’m unsure why IOMeter is unable to match Everest’s results.
HD Tach was not useful as it would operate at 3000MB/s for various lengths of time each time I reran the test. Sometimes it would operate at 3000MB/s up to 0.5GB then 700MB/s for the rest of the drive, or 3000MB/s up to 2.4GB.
Too inconsistent to make an observation.
To compare this RAMDisk to other HDD’s I turned to Anandtech and used his settings to compare some SSD drives. His results are here.
The results I achieved are:
133362 IOs per second
522 MB/s
Average Write Latency 0.0073
Max Write Latency 0.5526
Compared to the first gen Intel SSD’s the RAM Disk is:
12x faster in IOs per second
12x faster in MB/s
12x faster in Average Write Latency 0.0073
170x faster in Max Write Latency 0.5526
Pretty much an order of magnitude faster as should be expected for a RAM Disk vs. a top of the line SSD.
In the end, I’m unsure if I’ve hit a wall with my numbers, but it feels artificial. Everest does come within 70% of the numbers it achieved in a pure memory test, but even the Everest test tops out at exactly 8192MB/s.
I’ll try changing my memory speeds to something faster and see if this limit is artificial or a limit of my system.
Read More