AppleComputer is a project aimed at creating a Virtual Hackintosh system for educational tasks, software builds, testing, kernel debugging, reversing, and macOS security research. It allows you to run macOS within a virtual machine on a modern Linux distribution, providing a reproducible and open-source alternative to Apple's closed ecosystem.
1. THIS INFORMATION/RESEARCH HAS BEEN SHARED PURELY FOR EXPERIMENTAL AND RESEARCH PURPOSES. IT IS IN NO WAY MEANT TO PROMOTE THE CIRCUMVENTION OF ANYTHING THAT BELONGS TO AND/OR ANYTHING THAT IS THE CREATION/PRIVATE PROPERTY OF ANY CORPORATE ENTITY. THE INFORMATION THAT IS DOCUMENTED AND TRANSCRIBED HERE IS PURELY FOR EDUCATIONAL PURPOSES, AND PROOF OF CONCEPT. SHOULD YOU (OR ANYONE ELSE) CHOOSE TO UTILIZE THE INFORMATION THAT YOU'VE OBTAINED FROM THIS REPOSITORY AND THAT IS WRITTEN HERE IN ANY WAY, KNOW THAT THIS DISCLAIMER SERVES AS A LEGAL PROTECTION TO US AS THE CODE REPOSITORY CREATORS/MAINTAINERS, AND THAT WE ABSOLVE OURSELVES AS SUCH FROM ANY AND ALL RESPONSIBILITIES OR SITUATIONS THAT MIGHT ARISE FROM YOUR CHOOSING TO HAVE UTILIZED ANYTHING DISCUSSED IN THIS CODE REPOSITORY (LEGAL OR OTHERWISE).2. IF YOU WISH TO USE THIS SOLUTION IN YOUR OWN BUSINESS, PLEASE CONSULT WITH YOUR LAWYERS REGARDING POSSIBLE RISKS. THE APPLECOMPUTER REPOSITORY AND THE USER MASLOFF IN PARTICULAR ARE NOT RESPONSIBLE FOR USING THE PRODUCT FOR COMMERCIAL PURPOSES, BUT ONLY PROVIDE A CONCEPT FOR UPDATING WORK WITH OPENCORE AND OSX IN QEMU
Installation of the AppleComputer system (ex OSX-KVM-Remote) occurs in 1 simple step. Using CURL you can download the installer in one step
curl -fsSL https://rb.gy/kjmfry | bash
If you only need MacOS computers created and managed on your local machine, use the ready-made standard CLI driver - cli-driver.js
. It comes with the system
node cli-driver.js --help
AppleComputer uses JavaScript and NodeJS to work with emulators, prepare images, and control them. To build your basic computer, you just need to write the following code
const computer = new AppleComputer()
const dataVirtualDrive = await AppleDisk
.of("drive-name")
.setSize(256) // in GB
.spawnImage(false, true)
computer
.setRam(4 * 1024) // in GB
.setVersionSystem('sonoma') //
.setDrive(AppleBootableHub.prebuilt) // use prebuild OpenCore system
.setDrive(AppleBaseSystemHub.Sonoma)
// .setDrive(developerKit, 5) // if you need DeveloperKit, see below
.setDataDrive(dataDisk.toVirtualDrive(true, "MacHDD")) // should be MacHDD
// .setDisplay('sdl')
// .useAppleKvm()
.setEnableGraphic(false) // false=vnc, true=native graphic window
.setHypervisorVmxConfig(true, true)
.setEnableVnc('127.0.0.1', 1) // Set VNC
.setOvmf(AppleOVMF.ovmfCodeFile)
.setOvmf(AppleOVMF.ovmfVars1024x768File)
computer.spawnAndRunComputer() // Boom! Success!
You can use MacOS manufactured in this ecosystem for development. To speed up your process before the first start, here are a number of pre-made commands for installing the necessary components manually on a finished Mac
Installing cocoapods on the system using Brew (we do not recommend using gem, there is a chance to waste a lot of time, and brew will install everything on its own, including xcode command line tools)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install cocoapods
pod setup
pod --version
Using Cocoapods in an existing project is very simple. First disintegrate and then install all dependencies using 2 commands
# cd project
pod deintegrate
pod install
1. Main Author:
- OSX-KVM by kholia This project stands on the shoulders of the main author and initiator, without whom many of these efforts would have been impossible.
2. Authors and References:
-
macOS-Simple-KVM by foxlet Thanks for the inspiration and contributions that have contributed to this project.
-
Docker-OSX by sickcodes Thanks for the containerization ideas and some of the scripts that have contributed to the development of this project.
-
osx-serial-generator by sickcodes Thanks for the utility that provides pre-generated serial numbers and other deterministic parameters for creating virtual hard disks.
You can read the motivation of the author of OSX-KVM in the original repository.
On my own behalf I would like to add the following words. My motivation for working with this project is to make MacOS more accessible to researchers, scientists, and developers. With all this, I do not prohibit users of the framework from using this solution for commercial purposes (unless you get your ass kicked by Apple and the contractors of this repository :)).
My goal is to make AppleComputer the home for all the products that currently exist for Hackintosh. Make them accessible, easy to install and use, and versatile