17 Commits

Author SHA1 Message Date
e5ca81ee6e Add mkdir -p, add ventura elsewhere 2022-11-15 19:17:58 +00:00
ed5e50da7c Add ventura to Docker-OSX README 2022-11-14 19:03:18 +00:00
306961a107 Add ventura to Docker-OSX 2022-11-14 19:00:37 +00:00
1e00c9cfd7 Fix keyserver issues, cherry pick aaronjamt/patch-1 2022-11-10 00:11:18 +00:00
586e093ba6 Fix qemu build 2022-11-09 22:45:19 +00:00
160489b0e3 Add ventura 2022-11-09 22:39:21 +00:00
49b86bec9a Merge pull request #538 from TartanLeGrand/master
sshpass install and label
2022-09-12 13:52:26 +00:00
40a7e0d200 fix: sshpass install and label 2022-09-01 08:38:59 +02:00
1fa728b08d Fixes #510 missing keyservers 2022-07-04 12:53:22 +00:00
d7f0c289fc Fixes #485 2022-05-14 16:14:58 +00:00
1103007c8d Merge pull request #495 from jonathanweinberg/patch-1
Additional information about .wslconfig
2022-05-14 16:08:11 +00:00
41b07267b2 Share files, shared folder, mount folder
# Share directories, sharing files, shared folder, mount folder
The easiest and most secure way is `sshfs`
```bash
# on Linux/Windows
mkdir ~/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
```
2022-05-14 16:07:27 +00:00
fa0e336c7d Additional information about .wslconfig
From official MS documentation around `.wslconfig`. Link also has some interesting reading about the `8 second rule` regarding changes not really being made to configs until about 8 seconds after *all* the instance of a distro are shut down. Might be good for some troubleshooting issues with wsl configs not "sticking".
2022-05-09 17:46:21 -04:00
55293cbb6c Fixes #495 2022-04-21 11:10:03 +00:00
f9bfddbb5b Recognize. Add new legends to credits.
[@kimjammer](https://github.com/kimjammer) Update Windows Installation section #422 

[@Mhartig](https://github.com/Mhartig) -  Worked out issue `Enter a number (default=1): error: invalid number: y`

[@felipestt](https://github.com/felipestt)  Use more CPU Cores/SMP' broken #440 

[@routmoute](https://github.com/routmoute) README: add PulseAudio with WSLg #442 

[@dulatello08](https://github.com/dulatello08) Update README.md #452
2022-04-17 04:34:14 +00:00
4501c6a854 Fix #440
> According to [this](https://github.com/foxlet/macOS-Simple-KVM/issues/319#issuecomment-1003775896), macOS only supports power-of-two cores. But you can increase the number of sockets to get the virtual cores you need.
> 
> If you need 6 cores, go with:
> 
> ```
> -e EXTRA='-smp 6,sockets=3,cores=2'
> ```
2022-04-14 22:49:35 +00:00
524749cbb8 Merge pull request #472 from sickcodes/naked-vnc-legacy-patch
Fixes #470  TEMP-FIX is breaking Dockerfile.nakedvnc build #470
2022-04-07 20:53:57 +00:00
11 changed files with 97 additions and 41 deletions

View File

@ -120,4 +120,12 @@ This project now uses the fantastic OpenCore bootloader from the community OpenC
[@aslafy-z](https://github.com/aslafy-z) chore(docs): update helm requirements list style #420
@Mhartig - Worked out issue `Enter a number (default=1): error: invalid number: y`
[@kimjammer](https://github.com/kimjammer) Update Windows Installation section #422
[@Mhartig](https://github.com/Mhartig) - Worked out issue `Enter a number (default=1): error: invalid number: y`
[@felipestt](https://github.com/felipestt) Use more CPU Cores/SMP' broken #440
[@routmoute](https://github.com/routmoute) README: add PulseAudio with WSLg #442
[@dulatello08](https://github.com/dulatello08) Update README.md #452

View File

@ -80,6 +80,15 @@ RUN if [[ "${RANKMIRRORS}" ]]; then \
&& cat /etc/pacman.d/mirrorlist \
; fi
# Fixes issue with invalid GPG keys: update the archlinux-keyring package to get the latest keys, then remove and regenerate gnupg keys
RUN pacman -Sy archlinux-keyring --noconfirm && rm -rf /etc/pacman.d/gnupg && pacman-key --init && pacman-key --populate
RUN tee -a /etc/pacman.d/gnupg/gpg.conf <<< 'keyserver hkp://keyserver.ubuntu.com' \
&& tee -a /etc/pacman.d/gnupg/gpg.conf <<< 'keyserver hkps://hkps.pool.sks-keyservers.net:443' \
&& tee -a /etc/pacman.d/gnupg/gpg.conf <<< 'keyserver hkp://pgp.mit.edu:11371' \
&& tee -a /etc/pacman.d/gnupg/gpg.conf <<< 'keyserver hkps://keys.openpgp.org' \
&& tee -a /etc/pacman.d/gnupg/gpg.conf <<< 'keyserver hkps://keys.mailvelope.com'
# This fails on hub.docker.com, useful for debugging in cloud
# RUN [[ $(egrep -c '(svm|vmx)' /proc/cpuinfo) -gt 0 ]] || { echo KVM not possible on this host && exit 1; }
@ -90,11 +99,11 @@ RUN pacman -Syu git zip vim nano alsa-utils openssh --noconfirm \
&& ln -s /bin/vim /bin/vi \
&& useradd arch -p arch \
&& tee -a /etc/sudoers <<< 'arch ALL=(ALL) NOPASSWD: ALL' \
&& mkdir /home/arch \
&& mkdir -p /home/arch \
&& chown arch:arch /home/arch
# allow ssh to container
RUN mkdir -m 700 /root/.ssh
RUN mkdir -p -m 700 /root/.ssh
WORKDIR /root/.ssh
RUN touch authorized_keys \
@ -140,7 +149,7 @@ RUN touch enable-ssh.sh \
# RUN yes | sudo pacman -Syu qemu libvirt dnsmasq virt-manager bridge-utils edk2-ovmf netctl libvirt-dbus --overwrite --noconfirm
RUN yes | sudo pacman -Syu bc qemu libvirt dnsmasq virt-manager bridge-utils openresolv jack2 ebtables edk2-ovmf netctl libvirt-dbus wget --overwrite --noconfirm \
RUN yes | sudo pacman -Syu bc qemu-desktop libvirt dnsmasq virt-manager bridge-utils openresolv jack2 ebtables edk2-ovmf netctl libvirt-dbus wget --overwrite --noconfirm \
&& yes | sudo pacman -Scc
WORKDIR /home/arch/OSX-KVM
@ -153,11 +162,17 @@ RUN make \
&& qemu-img convert BaseSystem.dmg -O qcow2 -p -c BaseSystem.img \
&& rm ./BaseSystem.dmg
# fix invalid signature on old libguestfs
ARG SIGLEVEL=Never
RUN sudo tee -a /etc/pacman.conf <<< "SigLevel = ${SIGLEVEL}"
ARG LINUX=true
# required to use libguestfs inside a docker container, to create bootdisks for docker-osx on-the-fly
RUN if [[ "${LINUX}" == true ]]; then \
sudo pacman -Syu linux libguestfs --noconfirm \
sudo pacman -Syu linux archlinux-keyring guestfs-tools --noconfirm \
&& libguestfs-test-tool \
; fi
# optional --build-arg to change branches for testing
@ -213,32 +228,22 @@ USER arch
ENV USER arch
#### libguestfs versioning
# 5.13+ problem resolved by building the qcow2 against 5.12 using libguestfs-1.44.1-6
ENV SUPERMIN_KERNEL=/boot/vmlinuz-linux
ENV SUPERMIN_MODULES=/lib/modules/5.12.14-arch1-1
ENV SUPERMIN_KERNEL_VERSION=5.12.14-arch1-1
ENV KERNEL_PACKAGE_URL=https://archive.archlinux.org/packages/l/linux/linux-5.12.14.arch1-1-x86_64.pkg.tar.zst
ENV KERNEL_HEADERS_PACKAGE_URL=https://archive.archlinux.org/packages/l/linux/linux-headers-5.12.14.arch1-1-x86_64.pkg.tar.zst
ENV LIBGUESTFS_PACKAGE_URL=https://archive.archlinux.org/packages/l/libguestfs/libguestfs-1.44.1-6-x86_64.pkg.tar.zst
# fix ad hoc errors from using the arch museum to get libguestfs
RUN sudo sed -i -e 's/^\#RemoteFileSigLevel/RemoteFileSigLevel/g' /etc/pacman.conf
RUN sudo pacman -Syy \
RUN sudo tee -a /etc/pacman.conf <<< 'RemoteFileSigLevel = Optional' \
&& sudo pacman -Syy \
&& sudo pacman -Rns linux --noconfirm \
; sudo pacman -S mkinitcpio --noconfirm \
&& sudo pacman -U "${KERNEL_PACKAGE_URL}" --noconfirm || exit 1 \
&& sudo pacman -U "${LIBGUESTFS_PACKAGE_URL}" --noconfirm || exit 1 \
&& sudo pacman -S mkinitcpio pcre pcre2 --noconfirm \
&& sudo pacman -S linux linux-headers --noconfirm || exit 1 \
&& rm -rf /var/tmp/.guestfs-* \
&& yes | sudo pacman -Scc \
&& export SUPERMIN_KERNEL_VERSION="$(uname -r)" \
&& export SUPERMIN_MODULES="/lib/modules/$(uname -r)" \
&& export SUPERMIN_KERNEL=/boot/vmlinuz-linux \
&& libguestfs-test-tool || exit 1 \
&& rm -rf /var/tmp/.guestfs-*
####
# These are hardcoded serials for non-iMessage related research
# Overwritten by using GENERATE_UNIQUE=true
# Upstream removed nopicker, so we are adding it back in, at build time

View File

@ -42,7 +42,7 @@
FROM sickcodes/docker-osx:latest
MAINTAINER 'https://twitter.com/sickcodes' <https://sick.codes>
LABEL maintainer='https://twitter.com/sickcodes <https://sick.codes>'
USER root
@ -71,7 +71,7 @@ RUN if [[ "${RANKMIRRORS}" ]]; then \
; fi \
; yes | pacman -Scc
RUN pacman -Syu xorg-server-xvfb wget xterm xorg-xhost xorg-xrandr sshpass --noconfirm \
RUN pacman -Syu xorg-server-xvfb wget xterm xorg-xhost xorg-xrandr --noconfirm \
&& if [[ "${SCROT}" ]]; then \
pacman -Syu scrot base-devel --noconfirm \
&& git clone --recurse-submodules --depth 1 https://github.com/stolk/imcat.git \
@ -88,6 +88,9 @@ RUN pacman -Syu xorg-server-xvfb wget xterm xorg-xhost xorg-xrandr sshpass --noc
; fi \
; yes | pacman -Scc
RUN pacman -S sshpass --noconfirm \
&& yes | pacman -Scc
USER arch
ENV USER arch

View File

@ -21,7 +21,7 @@
FROM sickcodes/docker-osx
MAINTAINER 'https://twitter.com/sickcodes' <https://sick.codes>
LABEL maintainer='https://twitter.com/sickcodes <https://sick.codes>'
SHELL ["/bin/bash", "-c"]

View File

@ -32,7 +32,7 @@
FROM sickcodes/docker-osx:latest
MAINTAINER 'https://twitter.com/sickcodes' <https://sick.codes>
LABEL maintainer='https://twitter.com/sickcodes <https://sick.codes>'
USER root

View File

@ -18,7 +18,7 @@
FROM sickcodes/docker-osx:latest
MAINTAINER 'https://twitter.com/sickcodes' <https://sick.codes>
LABEL maintainer='https://twitter.com/sickcodes <https://sick.codes>'
USER root
@ -52,7 +52,7 @@ RUN if [[ "${RANKMIRRORS}" ]]; then \
# For taking screenshots of the Xfvb screen, useful during development.
ARG SCROT
RUN pacman -Syu xorg-server-xvfb wget xterm xorg-xhost xorg-xrandr sshpass --noconfirm \
RUN pacman -Syu xorg-server-xvfb wget xterm xorg-xhost xorg-xrandr --noconfirm \
&& if [[ "${SCROT}" ]]; then \
pacman -Syu scrot base-devel --noconfirm \
&& git clone --recurse-submodules --depth 1 https://github.com/stolk/imcat.git \
@ -69,6 +69,9 @@ RUN pacman -Syu xorg-server-xvfb wget xterm xorg-xhost xorg-xrandr sshpass --noc
; fi \
; yes | pacman -Scc
RUN pacman -S sshpass --noconfirm \
&& yes | pacman -Scc
USER arch
ENV USER arch

View File

@ -95,6 +95,22 @@ docker run -it \
# docker build -t docker-osx --build-arg SHORTNAME=monterey .
```
### Ventura [![https://img.shields.io/docker/image-size/sickcodes/docker-osx/ventura?label=sickcodes%2Fdocker-osx%3Aventura](https://img.shields.io/docker/image-size/sickcodes/docker-osx/ventura?label=sickcodes%2Fdocker-osx%3Aventura)](https://hub.docker.com/r/sickcodes/docker-osx/tags?page=1&ordering=last_updated)
```bash
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 MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom.plist' \
sickcodes/docker-osx:ventura
# docker build -t docker-osx --build-arg SHORTNAME=ventura .
```
#### Run Catalina Pre-Installed [![https://img.shields.io/docker/image-size/sickcodes/docker-osx/auto?label=sickcodes%2Fdocker-osx%3Aauto](https://img.shields.io/docker/image-size/sickcodes/docker-osx/auto?label=sickcodes%2Fdocker-osx%3Aauto)](https://hub.docker.com/r/sickcodes/docker-osx/tags?page=1&ordering=last_updated)
```bash
@ -178,12 +194,15 @@ Enable SSH in network sharing inside the guest first. Change `-e "USERNAME=user"
Since you can't see the screen, use the PLIST with nopicker, for example:
```bash
wget https://images2.sick.codes/mac_hdd_ng_auto.img
# Catalina
# wget https://images2.sick.codes/mac_hdd_ng_auto.img
# Monterey
wget https://images.sick.codes/mac_hdd_ng_auto_monterey.img
docker run -it \
--device /dev/kvm \
-p 50922:10022 \
-v "${PWD}/mac_hdd_ng_auto.img:/image" \
-v "${PWD}/mac_hdd_ng_auto_monterey:/image" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=${DISPLAY:-:0.0}" \
-e "USERNAME=user" \
@ -193,6 +212,17 @@ docker run -it \
sickcodes/docker-osx:naked-auto
```
# Share directories, sharing files, shared folder, mount folder
The easiest and most secure way is `sshfs`
```bash
# on Linux/Windows
mkdir ~/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
```
# (VFIO) iPhone USB passthrough (VFIO)
If you have a laptop see the next usbfluxd section.
@ -342,6 +372,7 @@ Pick one of these while **building**, irrelevant when using docker pull:
--build-arg SHORTNAME=catalina
--build-arg SHORTNAME=big-sur
--build-arg SHORTNAME=monterey
--build-arg SHORTNAME=ventura
```
@ -354,6 +385,7 @@ There currently multiple images, each with different use cases (explained [below
- Catalina
- Big Sur
- Monterey
- Ventura
- Auto (pre-made Catalina)
- Naked (use your own .img)
- Naked-Auto (user your own .img and SSH in)
@ -490,6 +522,7 @@ Create your personal image using `:latest` or `big-sur`. Then, pull the image ou
- `sickcodes/docker-osx:naked` - [I need iMessage/iCloud for security research.](#generating-serial-numbers)
- `sickcodes/docker-osx:big-sur` - [I want to run Big Sur.](#quick-start-docker-osx)
- `sickcodes/docker-osx:monterey` - [I want to run Monterey.](#quick-start-docker-osx)
- `sickcodes/docker-osx:ventura` - [I want to run Ventura.](#quick-start-docker-osx)
- `sickcodes/docker-osx:high-sierra` - I want to run High Sierra.
- `sickcodes/docker-osx:mojave` - I want to run Mojave.
@ -538,7 +571,7 @@ wsl --install
If you have previously installed WSL1, upgrade to WSL 2. Check [this link to upgrade from WSL1 to WSL2](https://docs.microsoft.com/en-us/windows/wsl/install#upgrade-version-from-wsl-1-to-wsl-2).
After WSL installation, go to `C:/Users/<Your_Name>/.wslconfig` and add `nestedVirtualization=true` to the end of the file (If the file doesn't exist, create it). You may need to select "Show Hidden Files" and "Show File Extensions" in File Explorer options.
After WSL installation, go to `C:/Users/<Your_Name>/.wslconfig` and add `nestedVirtualization=true` to the end of the file (If the file doesn't exist, create it). For more information about the `.wslconfig` file check [this link](https://docs.microsoft.com/en-us/windows/wsl/wsl-config#wslconfig). Verify that you have selected "Show Hidden Files" and "Show File Extensions" in File Explorer options.
The result should be like this:
```
[wsl2]
@ -642,13 +675,15 @@ Or
#### Use more CPU Cores/SMP
This will use all available cores; adjust accordingly to the day of the week:
Examples:
```
-e CPU_STRING=$(nproc) \
```
`-e EXTRA='-smp 6,sockets=3,cores=2'`
This will use `-smp $(nproc)`
`-e EXTRA='-smp 8,sockets=4,cores=2'`
`-e EXTRA='-smp 16,sockets=8,cores=2'`
Note, unlike memory, CPU usage is shared. so you can allocate all of your CPU's to the container.
### Confirm your user is part of the the Docker group, KVM group, libvirt group
@ -1858,4 +1893,3 @@ You may when initialising or booting into a container see errors from the `(qemu
`ALSA lib blahblahblah: (function name) returned error: no such file or directory`. These are more or less expected. As long as you are able to boot into the container and everything is working, no reason to worry about these.
See also: [here](https://github.com/sickcodes/Docker-OSX/issues/174).

View File

@ -16,6 +16,7 @@
# scrot -o catalina_master.png
# scrot -o big-sur_master.png
# scrot -o monterey_master.png
# scrot -o ventura_master.png
# pull off remote server to the tests folder
# REMOTE_SERVER=
# scp root@"${REMOTE_SERVER}":~/*_master.png .
@ -28,6 +29,7 @@ TESTS=(
catalina
big-sur
monterey
ventura
)
# test each docker image to see if they boot to their unique respective installation screens.

View File

@ -137,6 +137,7 @@ VERSION_BUILDS=(
'catalina'
'big-sur'
'monterey'
'ventura'
)
warning () {

View File

@ -95,8 +95,8 @@ RUN if [[ "${RANKMIRRORS}" ]]; then { pacman -Sy wget --noconfirm || pacman -Syu
USER arch
RUN sudo pacman -Syyuu --noconfirm \
&& sudo pacman -S tigervnc xterm xorg-xhost xdotool ufw --noconfirm \
RUN yes | sudo pacman -Syyuu --noconfirm \
&& yes | sudo pacman -S tigervnc xterm xorg-xhost xdotool ufw --noconfirm \
&& mkdir -p ${HOME}/.vnc \
&& touch ~/.vnc/config \
&& tee -a ~/.vnc/config <<< 'geometry=1920x1080' \

View File

@ -180,8 +180,8 @@ CMD sudo touch /dev/kvm /dev/snd "${IMAGE_PATH}" "${BOOTDISK}" "${ENV}" 2>/dev/
WORKDIR /home/arch/OSX-KVM
RUN sudo pacman -Syyuu --noconfirm \
&& sudo pacman -S tigervnc xterm xorg-xhost xdotool ufw --noconfirm \
RUN yes | sudo pacman -Syyuu --noconfirm \
&& yes | sudo pacman -S tigervnc xterm xorg-xhost xdotool ufw --noconfirm \
&& mkdir -p ${HOME}/.vnc \
&& touch ~/.vnc/config \
&& tee -a ~/.vnc/config <<< 'geometry=1920x1080' \