mirror of
https://github.com/sickcodes/Docker-OSX.git
synced 2024-11-29 22:15:49 +08:00
Merge pull request #163 from sickcodes/resolution-changes-runtime
Add WIDTH and HEIGHT environment variables
This commit is contained in:
commit
3add4f7a98
@ -1,5 +1,7 @@
|
|||||||
|Version|Date|Notes|
|
|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,'`|
|
| |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`|
|
|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`.|
|
| |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`.|
|
||||||
|
40
Dockerfile
40
Dockerfile
@ -5,11 +5,12 @@
|
|||||||
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
|
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
|
||||||
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_|
|
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_|
|
||||||
#
|
#
|
||||||
# Repo: https://github.com/sickcodes/Docker-OSX/
|
# Title: Docker-OSX (Mac on Docker)
|
||||||
# Title: Mac on Docker (Docker-OSX)
|
# Author: Sick.Codes https://twitter.com/sickcodes
|
||||||
# Author: Sick.Codes https://sick.codes/
|
# Version: 4.1
|
||||||
# Version: 4.0
|
|
||||||
# License: GPLv3+
|
# 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
|
# 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
|
# OpenCore support go to https://github.com/Leoyzen/KVM-Opencore
|
||||||
@ -259,8 +260,21 @@ ENV NETWORKING=vmxnet3
|
|||||||
|
|
||||||
ENV NOPICKER=false
|
ENV NOPICKER=false
|
||||||
|
|
||||||
ENV UNIQUE=false
|
# Boolean for generating a bootdisk with new random serials.
|
||||||
# Boolean for generating a bootdisk with new 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"]
|
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 ]] && { \
|
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
|
||||||
./Docker-OSX/custom/generate-unique-machine-values.sh \
|
./Docker-OSX/custom/generate-unique-machine-values.sh \
|
||||||
|
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||||
--count 1 \
|
--count 1 \
|
||||||
--tsv ./serial.tsv \
|
--tsv ./serial.tsv \
|
||||||
--bootdisks \
|
--bootdisks \
|
||||||
|
--width "${WIDTH:-1920}" \
|
||||||
|
--height "${HEIGHT:-1080}" \
|
||||||
--output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
--output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
||||||
--output-env "${ENV:=/env}" || exit 1 \
|
--output-env "${ENV:=/env}" \
|
||||||
; } \
|
; } \
|
||||||
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
|
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
|
||||||
source "${ENV:=/env}" \
|
source "${ENV:=/env}" 2>/dev/null \
|
||||||
|| ./Docker-OSX/custom/generate-specific-bootdisk.sh \
|
; ./Docker-OSX/custom/generate-specific-bootdisk.sh \
|
||||||
|
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||||
--model "${DEVICE_MODEL}" \
|
--model "${DEVICE_MODEL}" \
|
||||||
--serial "${SERIAL}" \
|
--serial "${SERIAL}" \
|
||||||
--board-serial "${BOARD_SERIAL}" \
|
--board-serial "${BOARD_SERIAL}" \
|
||||||
--uuid "${UUID}" \
|
--uuid "${UUID}" \
|
||||||
--mac-address "${MAC_ADDRESS}" \
|
--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 \
|
; case "$(file --brief /bootdisk)" in \
|
||||||
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
|
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
|
||||||
|
@ -3,13 +3,14 @@
|
|||||||
# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
|
# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
|
||||||
# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
|
# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
|
||||||
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
|
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
|
||||||
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| AUTOINSTALL
|
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| :AUTO
|
||||||
#
|
#
|
||||||
# Title: Mac on Docker (Docker-OSX) [AUTOINSTALL]
|
# Title: Docker-OSX (Mac on Docker)
|
||||||
# Author: Sick.Codes https://twitter.com/sickcodes
|
# Author: Sick.Codes https://twitter.com/sickcodes
|
||||||
# Version: 4.0
|
# Version: 4.1
|
||||||
# License: GPLv3+
|
# License: GPLv3+
|
||||||
# Repository: https://github.com/sickcodes/Docker-OSX
|
# Repository: https://github.com/sickcodes/Docker-OSX
|
||||||
|
# Website: https://sick.codes
|
||||||
#
|
#
|
||||||
# This Dockerfile is a pre-installed naked installation of Docker-OSX!
|
# This Dockerfile is a pre-installed naked installation of Docker-OSX!
|
||||||
#
|
#
|
||||||
@ -152,21 +153,27 @@ CMD echo "${BOILERPLATE}" \
|
|||||||
; } \
|
; } \
|
||||||
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
|
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
|
||||||
./Docker-OSX/custom/generate-unique-machine-values.sh \
|
./Docker-OSX/custom/generate-unique-machine-values.sh \
|
||||||
|
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||||
--count 1 \
|
--count 1 \
|
||||||
--tsv ./serial.tsv \
|
--tsv ./serial.tsv \
|
||||||
--bootdisks \
|
--bootdisks \
|
||||||
|
--width "${WIDTH:-1920}" \
|
||||||
|
--height "${HEIGHT:-1080}" \
|
||||||
--output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
--output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
||||||
--output-env "${ENV:=/env}" || exit 1 \
|
--output-env "${ENV:=/env}" \
|
||||||
; } \
|
; } \
|
||||||
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
|
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
|
||||||
source "${ENV:=/env}" \
|
source "${ENV:=/env}" 2>/dev/null \
|
||||||
|| ./Docker-OSX/custom/generate-specific-bootdisk.sh \
|
; ./Docker-OSX/custom/generate-specific-bootdisk.sh \
|
||||||
|
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||||
--model "${DEVICE_MODEL}" \
|
--model "${DEVICE_MODEL}" \
|
||||||
--serial "${SERIAL}" \
|
--serial "${SERIAL}" \
|
||||||
--board-serial "${BOARD_SERIAL}" \
|
--board-serial "${BOARD_SERIAL}" \
|
||||||
--uuid "${UUID}" \
|
--uuid "${UUID}" \
|
||||||
--mac-address "${MAC_ADDRESS}" \
|
--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 \
|
; case "$(file --brief /bootdisk)" in \
|
||||||
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
|
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
|
||||||
|
@ -3,13 +3,14 @@
|
|||||||
# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
|
# / __ \____ _____/ /_____ _____/ __ \/ ___/ |/ /
|
||||||
# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
|
# / / / / __ \/ ___/ //_/ _ \/ ___/ / / /\__ \| /
|
||||||
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
|
# / /_/ / /_/ / /__/ ,< / __/ / / /_/ /___/ / |
|
||||||
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| NAKED/SUPPLY_YOUR_OWN
|
# /_____/\____/\___/_/|_|\___/_/ \____//____/_/|_| :NAKED
|
||||||
#
|
#
|
||||||
# Title: Mac on Docker (Docker-OSX) [AUTOINSTALL]
|
# Title: Docker-OSX (Mac on Docker)
|
||||||
# Author: Sick.Codes https://twitter.com/sickcodes
|
# Author: Sick.Codes https://twitter.com/sickcodes
|
||||||
# Version: 4.0
|
# Version: 4.1
|
||||||
# License: GPLv3+
|
# License: GPLv3+
|
||||||
# Repository: https://github.com/sickcodes/Docker-OSX
|
# Repository: https://github.com/sickcodes/Docker-OSX
|
||||||
|
# Website: https://sick.codes
|
||||||
#
|
#
|
||||||
# This image won't run unless you supply a disk image using:
|
# This image won't run unless you supply a disk image using:
|
||||||
# -v ${PWD}/mac_hdd_ng.img:/image
|
# -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 ]] && { \
|
; [[ "${GENERATE_UNIQUE}" == true ]] && { \
|
||||||
./Docker-OSX/custom/generate-unique-machine-values.sh \
|
./Docker-OSX/custom/generate-unique-machine-values.sh \
|
||||||
|
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||||
--count 1 \
|
--count 1 \
|
||||||
--tsv ./serial.tsv \
|
--tsv ./serial.tsv \
|
||||||
--bootdisks \
|
--bootdisks \
|
||||||
|
--width "${WIDTH:-1920}" \
|
||||||
|
--height "${HEIGHT:-1080}" \
|
||||||
--output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
--output-bootdisk "${BOOTDISK:-/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2}" \
|
||||||
--output-env "${ENV:=/env}" || exit 1 \
|
--output-env "${ENV:=/env}" \
|
||||||
; } \
|
; } \
|
||||||
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
|
; [[ "${GENERATE_SPECIFIC}" == true ]] && { \
|
||||||
source "${ENV:=/env}" \
|
source "${ENV:=/env}" 2>/dev/null \
|
||||||
|| ./Docker-OSX/custom/generate-specific-bootdisk.sh \
|
; ./Docker-OSX/custom/generate-specific-bootdisk.sh \
|
||||||
|
--master-plist-url="${MASTER_PLIST_URL}" \
|
||||||
--model "${DEVICE_MODEL}" \
|
--model "${DEVICE_MODEL}" \
|
||||||
--serial "${SERIAL}" \
|
--serial "${SERIAL}" \
|
||||||
--board-serial "${BOARD_SERIAL}" \
|
--board-serial "${BOARD_SERIAL}" \
|
||||||
--uuid "${UUID}" \
|
--uuid "${UUID}" \
|
||||||
--mac-address "${MAC_ADDRESS}" \
|
--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 \
|
; case "$(file --brief /bootdisk)" in \
|
||||||
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
|
QEMU\ QCOW2\ Image* ) export BOOTDISK=/bootdisk \
|
||||||
|
137
README.md
137
README.md
@ -493,6 +493,43 @@ sudo nohup dockerd &
|
|||||||
sudo systemctl enable docker
|
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
|
# How to Enable Network Forwarding
|
||||||
|
|
||||||
Allow ipv4 forwarding for bridged networking connections:
|
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.
|
At any time, verify your serial number before logging in iCloud, etc.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# this is a quick way to check your serial number via cli inside OSX
|
||||||
ioreg -l | grep IOPlatformSerialNumber
|
ioreg -l | grep IOPlatformSerialNumber
|
||||||
|
|
||||||
# or from the host
|
# 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
|
```bash
|
||||||
# proof of concept only, generates random serial numbers, headlessly, and quits right after.
|
# 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
|
sickcodes/docker-osx:auto
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# This example generates a specific set of serial numbers at runtime
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# run the same as above 17gb auto image, with SSH, with nopicker, and save the bootdisk for later.
|
# 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!
|
# 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
|
sickcodes/docker-osx:auto
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### This example generates a specific set of serial numbers at runtime, with your existing image, at 1000x1000 display resolution.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# run an existing image in current directory, with a screen, with SSH, with nopicker, and save the bootdisk for later.
|
# 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 BOARD_SERIAL="C027251024NJG36UE" \
|
||||||
-e UUID="5CCB366D-9118-4C61-A00A-E5BAF3BED451" \
|
-e UUID="5CCB366D-9118-4C61-A00A-E5BAF3BED451" \
|
||||||
-e MAC_ADDRESS="A8:5C:2C:9A:46:2F" \
|
-e MAC_ADDRESS="A8:5C:2C:9A:46:2F" \
|
||||||
|
-e WIDTH=1000 \
|
||||||
|
-e HEIGHT=1000 \
|
||||||
-e BOOTDISK=/bootdisk \
|
-e BOOTDISK=/bootdisk \
|
||||||
-v "${PWD}/mynewbootdisk.qcow:/bootdisk" \
|
-v "${PWD}/mynewbootdisk.qcow:/bootdisk" \
|
||||||
-v "${PWD}/mac_hdd_ng.img:/image" \
|
-v "${PWD}/mac_hdd_ng.img:/image" \
|
||||||
@ -876,6 +920,97 @@ generate-specific-bootdisk.sh \
|
|||||||
--output-bootdisk OpenCore-nopicker.qcow2
|
--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
|
# Allow USB passthrough
|
||||||
|
|
||||||
The simplest way to do this is the following:
|
The simplest way to do this is the following:
|
||||||
|
@ -816,7 +816,7 @@
|
|||||||
<key>ReplaceTabWithSpace</key>
|
<key>ReplaceTabWithSpace</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>Resolution</key>
|
<key>Resolution</key>
|
||||||
<string>1920x1080@32</string>
|
<string>{{WIDTH}}x{{HEIGHT}}@32</string>
|
||||||
<key>SanitiseClearScreen</key>
|
<key>SanitiseClearScreen</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>TextRenderer</key>
|
<key>TextRenderer</key>
|
||||||
|
@ -15,12 +15,19 @@ help_text="Usage: generate-specific-bootdisk.sh
|
|||||||
|
|
||||||
General options:
|
General options:
|
||||||
--model <string> Device model, e.g. 'iMacPro1,1'
|
--model <string> Device model, e.g. 'iMacPro1,1'
|
||||||
--serial <filename> Device Serial number.
|
--serial <filename> Device Serial number
|
||||||
--board-serial <filename> Board Serial number.
|
--board-serial <filename> Board Serial number
|
||||||
--uuid <filename> SmUUID.
|
--uuid <filename> SmUUID
|
||||||
--mac-address <string> Used to set the ROM value; lowercased and without a colon.
|
--mac-address <string> Used to set the ROM value; lowercased and without a colon
|
||||||
--output-bootdisk <filename> Optionally change the bootdisk output filename.
|
--width <string> Resolution x axis length in pixels (default 1920)
|
||||||
--custom-plist <filename> Optionally change the input plist.
|
--height <string> Resolution y axis length in pixels (default 1080
|
||||||
|
--output-bootdisk <filename> Optionally change the bootdisk output filename
|
||||||
|
|
||||||
|
--master-plist-url <url> Specify an alternative master plist, via URL.
|
||||||
|
--custom-plist | --master-plist <filename>
|
||||||
|
Optionally change the input plist. Placeholders:
|
||||||
|
{{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}},
|
||||||
|
{{UUID}}, {{ROM}}, {{WIDTH}}, {{HEIGHT}}
|
||||||
|
|
||||||
--help, -h, help Display this help and exit
|
--help, -h, help Display this help and exit
|
||||||
|
|
||||||
@ -31,7 +38,9 @@ Example:
|
|||||||
--board-serial C027251024NJG36UE \
|
--board-serial C027251024NJG36UE \
|
||||||
--uuid 5CCB366D-9118-4C61-A00A-E5BAF3BED451 \
|
--uuid 5CCB366D-9118-4C61-A00A-E5BAF3BED451 \
|
||||||
--mac-address A8:5C:2C:9A:46:2F \
|
--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/
|
Author: Sick.Codes https://sick.codes/
|
||||||
Project: https://github.com/sickcodes/Docker-OSX/
|
Project: https://github.com/sickcodes/Docker-OSX/
|
||||||
@ -97,6 +106,26 @@ while (( "$#" )); do
|
|||||||
shift
|
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=* )
|
--output-bootdisk=* )
|
||||||
export OUTPUT_QCOW="${1#*=}"
|
export OUTPUT_QCOW="${1#*=}"
|
||||||
shift
|
shift
|
||||||
@ -107,12 +136,33 @@ while (( "$#" )); do
|
|||||||
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=* )
|
--custom-plist=* )
|
||||||
export INPUT_PLIST="${1#*=}"
|
export MASTER_PLIST="${1#*=}"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--custom-plist* )
|
--custom-plist* )
|
||||||
export INPUT_PLIST="${2}"
|
export MASTER_PLIST="${2}"
|
||||||
shift
|
shift
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
@ -138,8 +188,23 @@ download_qcow_efi_folder () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
generate_bootdisk () {
|
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
|
[[ -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.
|
# plist required for bootdisks, so create anyway.
|
||||||
if [[ "${DEVICE_MODEL}" ]] \
|
if [[ "${DEVICE_MODEL}" ]] \
|
||||||
&& [[ "${SERIAL}" ]] \
|
&& [[ "${SERIAL}" ]] \
|
||||||
@ -153,7 +218,9 @@ generate_bootdisk () {
|
|||||||
-e s/{{BOARD_SERIAL}}/"${BOARD_SERIAL}"/g \
|
-e s/{{BOARD_SERIAL}}/"${BOARD_SERIAL}"/g \
|
||||||
-e s/{{UUID}}/"${UUID}"/g \
|
-e s/{{UUID}}/"${UUID}"/g \
|
||||||
-e s/{{ROM}}/"${ROM}"/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
|
else
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Error: one of the following values is missing:
|
Error: one of the following values is missing:
|
||||||
@ -164,12 +231,15 @@ Error: one of the following values is missing:
|
|||||||
--uuid "${UUID:-MISSING}"
|
--uuid "${UUID:-MISSING}"
|
||||||
--mac-address "${MAC_ADDRESS:-MISSING}"
|
--mac-address "${MAC_ADDRESS:-MISSING}"
|
||||||
|
|
||||||
|
--width "${WIDTH:-1920}"
|
||||||
|
--height "${HEIGHT:-1080}"
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
./opencore-image-ng.sh \
|
./opencore-image-ng.sh \
|
||||||
--cfg "${INPUT_PLIST:-./tmp.config.plist}" \
|
--cfg "./tmp.config.plist" \
|
||||||
--img "${OUTPUT_QCOW:-./${SERIAL}.OpenCore-nopicker.qcow2}" || exit 1
|
--img "${OUTPUT_QCOW:-./${SERIAL}.OpenCore-nopicker.qcow2}" || exit 1
|
||||||
rm ./tmp.config.plist
|
rm ./tmp.config.plist
|
||||||
|
|
||||||
|
@ -21,6 +21,14 @@ General options:
|
|||||||
--output-bootdisk <filename> Optionally change the bootdisk qcow output filename. Useless when count > 1.
|
--output-bootdisk <filename> Optionally change the bootdisk qcow output filename. Useless when count > 1.
|
||||||
--output-env <filename> Optionally change the bootdisk env filename. Useless when count > 1.
|
--output-env <filename> Optionally change the bootdisk env filename. Useless when count > 1.
|
||||||
--output-dir <directory> Optionally change the script output location.
|
--output-dir <directory> Optionally change the script output location.
|
||||||
|
--width <string> Resolution x axis length in pixels (default 1920)
|
||||||
|
--height <string> Resolution y axis length in pixels (default 1080
|
||||||
|
|
||||||
|
--master-plist-url <url> Specify an alternative master plist, via URL.
|
||||||
|
--master-plist | --custom-plist <filename>
|
||||||
|
Optionally change the input plist. Placeholders:
|
||||||
|
{{DEVICE_MODEL}}, {{SERIAL}}, {{BOARD_SERIAL}},
|
||||||
|
{{UUID}}, {{ROM}}, {{WIDTH}}, {{HEIGHT}}
|
||||||
|
|
||||||
--help, -h, help Display this help and exit
|
--help, -h, help Display this help and exit
|
||||||
--plists Create corresponding config.plists for each serial set.
|
--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
|
MACINFOPKG_VERSION=2.1.2
|
||||||
PLIST_MASTER=config-nopicker-custom.plist
|
|
||||||
|
|
||||||
# gather arguments
|
# gather arguments
|
||||||
while (( "$#" )); do
|
while (( "$#" )); do
|
||||||
@ -132,6 +139,60 @@ while (( "$#" )); do
|
|||||||
shift
|
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 )
|
--plists )
|
||||||
export CREATE_PLISTS=1
|
export CREATE_PLISTS=1
|
||||||
shift
|
shift
|
||||||
@ -183,8 +244,22 @@ download_qcow_efi_folder () {
|
|||||||
|
|
||||||
|
|
||||||
generate_serial_sets () {
|
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
|
[[ -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"
|
mkdir -p "${OUTPUT_DIRECTORY}/envs"
|
||||||
export DATE_NOW="$(date +%F-%T)"
|
export DATE_NOW="$(date +%F-%T)"
|
||||||
export DEVICE_MODEL="${DEVICE_MODEL:=iMacPro1,1}"
|
export DEVICE_MODEL="${DEVICE_MODEL:=iMacPro1,1}"
|
||||||
@ -231,6 +306,8 @@ export SERIAL="${SERIAL}"
|
|||||||
export BOARD_SERIAL="${BOARD_SERIAL}"
|
export BOARD_SERIAL="${BOARD_SERIAL}"
|
||||||
export UUID="${UUID}"
|
export UUID="${UUID}"
|
||||||
export MAC_ADDRESS="${MAC_ADDRESS}"
|
export MAC_ADDRESS="${MAC_ADDRESS}"
|
||||||
|
export WIDTH="${WIDTH:=1920}"
|
||||||
|
export HEIGHT="${HEIGHT:=1080}"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# plist required for bootdisks, so create anyway.
|
# plist required for bootdisks, so create anyway.
|
||||||
@ -244,7 +321,9 @@ EOF
|
|||||||
-e s/{{BOARD_SERIAL}}/"${BOARD_SERIAL}"/g \
|
-e s/{{BOARD_SERIAL}}/"${BOARD_SERIAL}"/g \
|
||||||
-e s/{{UUID}}/"${UUID}"/g \
|
-e s/{{UUID}}/"${UUID}"/g \
|
||||||
-e s/{{ROM}}/"${ROM}"/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
|
fi
|
||||||
|
|
||||||
if [[ "${CREATE_QCOWS}" ]]; then
|
if [[ "${CREATE_QCOWS}" ]]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user