Why are Libraries Important?
Libraries play a pivotal role in the seamless functioning of Bushel. They allow you to store, organize, and access various macOS restore images essential for configuring and running virtual machines. With a well-maintained Library, you can easily select specific macOS versions and configurations for their testing needs.
How to Use Libraries in Bushel:
- Creation: After onboarding, follow the prompts to create your Library within Bushel.
- Importing Images: Import restore images manually or through online hubs, making them accessible within your Library.
- Selection for Virtual Machines: When creating a new virtual machine, choose the desired macOS version from your Library for installation.
- Maintenance: Regularly maintain and update your Library to ensure a comprehensive collection of macOS restore images.
Libraries are the backbone of your testing environment in Bushel, offering a convenient and organized way to access essential macOS restore images. By utilizing Libraries effectively, you can streamline their virtual machine setup and testing processes for optimal app development.
In Bushel, an Image refers to a macOS restore image stored within your Library. These images, often recognized by their .ipsw file format, contain specific versions of macOS that you can use to install and configure virtual machines for app testing.
Images stored in Libraries represent complete versions of macOS, essential for installing and configuring virtual machines within Bushel. They serve as the operating system to be installed on the virtual machine. Each image represents a specific version of macOS, allowing you to choose and install specific operating systems required for their testing needs.
In Bushel, a Hub refers to an online repository or source that provides you with a collection of macOS restore images (.ipsw files). Hubs serve as convenient sources for obtaining various versions of macOS to import into your Library for setting up virtual machines.
It's important to note that currently, Bushel supports Apple's latest version of macOS within the available Hubs. This means you'll have access to the most recent macOS version provided by Apple.
Hubs expand the range of available macOS versions beyond the default offerings within the app. They give you access to a broader selection of macOS restore images, enabling you to create a more diverse range of testing environments.
In Bushel, a Machine refers to a virtual computer environment created within the app to install and run different versions macOS operating systems.
Machines serve as isolated environments which allows you to test and develop apps across various operating system versions without affecting your primary system.
Key Features of Machines:
- Operating System Testing: You can install and test different versions of macOS, including beta releases or older versions, within your individual machines.
- Custom Configurations: Customize each machine with specific settings, such as memory allocation and CPU usage, to replicate diverse testing environments.
- Snapshot Functionality: Machines support the creation of snapshots, allowing you to capture and revert to specific states for efficient testing and debugging.
How to Use Machines in Bushel:
- Creating Machines: Within Bushel, follow the prompts to create a new virtual machine, selecting the desired macOS image from your Library.
- Customizing Settings: Customize machine configurations, such as memory allocation and CPU usage, based on your testing requirements.
- Running Tests: Install and run apps or scripts within the virtual machine environment to perform tests or debug applications.
- Snapshot Management: Utilize the snapshot functionality to capture specific states of the machine and revert to them as needed.
Machines in Bushel are virtual environments that allow you to install and run different versions of macOS for app testing and development. By effectively utilizing and managing machines, you can conduct comprehensive testing across various operating system versions without impacting your primary system.
In Bushel, a Snapshot is a point-in-time copy of the current state of a virtual machine (VM). It captures the entire configuration, settings, and data of the VM at that specific moment.
Snapshots serve as a safety net for users, allowing them to create a backup of a VM's state before making changes or updates. This enables easy restoration to a previous state if needed, avoiding potential issues or data loss.
Key Features of Snapshots
- State Preservation: Snapshots capture the exact configuration and content of the VM at the time they are taken.
- Rollback Capability: Users can revert a VM back to a specific snapshot, restoring the VM to its state at that particular point in time.
- Testing and Debugging: Snapshots facilitate testing different scenarios or changes within a VM without the risk of permanent alterations.
How to Use Snapshots in Bushel
- Taking Snapshots: Within the Bushel interface, initiate the snapshot feature to capture the current state of the VM.
- Restoring from Snapshots: If necessary, revert the VM back to a previously taken snapshot to return to that specific state.
- Snapshot Management: Organize and manage snapshots by naming them descriptively to easily identify specific states of the VM.
Snapshots in Bushel are a vital feature that enables users to capture and restore the state of a virtual machine, providing a safety net for testing and development. By effectively utilizing snapshots, users can experiment and make changes within VMs without the fear of losing critical configurations or data.
Tips and Tricks
If you plan to use your VM for development, there are a few steps you can take to prepare your machine.
Customize Your VM
Once the machine is setup, there are a few things I'd recommend doing:
Remove Dock Icons
Since we can't sign-in with our Apple ID, any application which requires an Apple ID can be removed from the Dock. Besides any other app which you won't be using should be removed.
Customize Your Settings
Do you like light or dark mode? Natural scrolling or reverse scrolling? It's good to set these up according to your preferences.
If you are using an older version of macOS you can disable those update notifications and badges using the following commands:
defaults write com.apple.systempreferences AttentionPrefBundleIDs 0 && killall Dock
The easiest way to setup sharing across your host machine is to setup File Sharing on your guest VM. Additionally it may be a good idea to also enable:
- Remote Management
- Remote Apple Event
- Remote Login (i.e. ssh)
There are a few steps to ensure you can properly ssh into your VM if you wish.
Setting up SSH
Once you've setup ssh, take note of the ip address this machine is currently. Before you ssh in be sure to give sshd-keygen-wrapper Full Disk Access. If you don't you will receive an
Operation not permitted error in the terminal.
This is also a good time to install homebrew or package manager of your choice.
If you plan to use git, be sure to create and add your ssh key as well to your favorite source code repository.
I try to sign-in with my Apple account from the Virtual Machine but it always fails.
This is a known issue with Virtualization. You can not sign into a VM with your Apple ID. We have researched this extensively and there’s simply no way to get around this. There are plenty of posts where other developers have run into this. As for now, there's no way in getting around this.
Can I make virtual machine for Linux or Windows?
No, unfortunately this app is focused on app developers who use or develop for macOS. At some point we may support Linux and even more so Windows but that's not a focus for Bushel right now.
Can I share clipboard? How can I share files between my machine and my virtual machine?
The easiest way to setup sharing across your host machine is to setup file sharing on your guest VM.
Can I use this on an Intel machine?
Unfortunately the Virtualization framework we are using does not support Intel Macs.
Can I use a VM to do iOS development on an older version of Xcode?
Yes. You can install Xcode on VM. That's the purpose of Bushel of course. There are caveats of course but as long as you don't need those features for now, please do install Xcode and do development.
If there's something missing which would help you with development on your VM, don't hesitate to contact us.
How do I install the Operating System, I see no images!
Before you can create a machine, you need to have images available. Create a library and import restore images to use for your machine.
How much does this cost?
Bushel is completely free! However there are some really great features available to Pro Subscribers such as:
Automatic Periodic Snapshots
Enjoy automatic periodic snapshots to safeguard your progress.
Annotate Your Snapshots
Organize and annotate snapshots with additional notes.
Auto-Snapshot on Shutdown
snapshots on shutdown for instant backups.
More features are coming soon exclusive to the Pro subscription, so stay tuned!
How to post feature request or feedback?
For now you can email us here
I got this error (DFU) what does it mean?
Some restore images are not compatible while in the case of DFU errors some are disallowed by Apple. Here's the precise wording from the Apple Feedback:
Please know that our engineering team has determined that this issue behaves as intended based on the information provided. We stop authorizing installs of seed builds shortly after the final release.
We are currently making a list of those images and will keep you up to date.
Can I use a VM to do iOS development on an iPhone?
This is currently supported but we are currently researching ways to do this.
Where can I find restore images so install different version of macOS?
Which macOS versions can I use to create a Virtual Machine?
The oldest version of macOS which is compatible is macOS Monterey v12.0.1; any version newer than that should work with Bushel.