Fix MAC_PASSWORD variable name (should be PASSWORD), Add docs for folder sharing
This commit is contained in:
		
							parent
							
								
									a9479fb875
								
							
						
					
					
						commit
						31c95fd640
					
				|  | @ -88,4 +88,5 @@ This project now uses the fantastic OpenCore bootloader from the community OpenC | ||||||
| 
 | 
 | ||||||
| [@allansrc](https://github.com/allansrc) - Update Doc detail for run on WLS #318  | [@allansrc](https://github.com/allansrc) - Update Doc detail for run on WLS #318  | ||||||
| 
 | 
 | ||||||
|  | [@mcandre](https://github.com/mcandre) - fix typo #334  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -240,7 +240,7 @@ CMD echo "${BOILERPLATE}" \ | ||||||
|     ; } \ |     ; } \ | ||||||
|     ; /bin/bash -c ./Launch.sh \ |     ; /bin/bash -c ./Launch.sh \ | ||||||
|     & echo "Booting Docker-OSX in the background. Please wait..." \ |     & echo "Booting Docker-OSX in the background. Please wait..." \ | ||||||
|     ; until [[ "$(sshpass -p${MAC_PASSWORD} ssh-copy-id -f -i ~/.ssh/id_docker_osx.pub -p 10022 ${USERNAME}@127.0.0.1)" ]]; do \ |     ; until [[ "$(sshpass -p${PASSWORD:=alpine} ssh-copy-id -f -i ~/.ssh/id_docker_osx.pub -p 10022 ${USERNAME:=user}@127.0.0.1)" ]]; do \ | ||||||
|         echo "Disk is being copied between layers. Repeating until able to copy SSH key into OSX..." \ |         echo "Disk is being copied between layers. Repeating until able to copy SSH key into OSX..." \ | ||||||
|         ; sleep 1 \ |         ; sleep 1 \ | ||||||
|     ; done \ |     ; done \ | ||||||
|  |  | ||||||
|  | @ -46,15 +46,16 @@ ARG RANKMIRRORS | ||||||
| ARG MIRROR_COUNTRY=US | ARG MIRROR_COUNTRY=US | ||||||
| ARG MIRROR_COUNT=10 | ARG MIRROR_COUNT=10 | ||||||
| RUN if [[ "${RANKMIRRORS}" ]]; then { pacman -Sy wget --noconfirm || pacman -Syu wget --noconfirm ; } \ | RUN if [[ "${RANKMIRRORS}" ]]; then { pacman -Sy wget --noconfirm || pacman -Syu wget --noconfirm ; } \ | ||||||
|     ; wget -O ./rankmirrors "https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/rankmirrors" \ |         ; wget -O ./rankmirrors "https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/rankmirrors" \ | ||||||
|     ; wget -O- "https://www.archlinux.org/mirrorlist/?country=${MIRROR_COUNTRY:-US}&protocol=https&use_mirror_status=on" \ |         ; wget -O- "https://www.archlinux.org/mirrorlist/?country=${MIRROR_COUNTRY:-US}&protocol=https&use_mirror_status=on" \ | ||||||
|     | sed -e 's/^#Server/Server/' -e '/^#/d' \ |         | sed -e 's/^#Server/Server/' -e '/^#/d' \ | ||||||
|     | head -n "$((${MIRROR_COUNT:-10}+1))" \ |         | head -n "$((${MIRROR_COUNT:-10}+1))" \ | ||||||
|     | bash ./rankmirrors --verbose --max-time 5 - > /etc/pacman.d/mirrorlist \ |         | bash ./rankmirrors --verbose --max-time 5 - > /etc/pacman.d/mirrorlist \ | ||||||
|     && tee -a /etc/pacman.d/mirrorlist <<< 'Server = http://mirrors.evowise.com/archlinux/$repo/os/$arch' \ |         && tee -a /etc/pacman.d/mirrorlist <<< 'Server = http://mirrors.evowise.com/archlinux/$repo/os/$arch' \ | ||||||
|     && tee -a /etc/pacman.d/mirrorlist <<< 'Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch' \ |         && tee -a /etc/pacman.d/mirrorlist <<< 'Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch' \ | ||||||
|     && tee -a /etc/pacman.d/mirrorlist <<< 'Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch' \ |         && tee -a /etc/pacman.d/mirrorlist <<< 'Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch' \ | ||||||
|     && cat /etc/pacman.d/mirrorlist ; fi |         && cat /etc/pacman.d/mirrorlist \ | ||||||
|  |     ; fi | ||||||
| 
 | 
 | ||||||
| # For taking screenshots of the Xfvb screen, useful during development. | # For taking screenshots of the Xfvb screen, useful during development. | ||||||
| ARG SCROT | ARG SCROT | ||||||
|  |  | ||||||
|  | @ -152,6 +152,10 @@ ENV NETWORKING=vmxnet3 | ||||||
| 
 | 
 | ||||||
| ENV NOPICKER=true | ENV NOPICKER=true | ||||||
| 
 | 
 | ||||||
|  | # set the username and password for automatically logging in | ||||||
|  | ENV USERNAME=user | ||||||
|  | ENV PASSWORD=alpine | ||||||
|  | 
 | ||||||
| # dynamic RAM options for runtime | # dynamic RAM options for runtime | ||||||
| ENV RAM=3 | ENV RAM=3 | ||||||
| # ENV RAM=max | # ENV RAM=max | ||||||
|  | @ -175,10 +179,6 @@ CMD echo "${BOILERPLATE}" \ | ||||||
|     ; echo "Disk is being copied between layers... Please wait a minute..." \ |     ; echo "Disk is being copied between layers... Please wait a minute..." \ | ||||||
|     ; sudo touch /dev/kvm /dev/snd "${IMAGE_PATH}" "${BOOTDISK}" "${ENV}" 2>/dev/null || true \ |     ; 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 \ |     ; sudo chown -R $(id -u):$(id -g) /dev/kvm /dev/snd "${IMAGE_PATH}" "${BOOTDISK}" "${ENV}" 2>/dev/null || true \ | ||||||
|     ; { [[ "${DISPLAY}" = ':99' ]] || [[ "${HEADLESS}" == true ]] ; } && { \ |  | ||||||
|         nohup Xvfb :99 -screen 0 1920x1080x16 \ |  | ||||||
|         & until [[ "$(xrandr --query 2>/dev/null)" ]]; do sleep 1 ; done \ |  | ||||||
|     ; } \ |  | ||||||
|     ; [[ "${NOPICKER}" == true ]] && { \ |     ; [[ "${NOPICKER}" == true ]] && { \ | ||||||
|         sed -i '/^.*InstallMedia.*/d' Launch.sh \ |         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-nopicker.qcow2}" \ | ||||||
|  | @ -208,6 +208,10 @@ CMD echo "${BOILERPLATE}" \ | ||||||
|             --height "${HEIGHT:-1080}" \ |             --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}" \ | ||||||
|     || exit 1 ; } \ |     || exit 1 ; } \ | ||||||
|  |     ; { [[ "${DISPLAY}" = ':99' ]] || [[ "${HEADLESS}" == true ]] ; } && { \ | ||||||
|  |         nohup Xvfb :99 -screen 0 1920x1080x16 \ | ||||||
|  |         & until [[ "$(xrandr --query 2>/dev/null)" ]]; do sleep 1 ; done \ | ||||||
|  |     ; } \ | ||||||
|     ; stat "${IMAGE_PATH}" \ |     ; stat "${IMAGE_PATH}" \ | ||||||
|     ; echo "Large image is being copied between layers, please wait a minute..." \ |     ; echo "Large image is being copied between layers, please wait a minute..." \ | ||||||
|     ; ./enable-ssh.sh \ |     ; ./enable-ssh.sh \ | ||||||
|  | @ -217,7 +221,7 @@ CMD echo "${BOILERPLATE}" \ | ||||||
|     ; } \ |     ; } \ | ||||||
|     ; /bin/bash -c ./Launch.sh \ |     ; /bin/bash -c ./Launch.sh \ | ||||||
|     & echo "Booting Docker-OSX in the background. Please wait..." \ |     & echo "Booting Docker-OSX in the background. Please wait..." \ | ||||||
|     ; until [[ "$(sshpass -p${MAC_PASSWORD:=alpine} ssh-copy-id -f -i ~/.ssh/id_docker_osx.pub -p 10022 ${USERNAME:=user}@127.0.0.1)" ]]; do \ |     ; until [[ "$(sshpass -p${PASSWORD:=alpine} ssh-copy-id -f -i ~/.ssh/id_docker_osx.pub -p 10022 ${USERNAME:=user}@127.0.0.1)" ]]; do \ | ||||||
|         echo "Disk is being copied between layers. Repeating until able to copy SSH key into OSX..." \ |         echo "Disk is being copied between layers. Repeating until able to copy SSH key into OSX..." \ | ||||||
|         ; sleep 1 \ |         ; sleep 1 \ | ||||||
|     ; done \ |     ; done \ | ||||||
|  |  | ||||||
							
								
								
									
										144
									
								
								README.md
								
								
								
								
							
							
						
						
									
										144
									
								
								README.md
								
								
								
								
							|  | @ -98,6 +98,8 @@ docker run -it \ | ||||||
| 
 | 
 | ||||||
| Enable SSH in network sharing inside the guest first. Change `-e "USERNAME=user"` and `-e "USERNAME=password"` to your credentials. The container will add itself to `~/.ssh/authorized_keys` | Enable SSH in network sharing inside the guest first. Change `-e "USERNAME=user"` and `-e "USERNAME=password"` to your credentials. The container will add itself to `~/.ssh/authorized_keys` | ||||||
| 
 | 
 | ||||||
|  | Since you can't see the screen, use the PLIST with nopicker, for example: | ||||||
|  | 
 | ||||||
| ```bash | ```bash | ||||||
| wget https://images2.sick.codes/mac_hdd_ng_auto.img | wget https://images2.sick.codes/mac_hdd_ng_auto.img | ||||||
| 
 | 
 | ||||||
|  | @ -109,6 +111,8 @@ docker run -it \ | ||||||
|     -e "DISPLAY=${DISPLAY:-:0.0}" \ |     -e "DISPLAY=${DISPLAY:-:0.0}" \ | ||||||
|     -e "USERNAME=user" \ |     -e "USERNAME=user" \ | ||||||
|     -e "DISPLAY=alpine" \ |     -e "DISPLAY=alpine" \ | ||||||
|  |     -e GENERATE_UNIQUE=true \ | ||||||
|  |     -e MASTER_PLIST_URL=https://raw.githubusercontent.com/sickcodes/Docker-OSX/master/custom/config-nopicker-custom.plist \ | ||||||
|     sickcodes/docker-osx:naked-auto |     sickcodes/docker-osx:naked-auto | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | @ -156,6 +160,8 @@ Same as above but with `-e USERNAME` & `-e PASSWORD` and `-e OSX_COMMANDS="put y | ||||||
| [](https://hub.docker.com/r/sickcodes/docker-osx/tags?page=1&ordering=last_updated) | [](https://hub.docker.com/r/sickcodes/docker-osx/tags?page=1&ordering=last_updated) | ||||||
| 
 | 
 | ||||||
| ## Capabilities | ## Capabilities | ||||||
|  | - iPhone over USB | ||||||
|  | - Folder sharing | ||||||
| - SSH enabled (`localhost:50922`) | - SSH enabled (`localhost:50922`) | ||||||
| - VNC enabled (`localhost:8888`) if using ./vnc version | - VNC enabled (`localhost:8888`) if using ./vnc version | ||||||
| - [serial number generator!](https://github.com/sickcodes/osx-serial-generator) | - [serial number generator!](https://github.com/sickcodes/osx-serial-generator) | ||||||
|  | @ -343,51 +349,6 @@ Big thank you to our contributors who have worked out almost every conceivable i | ||||||
| 
 | 
 | ||||||
| [https://github.com/sickcodes/Docker-OSX/blob/master/CREDITS.md](https://github.com/sickcodes/Docker-OSX/blob/master/CREDITS.md) | [https://github.com/sickcodes/Docker-OSX/blob/master/CREDITS.md](https://github.com/sickcodes/Docker-OSX/blob/master/CREDITS.md) | ||||||
| 
 | 
 | ||||||
| ### The big-sur image starts slowly after installation. Is this expected? |  | ||||||
| 
 |  | ||||||
| Automatic updates are still on in the container's settings. You may wish to turn them off. [We have future plans for development around this.](https://github.com/sickcodes/Docker-OSX/issues/227) |  | ||||||
| 
 |  | ||||||
| ### What is `${DISPLAY:-:0.0}`? |  | ||||||
| 
 |  | ||||||
| `$DISPLAY` is the shell variable that refers to your X11 display server. |  | ||||||
| 
 |  | ||||||
| `${DISPLAY}` is the same, but allows you to join variables like this: |  | ||||||
| 
 |  | ||||||
| - e.g. `${DISPLAY}_${DISPLAY}` would print `:0.0_:0.0` |  | ||||||
| - e.g. `$DISPLAY_$DISPLAY`     would print `:0.0` |  | ||||||
| 
 |  | ||||||
| ...because `$DISPLAY_` is not `$DISPLAY` |  | ||||||
| 
 |  | ||||||
| `${variable:-fallback}` allows you to set a "fallback" variable to be substituted if `$variable` is not set. |  | ||||||
| 
 |  | ||||||
| You can also use `${variable:=fallback}` to set that variable (in your current terminal). |  | ||||||
| 
 |  | ||||||
| In Docker-OSX, we assume, `:0.0` is your default `$DISPLAY` variable. |  | ||||||
| 
 |  | ||||||
| You can see what yours is |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| echo $DISPLAY |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| That way, `${DISPLAY:-:0.0}` will use whatever variable your X11 server has set for you, else `:0.0` |  | ||||||
| 
 |  | ||||||
| ### What is `-v /tmp/.X11-unix:/tmp/.X11-unix`? |  | ||||||
| 
 |  | ||||||
| `-v` is a Docker command-line option that lets you pass a volume to the container. |  | ||||||
| 
 |  | ||||||
| The directory that we are letting the Docker container use is a X server display socket. |  | ||||||
| 
 |  | ||||||
| `/tmp/.X11-unix` |  | ||||||
| 
 |  | ||||||
| If we let the Docker container use the same display socket as our own environment, then any applications you run inside the Docker container will show up on your screen too! [https://www.x.org/archive/X11R6.8.0/doc/RELNOTES5.html](https://www.x.org/archive/X11R6.8.0/doc/RELNOTES5.html) |  | ||||||
| 
 |  | ||||||
| ### ALSA errors on startup or container creation |  | ||||||
| 
 |  | ||||||
| You may when initialising or booting into a container see errors from the `(qemu)` console of the following form:  |  | ||||||
| `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). |  | ||||||
| 
 | 
 | ||||||
| ### Start the same container later (persistent disk) | ### Start the same container later (persistent disk) | ||||||
| 
 | 
 | ||||||
|  | @ -429,7 +390,7 @@ docker ps -a | ||||||
| docker start -ai -i <Replace this with your ID> | docker start -ai -i <Replace this with your ID> | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### LibGTK errors | ### LibGTK errors "connection refused" | ||||||
| 
 | 
 | ||||||
| You may see one or more libgtk-related errors if you do not have everything set up for hardware virtualisation yet. If you have not yet done so, check out the [initial setup](#initial-setup) section and the [routine checks](#routine-checks) section as you may have missed a setup step or may not have all the needed Docker dependencies ready to go. | You may see one or more libgtk-related errors if you do not have everything set up for hardware virtualisation yet. If you have not yet done so, check out the [initial setup](#initial-setup) section and the [routine checks](#routine-checks) section as you may have missed a setup step or may not have all the needed Docker dependencies ready to go. | ||||||
| 
 | 
 | ||||||
|  | @ -585,6 +546,48 @@ nano /etc/sysctl.conf || vi /etc/sysctl.conf || vim /etc/sysctl.conf | ||||||
| # now reboot | # now reboot | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | ## Share folder with Docker-OSX QEMU macOS | ||||||
|  | 
 | ||||||
|  | Sharing a folder with guest is quite simple. | ||||||
|  | 
 | ||||||
|  | Your folder, will go to /mnt/hostshare inside the Arch container which is then passed over QEMU. | ||||||
|  | 
 | ||||||
|  | Then mount using `sudo -S mount_9p hostshare` from inside the mac. | ||||||
|  | 
 | ||||||
|  | For example, | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | FOLDER=~/somefolder | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  |     -v "${FOLDER}:/mnt/hostshare" \ | ||||||
|  |     -e EXTRA="-virtfs local,path=/mnt/hostshare,mount_tag=hostshare,security_model=passthrough,id=hostshare" \ | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Full example: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | # stat mac_hdd_ng.img | ||||||
|  | SHARE=~/somefolder | ||||||
|  | 
 | ||||||
|  | docker run -it \ | ||||||
|  |     --device /dev/kvm \ | ||||||
|  |     -p 50922:10022 \ | ||||||
|  |     -v /tmp/.X11-unix:/tmp/.X11-unix \ | ||||||
|  |     -e "DISPLAY=${DISPLAY:-:0.0}" \ | ||||||
|  |     -v "${PWD}/mac_hdd_ng.img:/home/arch/OSX-KVM/mac_hdd_ng.img" \ | ||||||
|  |     -v "${SHARE}:/mnt/hostshare" \ | ||||||
|  |     -e EXTRA="-virtfs local,path=/mnt/hostshare,mount_tag=hostshare,security_model=passthrough,id=hostshare" \ | ||||||
|  |     sickcodes/docker-osx:latest | ||||||
|  | 
 | ||||||
|  | # !!! Open Terminal inside macOS and run the following command to mount the virtual file system | ||||||
|  | # sudo -S mount_9p hostshare | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ### Fedora: enable internet connectivity with a bridged network | ### Fedora: enable internet connectivity with a bridged network | ||||||
| 
 | 
 | ||||||
| Fedora's default firewall settings may prevent Docker's network interface from reaching the internet. In order to reoslve this, you will need to whitelist the interface in your firewall: | Fedora's default firewall settings may prevent Docker's network interface from reaching the internet. In order to reoslve this, you will need to whitelist the interface in your firewall: | ||||||
|  | @ -1403,3 +1406,52 @@ chmod +x ./Launch-nopicker.sh | ||||||
| sed -i -e s/OpenCore\.qcow2/OpenCore\-nopicker\.qcow2/ ./Launch-nopicker.sh | sed -i -e s/OpenCore\.qcow2/OpenCore\-nopicker\.qcow2/ ./Launch-nopicker.sh | ||||||
| " | " | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### The big-sur image starts slowly after installation. Is this expected? | ||||||
|  | 
 | ||||||
|  | Automatic updates are still on in the container's settings. You may wish to turn them off. [We have future plans for development around this.](https://github.com/sickcodes/Docker-OSX/issues/227) | ||||||
|  | 
 | ||||||
|  | ### What is `${DISPLAY:-:0.0}`? | ||||||
|  | 
 | ||||||
|  | `$DISPLAY` is the shell variable that refers to your X11 display server. | ||||||
|  | 
 | ||||||
|  | `${DISPLAY}` is the same, but allows you to join variables like this: | ||||||
|  | 
 | ||||||
|  | - e.g. `${DISPLAY}_${DISPLAY}` would print `:0.0_:0.0` | ||||||
|  | - e.g. `$DISPLAY_$DISPLAY`     would print `:0.0` | ||||||
|  | 
 | ||||||
|  | ...because `$DISPLAY_` is not `$DISPLAY` | ||||||
|  | 
 | ||||||
|  | `${variable:-fallback}` allows you to set a "fallback" variable to be substituted if `$variable` is not set. | ||||||
|  | 
 | ||||||
|  | You can also use `${variable:=fallback}` to set that variable (in your current terminal). | ||||||
|  | 
 | ||||||
|  | In Docker-OSX, we assume, `:0.0` is your default `$DISPLAY` variable. | ||||||
|  | 
 | ||||||
|  | You can see what yours is | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | echo $DISPLAY | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | That way, `${DISPLAY:-:0.0}` will use whatever variable your X11 server has set for you, else `:0.0` | ||||||
|  | 
 | ||||||
|  | ### What is `-v /tmp/.X11-unix:/tmp/.X11-unix`? | ||||||
|  | 
 | ||||||
|  | `-v` is a Docker command-line option that lets you pass a volume to the container. | ||||||
|  | 
 | ||||||
|  | The directory that we are letting the Docker container use is a X server display socket. | ||||||
|  | 
 | ||||||
|  | `/tmp/.X11-unix` | ||||||
|  | 
 | ||||||
|  | If we let the Docker container use the same display socket as our own environment, then any applications you run inside the Docker container will show up on your screen too! [https://www.x.org/archive/X11R6.8.0/doc/RELNOTES5.html](https://www.x.org/archive/X11R6.8.0/doc/RELNOTES5.html) | ||||||
|  | 
 | ||||||
|  | ### ALSA errors on startup or container creation | ||||||
|  | 
 | ||||||
|  | You may when initialising or booting into a container see errors from the `(qemu)` console of the following form:  | ||||||
|  | `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). | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue