Skip to content

Latest commit

 

History

History
96 lines (80 loc) · 5.77 KB

README.md

File metadata and controls

96 lines (80 loc) · 5.77 KB

Mac OS X Vagrant box for VirtualBox

This is a issue tracker for OS X Vagrant boxes, which can be found in Download section

Box was tested only on VirtualBox with Mac OS as a host. Mainly, I made it to build our iOS applications via CI-server.

Downloads

You can find following images on VagrantCloud:

  • Mac OS X Yosemite 10.10 (XCode 6.4) (13Gb) (sha1: 6339bf812017b9f0046d9fdda79cc6f3d2ab169a)
  • macOS Sierra (XCode 8.2) (14.1Gb)

Notice it can take a while to download the image as they are large and can be throtled by VagrantCloud hosting.

Setting up

  1. Install Vagrant and VirtualBox;
  2. cd into your project directory;
  3. Run vagrant init AndrewDryga/vagrant-box-osx;
  4. Your Vagrantfile should be ready as soon as Vagrant downloads box;
  5. Start VM by calling vagrant up.

OS X Licensing

Apple's EULA states that you can install your copy on your actual Apple-hardware, plus up to two VMs running on your Apple-hardware. So using this box on another hardware is may be illegal and you should do it on your own risk.

By using it you agree with all macOS Sierra and XCode license agreements.

What's included?

Sierra box:

Yosemite box:

  • Default Vagrantfile (inside box) that fixes most of common issues;
  • Homebrew;
  • Homebrew Cask;
  • Puppet 3.7.4;
  • XCode 6.4;
  • XCode Command Line Tools;
  • NodeJS 0.12.7 (for npm);
  • Appium 1.4.10;
  • iOS Simulator (all devices for iOS 8.4).

Useful cli tools and information

  • Nomad CLI - provides a set of tools that allow to manage certificates, profiles and many other things;
  • ObjC.io Issue 6 - how-to article about building apps in cli-only (this one about Travis-Ci);
  • security - use it to manage your keychains;
  • xctool - Facebook project for building iOS apps.

Common issues

  • Box may crash on AMD-based hosts due to VirtualBox issues.
  • Do not turn 3D acceleration on in VirtualBox, or it will start retuning aborted condition and would not start in headless mode;
  • VirtualBox doesn't have Guest additions for Mac OS X, so you can't have shared folders. Instead you can use normal network shared folders (docs):
    # Use NFS for the shared folder
    config.vm.synced_folder ".", "/vagrant",
        id: "core",
        :nfs => true,
        :mount_options => ['nolock,vers=3,udp,noatime']
  • If your VM freezes with hfs mounted macintosh hd on device root_device then you need to set cpuidset inside your Vagrantfile: vb.customize ["modifyvm", :id, "--cpuidset", "1","000206a7","02100800","1fbae3bf","bfebfbff"] (it's included since version 0.2);
  • If your mouse does not work on a MacBook Pro host machine, shut down the VM and open the VirtualBox Manager. Edit the VM's settings. Choose the System tab. Under the Motherboard sub-tab, set the Chipset option to be PIIX 3, and set the Pointing Device option to be USB Tablet. Restart the VM;
  • When OSX is trying to prompt graphically for password (i.e when using swift REPL), it will raise the error error:process exited with status -1) (lost connection) because there is no graphical output when using vagrant via ssh login, enable the develop mode can solve this situation, run the following command: sudo /usr/sbin/DevToolsSecurity --enable;
  • If you need user password (for example for Homebrew Cask). Vagrant have default consideration to create user vagrant with password vagrant, you can use it.

Warning

VirtualBox support for Mac OS X is experimental. More information can be found in official docs.

Tips to build your own box

Main think you should remember is that you need latest VirtualBox version BEFORE you start installation. Process of installation is pretty straight forward (as on usual Mac), but you need to erase virtual drive during installation via Disk Utilities. After that just follow Vagrant guide to create base box and another one to package it.

Sometimes you need to rebuild VirtualBox kernel extensions before installing OS on VM.

Helpful links (most of them are outdated):