diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9157591..5fc75bf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
|Version|Date|Notes|
|---|---|---|
+|4.1|2021-03-04|Add `-e MASTER_PLIST_URL` to all images to allow using your own remote plist.|
+| |2021-03-03|Add `WIDTH` and `HEIGHT` to set the x and y resolutions, use in conjuction with serial numbers.|
| |2021-03-02|Add ADDITIONAL_PORTS, for example `-e ADDITIONAL_PORTS='hostfwd=tcp::23-:23,'`|
|4.0|2021-02-27|Add big-sur support. Use `sickcodes/docker-osx:big-sur` or build using `--build-arg VERSION=11`|
| |2021-02-26|Change `-e NOPICKER=true` to simply do `sed -i '/^.*InstallMedia.*/d' Launch.sh` and `export BOOTDISK=/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore-nopicker.qcow2`.|
diff --git a/Dockerfile b/Dockerfile
index bff6570..756773d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,11 +5,12 @@
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_|
#
-# Repo: https://github.com/sickcodes/Docker-OSX/
-# Title: Mac on Docker (Docker-OSX)
-# Author: Sick.Codes https://sick.codes/
-# Version: 4.0
+# Title: Docker-OSX (Mac on Docker)
+# Author: Sick.Codes https://twitter.com/sickcodes
+# Version: 4.1
# License: GPLv3+
+# Repository: https://github.com/sickcodes/Docker-OSX
+# Website: https://sick.codes
#
# All credits for OSX-KVM and the rest at @Kholia's repo: https://github.com/kholia/osx-kvm
# OpenCore support go to https://github.com/Leoyzen/KVM-Opencore
@@ -259,8 +260,21 @@ ENV NETWORKING=vmxnet3
ENV NOPICKER=false
-ENV UNIQUE=false
-# Boolean for generating a bootdisk with new serials.
+# 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
+
+# boolean for skipping the disk selection menu at in the boot process
+ENV NOPICKER=false
+
+# 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
+
+ENV MASTER_PLIST_URL="https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/config-nopicker-custom.plist"
VOLUME ["/tmp/.X11-unix"]
@@ -296,21 +310,27 @@ CMD sudo chown -R $(id -u):$(id -g) /dev/kvm /dev/snd "${IMAGE_PATH}" "${BOOTDIS
; } \
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
./Docker-OSX/custom/generate-unique-machine-values.sh \
- --count 1 \
- --tsv ./serial.tsv \
- --bootdisks \
- --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
- --output-env "${ENV:=/env}" || exit 1 \
+ --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}" \
; } \
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
- source "${ENV:=/env}" \
- || ./Docker-OSX/custom/generate-specific-bootdisk.sh \
+ source "${ENV:=/env}" 2>/dev/null \
+ ; ./Docker-OSX/custom/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}" \
- --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" || exit 1 \
+ --width "${WIDTH:-1920}" \
+ --height "${HEIGHT:-1080}" \
+ --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
; } \
; case "$(file --brief /bootdisk)" in \
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
diff --git a/Dockerfile.auto b/Dockerfile.auto
index ca6e548..7586eee 100644
--- a/Dockerfile.auto
+++ b/Dockerfile.auto
@@ -3,13 +3,14 @@
# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
-# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| AUTOINSTALL
+# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| :AUTO
#
-# Title: Mac on Docker (Docker-OSX) [AUTOINSTALL]
-# Author: Sick.Codes https://twitter.com/sickcodes
-# Version: 4.0
+# Title: Docker-OSX (Mac on Docker)
+# Author: Sick.Codes https://twitter.com/sickcodes
+# Version: 4.1
# License: GPLv3+
# Repository: https://github.com/sickcodes/Docker-OSX
+# Website: https://sick.codes
#
# This Dockerfile is a pre-installed naked installation of Docker-OSX!
#
@@ -152,21 +153,27 @@ CMD echo "${BOILERPLATE}" \
; } \
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
./Docker-OSX/custom/generate-unique-machine-values.sh \
- --count 1 \
- --tsv ./serial.tsv \
- --bootdisks \
- --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
- --output-env "${ENV:=/env}" || exit 1 \
+ --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}" \
; } \
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
- source "${ENV:=/env}" \
- || ./Docker-OSX/custom/generate-specific-bootdisk.sh \
+ source "${ENV:=/env}" 2>/dev/null \
+ ; ./Docker-OSX/custom/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}" \
- --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" || exit 1 \
+ --width "${WIDTH:-1920}" \
+ --height "${HEIGHT:-1080}" \
+ --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
; } \
; case "$(file --brief /bootdisk)" in \
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
diff --git a/Dockerfile.naked b/Dockerfile.naked
index 09db8a3..920a51f 100644
--- a/Dockerfile.naked
+++ b/Dockerfile.naked
@@ -3,13 +3,14 @@
# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
-# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| NAKED/SUPPLY_YOUR_OWN
+# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| :NAKED
#
-# Title: Mac on Docker (Docker-OSX) [AUTOINSTALL]
-# Author: Sick.Codes https://twitter.com/sickcodes
-# Version: 4.0
+# Title: Docker-OSX (Mac on Docker)
+# Author: Sick.Codes https://twitter.com/sickcodes
+# Version: 4.1
# License: GPLv3+
# Repository: https://github.com/sickcodes/Docker-OSX
+# Website: https://sick.codes
#
# This image won't run unless you supply a disk image using:
# -v ${PWD}/mac_hdd_ng.img:/image
@@ -122,21 +123,27 @@ CMD sudo chown -R $(id -u):$(id -g) /dev/kvm /dev/snd "${IMAGE_PATH}" "${BOOTDIS
; } \
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
./Docker-OSX/custom/generate-unique-machine-values.sh \
- --count 1 \
- --tsv ./serial.tsv \
- --bootdisks \
- --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
- --output-env "${ENV:=/env}" || exit 1 \
+ --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}" \
; } \
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
- source "${ENV:=/env}" \
- || ./Docker-OSX/custom/generate-specific-bootdisk.sh \
+ source "${ENV:=/env}" 2>/dev/null \
+ ; ./Docker-OSX/custom/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}" \
- --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" || exit 1 \
+ --width "${WIDTH:-1920}" \
+ --height "${HEIGHT:-1080}" \
+ --output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
; } \
; case "$(file --brief /bootdisk)" in \
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
diff --git a/README.md b/README.md
index 3a8b604..9a2c07c 100644
--- a/README.md
+++ b/README.md
@@ -493,6 +493,43 @@ sudo nohup dockerd &
sudo systemctl enable docker
```
+# How to Forward Additional Ports from the guest.
+
+This is how it visually looks:
+
+`host:10023 <-> 10023:container:10023 <-> 80:guest`
+
+```bash
+On the host
+```bash
+docker run -it \
+ --device /dev/kvm \
+ -p 50922:10022 \
+ -e ADDITIONAL_PORTS='hostfwd=tcp::10023-:80,' \
+ -p 10023:10023 \
+ sickcodes/docker-osx:auto
+```
+
+Inside the container:
+```bash
+/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+
+brew install nginx
+sudo sed -i -e 's/8080/80/' /usr/local/etc/nginx/nginx.confcd
+# sudo nginx -s stop
+sudo nginx
+```
+
+nginx should appear on the host at port 10023.
+
+You can string multiple statements, for example:
+
+```bash
+ -e ADDITIONAL_PORTS='hostfwd=tcp::10023-:80,hostfwd=tcp::10043-:443,'
+ -p 10023:10023 \
+ -p 10043:10043 \
+```
+
# How to Enable Network Forwarding
Allow ipv4 forwarding for bridged networking connections:
@@ -706,11 +743,13 @@ For serial numbers, generate them in `./custom` OR make docker generate them at
At any time, verify your serial number before logging in iCloud, etc.
```bash
+# this is a quick way to check your serial number via cli inside OSX
ioreg -l | grep IOPlatformSerialNumber
# or from the host
-sshpass -p alpine ssh user@localhost -p 50922 'ioreg -l | grep IOPlatformSerialNumber'
+sshpass -p 'alpine' ssh user@localhost -p 50922 'ioreg -l | grep IOPlatformSerialNumber'
```
+# This example generates a random set of serial numbers at runtime, headlessly
```bash
# proof of concept only, generates random serial numbers, headlessly, and quits right after.
@@ -724,6 +763,8 @@ docker run --rm -it \
sickcodes/docker-osx:auto
```
+# This example generates a specific set of serial numbers at runtime
+
```bash
# run the same as above 17gb auto image, with SSH, with nopicker, and save the bootdisk for later.
# you don't need to save the bootdisk IF you supply specific serial numbers!
@@ -743,6 +784,7 @@ docker run -it \
sickcodes/docker-osx:auto
```
+### This example generates a specific set of serial numbers at runtime, with your existing image, at 1000x1000 display resolution.
```bash
# run an existing image in current directory, with a screen, with SSH, with nopicker, and save the bootdisk for later.
@@ -762,6 +804,8 @@ docker run -it \
-e BOARD_SERIAL="C027251024NJG36UE" \
-e UUID="5CCB366D-9118-4C61-A00A-E5BAF3BED451" \
-e MAC_ADDRESS="A8:5C:2C:9A:46:2F" \
+ -e WIDTH=1000 \
+ -e HEIGHT=1000 \
-e BOOTDISK=/bootdisk \
-v "${PWD}/mynewbootdisk.qcow:/bootdisk" \
-v "${PWD}/mac_hdd_ng.img:/image" \
@@ -876,6 +920,97 @@ generate-specific-bootdisk.sh \
--output-bootdisk OpenCore-nopicker.qcow2
```
+# Change Resolution Docker-OSX - change resolution OpenCore OSX-KVM
+
+The display resolution is controlled by this line:
+
+https://github.com/sickcodes/Docker-OSX/blob/master/custom/config-nopicker-custom.plist#L819
+
+Instead of mounting that disk, Docker-OSX will generate a new `OpenCore.qcow2` by using this one cool trick:
+
+```bash
+-e GENERATE_UNIQUE=true \
+-e WIDTH=800 \
+-e HEIGHT=600 \
+```
+
+To use `WIDTH`/`HEIGHT`, you must use with either `-e GENERATE_UNIQUE=true` or `-e GENERATE_SPECIFIC=true`.
+
+It will take around 30 seconds longer to boot because it needs to make a new boot partition using `libguestfs`.
+
+```bash
+-e GENERATE_SPECIFIC=true \
+-e WIDTH=1920 \
+-e HEIGHT=1080 \
+-e SERIAL="" \
+-e BOARD_SERIAL="" \
+-e UUID="" \
+-e MAC_ADDRESS="" \
+```
+
+## Change Docker-OSX Resolution Examples
+
+```bash
+# using an image in your current directory
+stat mac_hdd_ng.img
+
+docker run -it \
+ --device /dev/kvm \
+ -p 50922:10022 \
+ -v "${PWD}/mac_hdd_ng.img:/image" \
+ -v /tmp/.X11-unix:/tmp/.X11-unix \
+ -e "DISPLAY=${DISPLAY:-:0.0}" \
+ -e GENERATE_SPECIFIC=true \
+ -e DEVICE_MODEL="iMacPro1,1" \
+ -e SERIAL="C02TW0WAHX87" \
+ -e BOARD_SERIAL="C027251024NJG36UE" \
+ -e UUID="5CCB366D-9118-4C61-A00A-E5BAF3BED451" \
+ -e MAC_ADDRESS="A8:5C:2C:9A:46:2F" \
+ -e MASTER_PLIST_URL=https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/config-nopicker-custom.plist \
+ -e WIDTH=1600 \
+ -e HEIGHT=900 \
+ sickcodes/docker-osx:naked
+```
+
+```bash
+# generating random serial numbers, using the DIY installer, along with the screen resolution changes.
+docker run -it \
+ --device /dev/kvm \
+ -p 50922:10022 \
+ -v /tmp/.X11-unix:/tmp/.X11-unix \
+ -e "DISPLAY=${DISPLAY:-:0.0}" \
+ -e GENERATE_UNIQUE=true \
+ -e WIDTH=800 \
+ -e HEIGHT=600 \
+ sickcodes/docker-osx:latest
+
+
+```
+
+
+Here's a few other resolutions! If you resolution is invalid, it will default to 800x600.
+
+```
+ -e WIDTH=800 \
+ -e HEIGHT=600 \
+```
+```
+ -e WIDTH=1280 \
+ -e HEIGHT=768 \
+```
+```
+ -e WIDTH=1600 \
+ -e HEIGHT=900 \
+```
+```
+ -e WIDTH=1920 \
+ -e HEIGHT=1080 \
+```
+```
+ -e WIDTH=2560 \
+ -e HEIGHT=1600 \
+```
+
# Allow USB passthrough
The simplest way to do this is the following:
diff --git a/custom/config-nopicker-custom.plist b/custom/config-nopicker-custom.plist
index 6166234..aa60a39 100644
--- a/custom/config-nopicker-custom.plist
+++ b/custom/config-nopicker-custom.plist
@@ -816,7 +816,7 @@
ReplaceTabWithSpace
Resolution
- 1920x1080@32
+ {{WIDTH}}x{{HEIGHT}}@32
SanitiseClearScreen
TextRenderer
diff --git a/custom/generate-specific-bootdisk.sh b/custom/generate-specific-bootdisk.sh
index 76aff0c..b847a50 100755
--- a/custom/generate-specific-bootdisk.sh
+++ b/custom/generate-specific-bootdisk.sh
@@ -15,12 +15,19 @@ help_text="Usage: generate-specific-bootdisk.sh
General options:
--model Device model, e.g. 'iMacPro1,1'
- --serial Device Serial number.
- --board-serial Board Serial number.
- --uuid SmUUID.
- --mac-address Used to set the ROM value; lowercased and without a colon.
- --output-bootdisk Optionally change the bootdisk output filename.
- --custom-plist Optionally change the input plist.
+ --serial Device Serial number
+ --board-serial Board Serial number
+ --uuid SmUUID
+ --mac-address Used to set the ROM value; lowercased and without a colon
+ --width Resolution x axis length in pixels (default 1920)
+ --height Resolution y axis length in pixels (default 1080
+ --output-bootdisk Optionally change the bootdisk output filename
+
+ --master-plist-url Specify an alternative master plist, via URL.
+ --custom-plist | --master-plist
+ Optionally change the input plist. Placeholders:
+ {{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}},
+ {{UUID}}, {{ROM}}, {{WIDTH}}, {{HEIGHT}}
--help, -h, help Display this help and exit
@@ -31,7 +38,9 @@ Example:
--board-serial C027251024NJG36UE \
--uuid 5CCB366D-9118-4C61-A00A-E5BAF3BED451 \
--mac-address A8:5C:2C:9A:46:2F \
- --output-bootdisk OpenCore-nopicker.qcow2
+ --output-bootdisk OpenCore-nopicker.qcow2 \
+ --widht 1920 \
+ --height 1080
Author: Sick.Codes https://sick.codes/
Project: https://github.com/sickcodes/Docker-OSX/
@@ -97,6 +106,26 @@ while (( "$#" )); do
shift
;;
+ --width=* )
+ export WIDTH="${1#*=}"
+ shift
+ ;;
+ --width* )
+ export WIDTH="${2}"
+ shift
+ shift
+ ;;
+
+ --height=* )
+ export HEIGHT="${1#*=}"
+ shift
+ ;;
+ --height* )
+ export HEIGHT="${2}"
+ shift
+ shift
+ ;;
+
--output-bootdisk=* )
export OUTPUT_QCOW="${1#*=}"
shift
@@ -107,12 +136,33 @@ while (( "$#" )); do
shift
;;
+ --master-plist-url=* )
+ export MASTER_PLIST_URL="${1#*=}"
+ shift
+ ;;
+
+ --master-plist-url* )
+ export MASTER_PLIST_URL="${2}"
+ shift
+ shift
+ ;;
+
+ --master-plist=* )
+ export MASTER_PLIST="${1#*=}"
+ shift
+ ;;
+ --master-plist* )
+ export MASTER_PLIST="${2}"
+ shift
+ shift
+ ;;
+
--custom-plist=* )
- export INPUT_PLIST="${1#*=}"
+ export MASTER_PLIST="${1#*=}"
shift
;;
--custom-plist* )
- export INPUT_PLIST="${2}"
+ export MASTER_PLIST="${2}"
shift
shift
;;
@@ -138,8 +188,23 @@ download_qcow_efi_folder () {
}
generate_bootdisk () {
- [[ -e ./config-nopicker-custom.plist ]] || wget https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/config-nopicker-custom.plist
+
+ if [[ "${MASTER_PLIST}" ]]; then
+ [[ -e "${MASTER_PLIST}" ]] || echo "Could not find: ${MASTER_PLIST}"
+ elif [[ "${MASTER_PLIST}" ]] && [[ "${MASTER_PLIST_URL}" ]]; then
+ echo 'You specified both a custom plist file AND a custom plist url. Use one or the other.'
+ elif [[ "${MASTER_PLIST_URL}" ]]; then
+ wget -O "${MASTER_PLIST:=./config-custom.plist}" "${MASTER_PLIST_URL}" \
+ || { echo "Could not download ${MASTER_PLIST_URL}" && exit 1 ; }
+ else
+ MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/config-nopicker-custom.plist'
+ wget -O "${MASTER_PLIST:=./config-nopicker-custom.plist}" "${MASTER_PLIST_URL}" \
+ || { echo "Could not download ${MASTER_PLIST_URL}" && exit 1 ; }
+ fi
+
+
[[ -e ./opencore-image-ng.sh ]] || wget https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/opencore-image-ng.sh && chmod +x opencore-image-ng.sh
+
# plist required for bootdisks, so create anyway.
if [[ "${DEVICE_MODEL}" ]] \
&& [[ "${SERIAL}" ]] \
@@ -153,7 +218,9 @@ generate_bootdisk () {
-e s/{{BOARD_SERIAL}}/"${BOARD_SERIAL}"/g \
-e s/{{UUID}}/"${UUID}"/g \
-e s/{{ROM}}/"${ROM}"/g \
- "${PLIST_MASTER}" > ./tmp.config.plist || exit 1
+ -e s/{{WIDTH}}/"${WIDTH:-1920}"/g \
+ -e s/{{HEIGHT}}/"${HEIGHT:-1080}"/g \
+ "${MASTER_PLIST}" > ./tmp.config.plist || exit 1
else
cat < Optionally change the bootdisk qcow output filename. Useless when count > 1.
--output-env Optionally change the bootdisk env filename. Useless when count > 1.
--output-dir Optionally change the script output location.
+ --width Resolution x axis length in pixels (default 1920)
+ --height Resolution y axis length in pixels (default 1080
+
+ --master-plist-url Specify an alternative master plist, via URL.
+ --master-plist | --custom-plist
+ Optionally change the input plist. Placeholders:
+ {{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}},
+ {{UUID}}, {{ROM}}, {{WIDTH}}, {{HEIGHT}}
--help, -h, help Display this help and exit
--plists Create corresponding config.plists for each serial set.
@@ -52,7 +60,6 @@ Project: https://github.com/sickcodes/Docker-OSX/
"
MACINFOPKG_VERSION=2.1.2
-PLIST_MASTER=config-nopicker-custom.plist
# gather arguments
while (( "$#" )); do
@@ -132,6 +139,60 @@ while (( "$#" )); do
shift
;;
+ --width=* )
+ export WIDTH="${1#*=}"
+ shift
+ ;;
+
+ --width* )
+ export WIDTH="${2}"
+ shift
+ shift
+ ;;
+
+ --height=* )
+ export HEIGHT="${1#*=}"
+ shift
+ ;;
+ --height* )
+ export HEIGHT="${2}"
+ shift
+ shift
+ ;;
+
+ --master-plist-url=* )
+ export MASTER_PLIST_URL="${1#*=}"
+ shift
+ ;;
+
+ --master-plist-url* )
+ export MASTER_PLIST_URL="${2}"
+ shift
+ shift
+ ;;
+
+ --master-plist=* )
+ export MASTER_PLIST="${1#*=}"
+ shift
+ ;;
+
+ --master-plist* )
+ export MASTER_PLIST="${2}"
+ shift
+ shift
+ ;;
+
+ --custom-plist=* )
+ export MASTER_PLIST="${1#*=}"
+ shift
+ ;;
+
+ --custom-plist* )
+ export MASTER_PLIST="${2}"
+ shift
+ shift
+ ;;
+
--plists )
export CREATE_PLISTS=1
shift
@@ -183,8 +244,22 @@ download_qcow_efi_folder () {
generate_serial_sets () {
- [[ -e ./config-nopicker-custom.plist ]] || wget https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/config-nopicker-custom.plist
+
+ if [[ "${MASTER_PLIST}" ]]; then
+ [[ -e "${MASTER_PLIST}" ]] || echo "Could not find: ${MASTER_PLIST}"
+ elif [[ "${MASTER_PLIST}" ]] && [[ "${MASTER_PLIST_URL}" ]]; then
+ echo 'You specified both a custom plist file AND a custom plist url. Use one or the other.'
+ elif [[ "${MASTER_PLIST_URL}" ]]; then
+ wget -O "${MASTER_PLIST:=./config-custom.plist}" "${MASTER_PLIST_URL}" \
+ || { echo "Could not download ${MASTER_PLIST_URL}" && exit 1 ; }
+ else
+ MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/config-nopicker-custom.plist'
+ wget -O "${MASTER_PLIST:=./config-nopicker-custom.plist}" "${MASTER_PLIST_URL}" \
+ || { echo "Could not download ${MASTER_PLIST_URL}" && exit 1 ; }
+ fi
+
[[ -e ./opencore-image-ng.sh ]] || wget https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/opencore-image-ng.sh && chmod +x opencore-image-ng.sh
+
mkdir -p "${OUTPUT_DIRECTORY}/envs"
export DATE_NOW="$(date +%F-%T)"
export DEVICE_MODEL="${DEVICE_MODEL:=iMacPro1,1}"
@@ -231,6 +306,8 @@ export SERIAL="${SERIAL}"
export BOARD_SERIAL="${BOARD_SERIAL}"
export UUID="${UUID}"
export MAC_ADDRESS="${MAC_ADDRESS}"
+export WIDTH="${WIDTH:=1920}"
+export HEIGHT="${HEIGHT:=1080}"
EOF
# plist required for bootdisks, so create anyway.
@@ -244,7 +321,9 @@ EOF
-e s/{{BOARD_SERIAL}}/"${BOARD_SERIAL}"/g \
-e s/{{UUID}}/"${UUID}"/g \
-e s/{{ROM}}/"${ROM}"/g \
- "${PLIST_MASTER}" > "${OUTPUT_DIRECTORY}/plists/${SERIAL}.config.plist" || exit 1
+ -e s/{{WIDTH}}/"${WIDTH}"/g \
+ -e s/{{HEIGHT}}/"${HEIGHT}"/g \
+ "${MASTER_PLIST}" > "${OUTPUT_DIRECTORY}/plists/${SERIAL}.config.plist" || exit 1
fi
if [[ "${CREATE_QCOWS}" ]]; then