Properly Install Mac Yosemite OS X 11.3 On Windows with VirtualBox

I have a MacBook Pro but I wanted to use the Mac OS on my desktop for testing purposes only. So I looked up some sites and read through some articles and after trying a few it seemed a couple of steps worked on one site and a couple on another site and then I needed some side steps to get it all working.

For example has a great article on installing Yosemite on your PC (Non-VM). While as some forum post on xda-developers had a quick and dirty install Yosemite on your VirtualBox from beta, but it didn’t work for me. I would get an error Undefined 0 and so I had to track down a solution for that which is geared towards creating a bootable USB drive for Yosemite.  During those previous steps I had to figure out how to get the downloaded Yosemite Install from my mac into a format I can put on my Windows 8 machine for my virtualbox. So I had to convert the downloaded app the an ISO format. Though if you combine this with the bootable USB steps I needed, it took a matter of jumping around to get it working. Then to top it off I needed the MultiBeast files for sound, internet etc from the first article.

So I’ve taken the time to organize all the steps from all those articles into one that worked for me and made some flight modifications to the steps where needed.

Pre-Req Setup:

Install VirtualBox and make sure it shows 64bit OS Options.


If you don’t have the 64 bit options you need to do one or both of the following.


Step 1: Download Yosemite on a Mac System

  • OS X Yosemite (Free): The method used by this guide requires that you download a free copy of the Yosemite installer app from the Mac App Store. Though the Mac App Store is included in Mac OS X 10.6.6 and newer, you have to be running at least 10.6.8 to download Yosemite.

Edit: Once that’s downloaded then you should be able to run the following commands to start the process of converting the downloaded app into an iso.

Step 2: Extract, Mount, Start Creation of ISO files

# Mount the installer image
hdiutil attach /Applications/Install\ OS\ X\ -noverify -nobrowse -mountpoint /Volumes/install_app

# Convert the boot image to a sparse bundle
hdiutil convert /Volumes/install_app/BaseSystem.dmg -format UDSP -o /tmp/Yosemite

# Increase the sparse bundle capacity to accommodate the packages
hdiutil resize -size 8g /tmp/Yosemite.sparseimage

# Mount the sparse bundle for package addition
hdiutil attach /tmp/Yosemite.sparseimage -noverify -nobrowse -mountpoint /Volumes/install_build

# Remove Package link and replace with actual files
rm /Volumes/install_build/System/Installation/Packages
cp -rp /Volumes/install_app/Packages /Volumes/install_build/System/Installation/

Step 3: Extract missing BaseSystem files for future ISO files

…you'll need to open theInstallESD.dmg file from your Yosemite Install app.

  1. Head to Applications
  2. Find the Install OS X Yosemite app
  3. Right-click on it and Show Package Contents

  1. Navigate to Contents -> SharedSupport and open InstallESD.dmg
  2. Wait for it to finish Verifying... and mount

  1. When it mounts, you'll see a new window with a Packages folder

Now, don't do anything with this Packages folder just yet. First, we need to unhide the files located in this newly mounted OS X Install ESD image.

To see the hidden files in the OS X Install ESD image, open up a Terminal and input the following two commands (hit Enter after each one). And don't worry, we'll be undoing this at the end of this guide.

  • defaults write AppleShowAllFiles TRUE
  • killall Finder

If successful, you will see three other files slightly grayed out in the mounted OS X Install ESD window. The one we need here is BaseSystem.dmg.

Step 4: Copy the BackSystem.dmg file to /Volumes/install_build/

I ended up copying with the .dmg and the .chunklist but article says you only need the .dmg.

Easiest way for me I created a folder on the desktop called “tmp” then I copied both files from OS X Install ESD into this “tmp” folder on my desktop. Then I was able to run the cp (copy) command in terminal. When you open Terminal it drops you into your user folder. You can switch to your “tmp” folder on your desktop like this

cd ~/Desktop/tmp

Once you are in the folder those files are located then copy them to the future ISO files location

cp BaseSystem.dmg /Volumes/install_build/
cp BaseSystem.chunklist /Volumes/install_build/
Note: Without this step you end up getting the Undeified Error 0 in Step 7

Step 5: Build the ISO file

This will put an iso file on your desktop called Yosemite.iso

# Unmount the installer image
hdiutil detach /Volumes/install_app

# Unmount the sparse bundle
hdiutil detach /Volumes/install_build

# Resize the partition in the sparse bundle to remove any free space
hdiutil resize -size `hdiutil resize -limits /tmp/Yosemite.sparseimage | tail -n 1 | awk '{ print $1 }'`b /tmp/Yosemite.sparseimage

# Convert the sparse bundle to ISO/CD master
hdiutil convert /tmp/Yosemite.sparseimage -format UDTO -o /tmp/Yosemite

# Remove the sparse bundle
rm /tmp/Yosemite.sparseimage

# Rename the ISO and move it to the desktop
mv /tmp/Yosemite.cdr ~/Desktop/Yosemite.iso

Now copy this 6GB file over to your Windows Machine. I used a 16GB USB which was formatted in ExFat

You can now re-hide the hidden files running the same command but with FALSE

  • defaults write AppleShowAllFiles FALSE
  • killall Finder


STEP 6. Setup VirtualBox

Create your new VirtualBox VM according to the following:

Edit: I ended up using 8GB of ram.

- Create a VM disk with > 40 GiB
- Under General > Basic:Version, use "Mac OS X (64bit)"
- Under System > Motherboard
    : Base Memory, select 6 GiB VM RAM
    : Chipset, use PCIIX 
    : Extended Features, select all to use EFI, ACPI, and UTC
- Under System > Processor, select only 1 CPU
- Under System > Acceleration: Hardware Virtualization, select all.
- Under Display > Video:Video Memory, use 128 MB, and do not select any Extended Features (2D/3D)
- Under Storage > Storage Tree, select the "Empty" (CD icon) and go to:
  "CD/DVD Drive" selector and click on the right-most CD icon for a 
  drop-down menu. On that menu, browse to and select your *.iso 
  image you downloaded above. Also select the "Live CD/DVD" option. 
- Save and close VirtualBox.

Next you need to tune VB to impersonate some recent Apple HW.
First re-start VirtualBox. Once started, run an administrative command shell and run these. Note that the first command takes a minute.

Note: Make sure you run the command from where Virtual Box is installed. By default that is in C:\Program Files\Oracle\VirtualBox\


Run each line

VBoxManage.exe modifyvm "YourVMname" --cpuidset 00000001 000306a9 04100800 7fbae3ff bfebfbff
VBoxManage setextradata "YourVMname" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
VBoxManage setextradata "YourVMname" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "YourVMname" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "ILoveApple"
VBoxManage setextradata "YourVMname" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "YourVMname" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

Close and reopen VirtaulBox for the changes to take effect. Be very patient, and after some error messages your OSX should bootup to start the setup process.

Step 7. The Setup Process

Formatting the (new) VM disk/partition
Once the boot process starts loading, you'll have to select language and then choose the boot disk to install on. But only the mounted CD-ROM (DMG) image is available so you’ll have to go into Disk Utility and format the VM disk partition and give it a name.

The name can be whatever you want it to be

Now you can exit DIsk Utility and continue installing by selecting your new disk...

Once installation is finished, the system will reboot and you will be asked a few setup questions (this took awhile). Also keep in mind if the VirtualBox is not the focused application you might not see the screen change when it’s done do to video drivers.

After that the Feedback Assistant will ask you signup. Force close it.

Edit: I never got this screen

Be sure at this point to remove the .iso file from the CD Storage Device in VirtualBox else if you reboot you’ll end up going back into setup.

Step 8: Multibeast

Multibeast is a collection of kext files that you'll need to install for your Hackintoshes to have sound, internet, a high resolution screen, and more. Different Hackintosh builds require different Multibeast setups, though most setups are very similar. Whether you're installing Mac OS X on your computer for the first time, or just updating your computer from an older version of OS X, you'll probably have to run Multibeast after the initial installation of Yosemite. Find out what Multibeast options you need to install.

Edit: Now from here I’m not sure. My version runs but it’s kind of slow and I can’t change the resolution because I need to track down the right drivers and use Multibest or manually install them. You may have difference outcomes.

To run Multibeast in OS X Yosemite, you may have to go the "Security" section of System Preferences in Mac OS X, go to the "General" section, and check "Anywhere" in the "Allow applications" section. After running Multibeast, you'll also probably want to change your BIOS settings back to normal (from Step 4).

Well anyway, at this point you should be done!

Configure your Office 365 for SMTP Applications

Great article if you want to configure your local windows server to send out emails via SMTP via your Office 365 account. Though some of the initial steps have changed and not updated on the site.

Updated Steps 2-5:

  • 2. Click on Outlook in the top Right Corner (From the Portal Site)
  • 3. Click on the Gear, then Options
  • 4. Click on the link that says “Settings for POP or IMAP access…”
  • 5. This will open a popup window. Scroll to the bottom to see your SMTP Server Information.

Then follow the rest of the steps.

Restrict IIS to listen only on X IP Address. Allowing you to co-run with TomCat/Apache on port 80 with IIS on port 80


Long title I know. So your running IIS on your server and serving up websites on port 80.  You also have some third party program that’s running on Tomcat. Maybe like Atlassian products like Jira or Confluence. However they have to run on ports like 8088 or 8443 for SSL because TomCat can bind the port numbers but cannot use port 80 because IIS hogs that up on all your IP addresses.

Assuming your server has more then one IP you can limit IIS to only bind on a single IP and then in TomCat’s config you can limit it’s binding IP to the other. (Technically you’re not limiting IIS you’re limiting the http web protocol that IIS uses).


Open a command prompt as an administrator

Show which IP Address IIS is listening/binding too with this command.

netsh http show iplisten

Then limit IIS to listen/bind certain IP address with this command

netsh http add iplisten

Reboot the server (You could try restarting http service but that doesn’t always show up in services and it’s a pain. Easier to reboot).

Run the listen command again and you should that the restricted IP is no longer in the list. You’re now free to use that IP for TomCat or some other service and bind to port 80 and 443.

Getting Passive FTP to work with Windows Advanced Firewall and Gene6FTP G6FTP Server

Many administrators have trouble with getting passive working. There is a good article over on TechNet ( that works well if you’re using the local FTP services built into IIS.

There are slight modifications if you are using Gene6FTP Server.


The only thing you really have to do is add G6FTPServer.exe to the allowed programs inbound rules. Assuming your outbound is always “allow”.

New Inbound Rule, Program, point to C:\Program Files (x86)\Gene6 FTP Server\G6FTPServer.exe

That should fix your Passive (PASV) mode.

If you want to limit what ports to use, you can right click on the domain and properties.  Under “IP binding” you can limit what ports to use.


Without this, you will get errors such as in Visual Studio when trying to use FTP, that a connection failed due to 425 error.  Or Can’t open a data connection (425).

Getting Out of Memory Exception when you have plenty of Memory/RAM available


This is a great article on why having or adding more memory won’t fix your Out of Memory Exception.   Bottom line.. on a 32bit server you’re site will crash when it hits between 600MB and 800MB.  The amount varies based on what else is going on with the machine.   The solution? Basically, you have to upgrade to a 64bit OS or re-write your application.


Why adding more memory won’t fix your Out of Memory error by Edge

Copied from the article directly, in case it ever goes down.


Here an interesting case. Consider there 2 scenarios:

Both are running the same website, both have the same amount of users connected.

Now imagine this website has a page to upload pictures, just like any regular photo-album website.

For some reason, at some point the users complain that they see an error page indicating out of memory error.

So, you wonder: How come? they are just uploading a photo to my website, and I still have plenty of memory in my server anyway.

Anyhow, you stop thinking about this and go for the easiest, quick and dirty solution: If the system tells me that my computer does not have enough memory then I just need to add more memory. Right?

And guess what? you still will get the error message.

That's a very common mistake. Having a machine with 10GB of memory does not mean you will have 10GB of memory available. I explain.

It does not matter if your computer or server has 512 MB, 1 GB, 2 GB, 4 GB or 8 GB of RAM. If your machine is a 32-bit machine it will only be able to see/manage 4 GB. That's mathematics, that's life, that's the way things are and you can't do nothing about it. A 32-bit machine can not do more than that.

Additional memory may increase your system performance, but it won't increase the memory availability. Sure your computer will use less the hard disk for swapping operations and will be able put more stuff in memory and start some programs faster, but 4GB is the limit; after this point the memory management module will start doing disk swap and to use the famous page file.

And here comes more bad news: Your Windows system on a 32-bit machine requires 2 GB allocated only for it.

So, if you have 4 GB installed, effectively you will have 2 GB only for applications; your windows will be using alone 2 GB.

So, what does out of memory means?

Well, according to some people at Microsoft, this limit for an average configuration is reached between 600 MB and 800 MB of utilization. That 800 number is NOT A RULE, is a baseline. Generally speaking the largest majority of configurations with website, .NET and SQL Server database might have a problem around this point. Of course, this can vary from system to a matter of fact a system can be out of memory at just 600 MB.

Yes, it does sounds crazy. You look so happy now that you just bought a 4GB RAM notebook and your computer is breaking with just 800MB, hun?

Here is another point for you. Have you ever seen someone bragging that he/she bought a 10-megapixel camera and now he/she believes their pictures are going to be better because of this?

Well, guess what? Just like the number of megapixels in a camera box does not have much to do with picture quality, RAM memory does not have much to do with hard disk space.

That's a common mistake: People buy RAM as if they were buying a hard disk.

RAM usage needs to me continuous, unlike hard disk. A simple 5MB Microsoft Word document when saved in a hard disk can be split up in hundreds of pieces; When you open this file in memory, the RAM requires those 5MB to be allocated continuously.

Can you see now the reason for the 'out of memory' message?

Yes, it really means 'there is not enough continuous memory to place that file in memory'. Your system might have 2GB of RAM but unfortunately it might be too busy with stuff running and there is no enough continuous memory to put the picture you are uploading.

Yeah, you can not do much but you can buy a 64-bit machine then when you add more memory you can really use it more efficiently. And yes, we have Microsoft Windows systems for 64-bit machines.

If you do not want to buy a new system of upgrade you current server to a better version then you should think other solutions in the business process, such as to avoid users upload pictures with more than 1 MB in size to be uploaded.

The Add-in ‘xxxx' failed to load or caused an exception in SQL Management Studio


And clicking on Yes to remove it, doesn’t help.  This is actually a permission issue from Vista and Windows 7 and up.


The service pack update to Windows Vista has been known to change permissions to the registry in a way that prevents user access to the information about installed classes: HKEY_CLASSES_ROOT. This prevents SQL Server Management Studio from loading the add-ins into the environment.

To correct this problem, it's necessary to assign permissions to the registry for the logged-in user.

  1. First open the Registry Editor (regedit.exe) using the "Run As Administrator" option.
  2. Right-click HKEY_CLASSES_ROOT and select "Permissions", and give the logged-in user full control.
  3. The following permissions needed to be added to HKEY_CLASSES_ROOT as well:
           -Users: read
           -System: full control
           -CREATOR OWNER: full control on subkeys only

Change Binding Order on Network Adapters for Windows 7


Good article on ordering the binding of your network adapters.  You can have your PC make sure it uses Wired over Wireless if you have both, or IP4 over IP6 if you have both.


Article has steps to check the current priority as well.

Changing Network Cards Priority in Windows:

You can change the network card priority in two ways in Windows:

Method #1:

To start with, I’ll introduce you the easier method first:

1. Go to Control Panel > Network and Internet (View network status and tasks)> Change adapter settings and now you will now be in “Network Connections” window.


2. Now press Alt button and a hidden menu will appear beneath the location bar.


3. Under the Advanced menu, click “Advanced Settings”.


4. You can now see the order of preference in which the connections are accessed by network services.


Use “Up” and “Down” buttons to move a network connection either up or down and thus changing the order of priority of connections.

Method #2:

And now let me introduce you the second alternative method, which is a bit laborious when compared to the first one:

1. Go to the “Network Connections” window by following the step 1 as detailed in the above step.

2. Right-click on the network connections for which you want to change the priority order and choose “Properties”. In my case, I wanted to change the interface metric for my wireless network card and hence I will proceed with the changing priority order for Wireless Network Connection under my network connections.


3. Now choose “Internet protocol Version 4 (TCP/IPv4)” and click on “Properties” button.



Click on “Advanced..” button in the IPv4 properties window.

4. Look for the “Automatic metric” option in the advanced TCP/IP settings window.


5. Uncheck against the “Automatic metric” option and enter some value other than 1 in the filed against “Interface metric” (as 1 will always be assigned to Microsoft Loopback adapter always) as shown:


Click OK and close all the windows.

You have now changed the priority of your network card interfaces.

Slow Remote Desktop

These are the commands I ran to speed up Remote Desktop. Article is for Vista, but it applies to Windows 7 as well.  Run commands locally even if it’s just a particular server that is slow. Which makes you think it’s that server and not your machine.

Not sure if it applies to XP.

- Run a command prompt (cmd.exe) as an Administrator
- Type: netsh interface tcp set global autotuninglevel=disabled
Disable the autotunning feature in Vista completely, and fit and lock the RWIN receive window to default value 65536 bytes.
If you want to to re-enable it:
- Type: netsh interface tcp set global autotuninglevel=normal
In some cases you may need to use this command in addition to the above, but I didn't have to:
- Type: netsh interface tcp set global rss=disabled
Update! This command makes your network connection EVEN FASTER
Type: netsh interface tcp set global autotuninglevel=highlyrestricted
The reason is that this command will still "auto tune" your TCP connections, but not as drastically as 'normal' mode. It will allow the receive window to grow beyond the default value, but again it will do so very conservatively.


$35 laptop prototype or something from India coming soon! (Update)


India is about to put out a computer that’s only $35!! Crazy!  Then drop the price to $10 a unit as it sells. Don’t know what the stats are other then it’s a Linux based machine but I’d buy 10 of them.

From the picture it kind of looks like a wallet and flexible.  Who’s been smudging up my screen!

“India has unveiled a $35 computer prototype as part of its program to provide connectivity to its students and teachers at affordable prices.”

“The ministry said the price would gradually fall to $10 a piece.”

“The Linux-based computer is equipped with an Internet browser, a PDF reader and several other facilities…”



Indian government minister Kapil Sibal unveils a prototype of the $35 computer.



Looks like it’s still in progress and more legit then the original post.


  • OS: It was changed from Linux to Android.
  • Virtual Keyboard
  • Camera
  • Full Video Capability
  • Wi-Fi
  • 2GB Ram
  • Scheduled for Mid-2011