Skip to content

masloffvs/OSX-KVM-Remote

 
 

Repository files navigation

AppleComputer

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.

Python JavaScript Bash

DISCLAIMER

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

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

Ready-made solutions

CLI Driver

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

SDK

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!

Development

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

Install Cocoapods

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
Use Cocoapods in exist project

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

Credits and Authors

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.

Motivation

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

Languages

  • JavaScript 50.4%
  • Shell 30.9%
  • Python 18.6%
  • Other 0.1%