Compare commits
9 Commits
01fbd7a8a6
...
e46a3c4d68
| Author | SHA1 | Date |
|---|---|---|
|
|
e46a3c4d68 | |
|
|
7f31e91099 | |
|
|
0b3e586b26 | |
|
|
fa7baa5fc8 | |
|
|
74d8498ea6 | |
|
|
b282993a4a | |
|
|
69f6e7d0cf | |
|
|
3259824617 | |
|
|
75dfe1b678 |
|
|
@ -1,5 +1,6 @@
|
|||
|Version|Date|Notes|
|
||||
|---|---|---|
|
||||
| |2021-09-18|Add `-e NETDEV=`|
|
||||
| |2021-09-09|Add Monterey|
|
||||
| |2021-08-27|Add iPhone passthrough OTA!|
|
||||
|6.0|2021-08-25|Added naked-auto. Keep kernel at 5.13, even tho it's just for supermin.|
|
||||
|
|
|
|||
10
Dockerfile
10
Dockerfile
|
|
@ -209,8 +209,8 @@ RUN touch Launch.sh \
|
|||
&& tee -a Launch.sh <<< '-drive id=InstallMedia,if=none,file=/home/arch/OSX-KVM/BaseSystem.img,format=${BASESYSTEM_FORMAT:-qcow2} \' \
|
||||
&& tee -a Launch.sh <<< '-drive id=MacHDD,if=none,file=${IMAGE_PATH:-/home/arch/OSX-KVM/mac_hdd_ng.img},format=${IMAGE_FORMAT:-qcow2} \' \
|
||||
&& tee -a Launch.sh <<< '-device ide-hd,bus=sata.4,drive=MacHDD \' \
|
||||
&& tee -a Launch.sh <<< '-netdev user,id=net0,hostfwd=tcp::${INTERNAL_SSH_PORT:-10022}-:22,hostfwd=tcp::${SCREEN_SHARE_PORT:-5900}-:5900,${ADDITIONAL_PORTS} \' \
|
||||
&& tee -a Launch.sh <<< '-device ${NETWORKING:-vmxnet3},netdev=net0,id=net0,mac=${MAC_ADDRESS:-52:54:00:09:49:17} \' \
|
||||
&& tee -a Launch.sh <<< '-netdev ${NETDEV:-user,id=net0,hostfwd=tcp::${INTERNAL_SSH_PORT:-10022}-:22,hostfwd=tcp::${SCREEN_SHARE_PORT:-5900}-:5900,${ADDITIONAL_PORTS}} \' \
|
||||
&& tee -a Launch.sh <<< '-device ${NETWORKING_DEVICE:-vmxnet3},netdev=net0,id=net0,mac=${MAC_ADDRESS:-52:54:00:09:49:17} \' \
|
||||
&& tee -a Launch.sh <<< '-monitor stdio \' \
|
||||
&& tee -a Launch.sh <<< '-boot menu=on \' \
|
||||
&& tee -a Launch.sh <<< '-vga vmware \' \
|
||||
|
|
@ -316,8 +316,14 @@ ENV KVM='accel=kvm:tcg'
|
|||
|
||||
ENV MASTER_PLIST_URL="https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom.plist"
|
||||
|
||||
# Add NETDEV for bridged networking option, see https://github.com/sickcodes/Docker-OSX/issues/72
|
||||
# ENV NETDEV='tap,id=net0,ifname=tap0,script=no,downscript=no'
|
||||
# ENV NETDEV='user,id=net0,hostfwd=tcp::${INTERNAL_SSH_PORT:-10022}-:22,hostfwd=tcp::${SCREEN_SHARE_PORT:-5900}-:5900,${ADDITIONAL_PORTS}'
|
||||
|
||||
# ENV NETWORKING=e1000-82545em
|
||||
# renamed to NETWORKING_DEVICE, but not deprecated
|
||||
ENV NETWORKING=vmxnet3
|
||||
ENV NETWORKING_DEVICE="${NETWORKING}"
|
||||
|
||||
# boolean for skipping the disk selection menu at in the boot process
|
||||
ENV NOPICKER=false
|
||||
|
|
|
|||
179
FAQ.md
179
FAQ.md
|
|
@ -160,6 +160,185 @@ If you wind up in the installer again after you've installed macOS it means you
|
|||
|
||||
Congratulations, you got a macOS VM up and running! Now what?
|
||||
|
||||
# Fixing Apple ID Login Issues in macOS Virtual Machines
|
||||
|
||||
## Problem Overview
|
||||
|
||||
When running macOS in a virtual machine, you may encounter problems logging into Apple services including:
|
||||
- Apple ID
|
||||
- iMessage
|
||||
- iCloud
|
||||
- App Store
|
||||
|
||||
This happens because Apple's services can detect that macOS is running in a virtual environment and block access. The solution is to apply a kernel patch that hides the VM presence from Apple's detection mechanism.
|
||||
|
||||
NOTE as per forum post: Unfortunately, this would very possibly break qemu-guest-agent, which is necessary for the host getting VM status or taking hot snapshot while the VM is running. This is because qemu-guest-agent also checks the hv_vmm_present flag, but only works if it is true (=1).
|
||||
|
||||
Use at your own risk. Hope it would help.
|
||||
|
||||
## Solution: Kernel Patching
|
||||
|
||||
This guide provides three methods to apply the necessary kernel patch. All methods implement the same fix originally described in [this forum post](https://forum.proxmox.com/threads/anyone-can-make-bluetooth-work-on-sonoma.153301/#post-697832).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Before proceeding with any method:
|
||||
- Make sure you can access your EFI partition
|
||||
- Locate your OpenCore `config.plist` file (typically in the `EFI/OC` folder)
|
||||
- Back up your current `config.plist` before making changes
|
||||
|
||||
## Method 1: Using the Utility Script (Simplest Approach)
|
||||
|
||||
This is the fastest and easiest way to apply the patch.
|
||||
|
||||
1. Mount your EFI partition using Clover Configurator or another EFI mounting tool
|
||||
2. Download the patch script:
|
||||
```bash
|
||||
curl -o apply_appleid_kernelpatch.py https://raw.githubusercontent.com/sickcodes/Docker-OSX/scripts/apply_appleid_kernelpatch.py
|
||||
```
|
||||
3. Run the script with your `config.plist` file path:
|
||||
```bash
|
||||
python3 apply_appleid_kernelpatch.py /path/to/config.plist
|
||||
```
|
||||
|
||||
**Pro Tip**: You can drag and drop the `config.plist` file into your terminal after typing `python3 apply_appleid_kernelpatch.py` for an easy path insertion.
|
||||
|
||||
**Note**: If you encounter a "permission denied" error, run the command with `sudo`:
|
||||
```bash
|
||||
sudo python3 apply_appleid_kernelpatch.py /path/to/config.plist
|
||||
```
|
||||
|
||||
## Method 2: Using OCAT (OpenCore Auxiliary Tools) GUI
|
||||
|
||||
If you prefer a graphical approach:
|
||||
|
||||
1. Open OCAT and load your `config.plist`
|
||||
2. Navigate to the **Kernel** section
|
||||
3. Go to the **Patch** subsection
|
||||
4. Add two new patch entries with the following details:
|
||||
|
||||
### Patch 1
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
| **Identifier** | `kernel` |
|
||||
| **Base** | *(leave empty)* |
|
||||
| **Count** | `1` |
|
||||
| **Find (Hex)** | `68696265726E61746568696472656164790068696265726E617465636F756E7400` |
|
||||
| **Limit** | `0` |
|
||||
| **Mask** | *(leave empty)* |
|
||||
| **Replace (Hex)** | `68696265726E61746568696472656164790068765F766D6D5F70726573656E7400` |
|
||||
| **Skip** | `0` |
|
||||
| **Arch** | `x86_64` |
|
||||
| **MinKernel** | `20.4.0` |
|
||||
| **MaxKernel** | *(leave empty)* |
|
||||
| **Enabled** | `True` |
|
||||
| **Comment** | `Sonoma VM BT Enabler - PART 1 of 2 - Patch kern.hv_vmm_present=0` |
|
||||
|
||||
### Patch 2
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
| **Identifier** | `kernel` |
|
||||
| **Base** | *(leave empty)* |
|
||||
| **Count** | `1` |
|
||||
| **Find (Hex)** | `626F6F742073657373696F6E20555549440068765F766D6D5F70726573656E7400` |
|
||||
| **Limit** | `0` |
|
||||
| **Mask** | *(leave empty)* |
|
||||
| **Replace (Hex)** | `626F6F742073657373696F6E20555549440068696265726E617465636F756E7400` |
|
||||
| **Skip** | `0` |
|
||||
| **Arch** | `x86_64` |
|
||||
| **MinKernel** | `22.0.0` |
|
||||
| **MaxKernel** | *(leave empty)* |
|
||||
| **Enabled** | `True` |
|
||||
| **Comment** | `Sonoma VM BT Enabler - PART 2 of 2 - Patch kern.hv_vmm_present=0` |
|
||||
|
||||
5. Save the configuration
|
||||
6. Reboot your VM
|
||||
|
||||
## Method 3: Direct `config.plist` Editing
|
||||
|
||||
For users who prefer to manually edit the configuration file:
|
||||
|
||||
1. Mount your EFI partition
|
||||
2. Locate and open your `config.plist` file in a text editor
|
||||
3. Find the `<key>Kernel</key>` → `<dict>` → `<key>Patch</key>` → `<array>` section
|
||||
4. Add these two `<dict>` entries within the `<array>`:
|
||||
|
||||
```xml
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Base</key>
|
||||
<string></string>
|
||||
<key>Comment</key>
|
||||
<string>Sonoma VM BT Enabler - PART 1 of 2 - Patch kern.hv_vmm_present=0</string>
|
||||
<key>Count</key>
|
||||
<integer>1</integer>
|
||||
<key>Enabled</key>
|
||||
<true/>
|
||||
<key>Find</key>
|
||||
<data>aGliZXJuYXRlaGlkcmVhZHkAaGliZXJuYXRlY291bnQA</data>
|
||||
<key>Identifier</key>
|
||||
<string>kernel</string>
|
||||
<key>Limit</key>
|
||||
<integer>0</integer>
|
||||
<key>Mask</key>
|
||||
<data></data>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>20.4.0</string>
|
||||
<key>Replace</key>
|
||||
<data>aGliZXJuYXRlaGlkcmVhZHkAaHZfdm1tX3ByZXNlbnQA</data>
|
||||
<key>ReplaceMask</key>
|
||||
<data></data>
|
||||
<key>Skip</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Arch</key>
|
||||
<string>x86_64</string>
|
||||
<key>Base</key>
|
||||
<string></string>
|
||||
<key>Comment</key>
|
||||
<string>Sonoma VM BT Enabler - PART 2 of 2 - Patch kern.hv_vmm_present=0</string>
|
||||
<key>Count</key>
|
||||
<integer>1</integer>
|
||||
<key>Enabled</key>
|
||||
<true/>
|
||||
<key>Find</key>
|
||||
<data>Ym9vdCBzZXNzaW9uIFVVSUQAaHZfdm1tX3ByZXNlbnQA</data>
|
||||
<key>Identifier</key>
|
||||
<string>kernel</string>
|
||||
<key>Limit</key>
|
||||
<integer>0</integer>
|
||||
<key>Mask</key>
|
||||
<data></data>
|
||||
<key>MaxKernel</key>
|
||||
<string></string>
|
||||
<key>MinKernel</key>
|
||||
<string>22.0.0</string>
|
||||
<key>Replace</key>
|
||||
<data>Ym9vdCBzZXNzaW9uIFVVSUQAaGliZXJuYXRlY291bnQA</data>
|
||||
<key>ReplaceMask</key>
|
||||
<data></data>
|
||||
<key>Skip</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
```
|
||||
|
||||
5. Save the file
|
||||
6. Reboot your VM
|
||||
|
||||
## Important Notes
|
||||
|
||||
- The `MinKernel` values (`20.4.0` and `22.0.0`) may need adjustment depending on your specific macOS version (Monterey, Ventura, Sonoma, etc.)
|
||||
- If you encounter issues, consult the [OpenCore documentation](https://dortania.github.io/docs/) for appropriate values for your setup
|
||||
- Always back up your configuration before making changes
|
||||
- After applying the patch and rebooting, try signing into Apple services again
|
||||
|
||||
## What This Patch Does
|
||||
|
||||
This patch tricks macOS into believing it's running on physical hardware by redirecting the `hv_vmm_present` kernel variable, which normally indicates VM presence. After applying the patch, Apple services should function normally within your virtual environment.
|
||||
### Slow UI
|
||||
|
||||
The macOS UI expects and relies on GPU acceleration, and there is (currently) no way to provide GPU acceleration in the virtual hardware. See [osx-optimizer](https://github.com/sickcodes/osx-optimizer) for macOS configuration to speed things up.
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ The easiest and most secure way is `sshfs`
|
|||
```bash
|
||||
# on Linux/Windows
|
||||
mkdir ~/mnt/osx
|
||||
sshfs user@localhost:/ -p 50922 ~/mnt/osx
|
||||
sshfs user@localhost: -p 50922 ~/mnt/osx
|
||||
# wait a few seconds, and ~/mnt/osx will have full rootfs mounted over ssh, and in userspace
|
||||
# automated: sshpass -p <password> sshfs user@localhost:/ -p 50922 ~/mnt/osx
|
||||
```
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
#!/usr/bin/env python3
|
||||
import plistlib
|
||||
import base64
|
||||
import os
|
||||
import sys
|
||||
|
||||
def add_kernel_patches(config_path):
|
||||
# Make a backup of the original file
|
||||
backup_path = config_path + '.backup'
|
||||
os.system(f'cp "{config_path}" "{backup_path}"')
|
||||
print(f"Backup created at {backup_path}")
|
||||
|
||||
# Read the plist file
|
||||
with open(config_path, 'rb') as f:
|
||||
config = plistlib.load(f)
|
||||
|
||||
# Prepare the patch entries
|
||||
patch1 = {
|
||||
'Arch': 'x86_64',
|
||||
'Base': '',
|
||||
'Comment': 'Sonoma VM BT Enabler - PART 1 of 2 - Patch kern.hv_vmm_present=0',
|
||||
'Count': 1,
|
||||
'Enabled': True,
|
||||
'Find': base64.b64decode('aGliZXJuYXRlaGlkcmVhZHkAaGliZXJuYXRlY291bnQA'),
|
||||
'Identifier': 'kernel',
|
||||
'Limit': 0,
|
||||
'Mask': b'',
|
||||
'MaxKernel': '',
|
||||
'MinKernel': '20.4.0',
|
||||
'Replace': base64.b64decode('aGliZXJuYXRlaGlkcmVhZHkAaHZfdm1tX3ByZXNlbnQA'),
|
||||
'ReplaceMask': b'',
|
||||
'Skip': 0,
|
||||
}
|
||||
|
||||
patch2 = {
|
||||
'Arch': 'x86_64',
|
||||
'Base': '',
|
||||
'Comment': 'Sonoma VM BT Enabler - PART 2 of 2 - Patch kern.hv_vmm_present=0',
|
||||
'Count': 1,
|
||||
'Enabled': True,
|
||||
'Find': base64.b64decode('Ym9vdCBzZXNzaW9uIFVVSUQAaHZfdm1tX3ByZXNlbnQA'),
|
||||
'Identifier': 'kernel',
|
||||
'Limit': 0,
|
||||
'Mask': b'',
|
||||
'MaxKernel': '',
|
||||
'MinKernel': '22.0.0',
|
||||
'Replace': base64.b64decode('Ym9vdCBzZXNzaW9uIFVVSUQAaGliZXJuYXRlY291bnQA'),
|
||||
'ReplaceMask': b'',
|
||||
'Skip': 0,
|
||||
}
|
||||
|
||||
# Add patches to the kernel patch section
|
||||
if 'Kernel' in config and 'Patch' in config['Kernel']:
|
||||
# Check if patches already exist
|
||||
patch_exists = False
|
||||
for patch in config['Kernel']['Patch']:
|
||||
if isinstance(patch, dict) and 'Comment' in patch:
|
||||
if 'Sonoma VM BT Enabler' in patch['Comment']:
|
||||
patch_exists = True
|
||||
print(f"Patch already exists: {patch['Comment']}")
|
||||
|
||||
if not patch_exists:
|
||||
config['Kernel']['Patch'].append(patch1)
|
||||
config['Kernel']['Patch'].append(patch2)
|
||||
print("Added both Sonoma VM BT Enabler patches to config.plist")
|
||||
|
||||
else:
|
||||
print("Error: Could not find Kernel -> Patch section in config.plist")
|
||||
return False
|
||||
|
||||
# Write the updated plist file
|
||||
with open(config_path, 'wb') as f:
|
||||
plistlib.dump(config, f)
|
||||
|
||||
print(f"Successfully updated {config_path}")
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage: python apply_appleid_kernelpatch.py /path/to/config.plist")
|
||||
sys.exit(1)
|
||||
|
||||
config_path = sys.argv[1]
|
||||
if not os.path.exists(config_path):
|
||||
print(f"Error: File {config_path} does not exist")
|
||||
sys.exit(1)
|
||||
|
||||
success = add_kernel_patches(config_path)
|
||||
if success:
|
||||
print("Patches applied successfully. Please reboot to apply changes.")
|
||||
else:
|
||||
print("Failed to apply patches.")
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
#!/usr/bin/docker
|
||||
# ____ __ ____ ______ __
|
||||
# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
|
||||
# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
|
||||
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
|
||||
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| TEST SUITE FOR TESTING SMALL CHANGES
|
||||
#
|
||||
# Title: Docker-OSX (Mac on Docker)
|
||||
# Author: Sick.Codes https://twitter.com/sickcodes
|
||||
# Version: 6.0
|
||||
# License: GPLv3+
|
||||
# Repository: https://github.com/sickcodes/Docker-OSX
|
||||
# Website: https://sick.codes
|
||||
#
|
||||
|
||||
FROM sickcodes/docker-osx:latest
|
||||
|
||||
RUN echo "Replace me" && exit 1
|
||||
|
||||
#### SPECIAL RUNTIME ARGUMENTS BELOW
|
||||
|
||||
# env -e ADDITIONAL_PORTS with a comma
|
||||
# for example, -e ADDITIONAL_PORTS=hostfwd=tcp::23-:23,
|
||||
ENV ADDITIONAL_PORTS=
|
||||
|
||||
# add additional QEMU boot arguments
|
||||
ENV BOOT_ARGS=
|
||||
|
||||
ENV BOOTDISK=
|
||||
|
||||
# edit the CPU that is being emulated
|
||||
ENV CPU=Penryn
|
||||
ENV CPUID_FLAGS='vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check,'
|
||||
|
||||
ENV DISPLAY=:0.0
|
||||
|
||||
# Deprecated
|
||||
ENV ENV=/env
|
||||
|
||||
# Boolean for generating a bootdisk with new random serials.
|
||||
ENV GENERATE_UNIQUE=false
|
||||
|
||||
# Boolean for generating a bootdisk with specific serials.
|
||||
ENV GENERATE_SPECIFIC=false
|
||||
|
||||
ENV IMAGE_PATH=/home/arch/OSX-KVM/mac_hdd_ng.img
|
||||
ENV IMAGE_FORMAT=qcow2
|
||||
|
||||
ENV KVM='accel=kvm:tcg'
|
||||
|
||||
ENV MASTER_PLIST_URL="https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-nopicker-custom.plist"
|
||||
|
||||
# Add NETDEV for bridged networking option, see https://github.com/sickcodes/Docker-OSX/issues/72
|
||||
# ENV NETDEV='tap,id=net0,ifname=tap0,script=no,downscript=no'
|
||||
# ENV NETDEV='user,id=net0,hostfwd=tcp::${INTERNAL_SSH_PORT:-10022}-:22,hostfwd=tcp::${SCREEN_SHARE_PORT:-5900}-:5900,${ADDITIONAL_PORTS}'
|
||||
|
||||
# ENV NETWORKING=e1000-82545em
|
||||
# renamed to NETWORKING_DEVICE, but not deprecated
|
||||
ENV NETWORKING=vmxnet3
|
||||
ENV NETWORKING_DEVICE=${NETWORKING}
|
||||
|
||||
# boolean for skipping the disk selection menu at in the boot process
|
||||
ENV NOPICKER=false
|
||||
|
||||
# dynamic RAM options for runtime
|
||||
ENV RAM=3
|
||||
# ENV RAM=max
|
||||
# ENV RAM=half
|
||||
|
||||
# The x and y coordinates for resolution.
|
||||
# Must be used with either -e GENERATE_UNIQUE=true or -e GENERATE_SPECIFIC=true.
|
||||
ENV WIDTH=1920
|
||||
ENV HEIGHT=1080
|
||||
|
||||
# libguestfs verbose
|
||||
ENV LIBGUESTFS_DEBUG=1
|
||||
ENV LIBGUESTFS_TRACE=1
|
||||
|
||||
VOLUME ["/tmp/.X11-unix"]
|
||||
|
||||
CMD sudo touch /dev/kvm /dev/snd "${IMAGE_PATH}" "${BOOTDISK}" "${ENV}" 2>/dev/null || true \
|
||||
; sudo chown -R $(id -u):$(id -g) /dev/kvm /dev/snd "${IMAGE_PATH}" "${BOOTDISK}" "${ENV}" 2>/dev/null || true \
|
||||
; [[ "${NOPICKER}" == true ]] && { \
|
||||
sed -i '/^.*InstallMedia.*/d' Launch.sh \
|
||||
&& export BOOTDISK="${BOOTDISK:=/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore-nopicker.qcow2}" \
|
||||
; } \
|
||||
|| export BOOTDISK="${BOOTDISK:=/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
||||
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
|
||||
./Docker-OSX/osx-serial-generator/generate-unique-machine-values.sh \
|
||||
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||
--count 1 \
|
||||
--tsv ./serial.tsv \
|
||||
--bootdisks \
|
||||
--width "${WIDTH:-1920}" \
|
||||
--height "${HEIGHT:-1080}" \
|
||||
--output-bootdisk "${BOOTDISK:=/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
||||
--output-env "${ENV:=/env}" \
|
||||
|| exit 1 ; } \
|
||||
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
|
||||
source "${ENV:=/env}" 2>/dev/null \
|
||||
; ./Docker-OSX/osx-serial-generator/generate-specific-bootdisk.sh \
|
||||
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||
--model "${DEVICE_MODEL}" \
|
||||
--serial "${SERIAL}" \
|
||||
--board-serial "${BOARD_SERIAL}" \
|
||||
--uuid "${UUID}" \
|
||||
--mac-address "${MAC_ADDRESS}" \
|
||||
--width "${WIDTH:-1920}" \
|
||||
--height "${HEIGHT:-1080}" \
|
||||
--output-bootdisk "${BOOTDISK:=/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
||||
|| exit 1 ; } \
|
||||
; ./enable-ssh.sh && /bin/bash -c ./Launch.sh
|
||||
|
|
@ -33,6 +33,7 @@ Flags
|
|||
|
||||
# set -xeuf -o pipefail
|
||||
|
||||
grep -i Ubuntu /proc/version || { echo "DO NOT RUN THIS ON YOUR WORKSTATION, ONLY RUN THIS ON A THROWAWAY SERVER FOR 1 TIME TESTING" && exit 1 ; }
|
||||
|
||||
# gather arguments
|
||||
while (( "$#" )); do
|
||||
|
|
|
|||
Loading…
Reference in New Issue