Open mhaqqiw opened 2 years ago
I will upload QEMU sock instructions where you can do key typing OTA, either outside or inside the container.
-monitor unix:qemu.socket,server,nowait
QEMU_SOCK="${PWD}/qemu.socket"
-e EXTRA='-display none -vnc 0.0.0.0:99,password=on -monitor unix:qemu.socket,server,nowait' \
Then socat to the sock:
docker exec -it CHANGE_ME /bin/bash -c "sudo chown -R \$(id -u):\$(id -g) qemu.socket"
sendkeys () {
ARG="${1}"
for (( i = 0; i < "${#ARG}"; i++ )); do
LETTER="${ARG:$i:1}"
echo "sendkey ${LETTER}"
echo "sendkey ${LETTER}" | socat - "${2}"
sleep 0.1
done
}
echo "change vnc password user" | socat - unix-connect:qemu.socket
echo "password" | socat - unix-connect:qemu.socket
More examples:
echo "sendkey backspace" | socat - unix-connect:qemu.socket
sendkeys "user" unix-connect:qemu.socket
echo "sendkey tab" | socat - unix-connect:qemu.socket
sendkeys "alpine" unix-connect:qemu.socket
echo "sendkey ret" | socat - unix-connect:qemu.socket
I'm trying run with this command. but still can't connect to VNC
docker run -i -d --name osx_big-sur --device /dev/kvm -p 50922:10022 -p 5999:5999 -v /tmp/.X11-unix:/tmp/.X11-unix -e QEMU_SOCK="${PWD}/qemu.socket" -e USERNAME=test -e PASSWORD=test -e "DISPLAY=${DISPLAY:-:0.0}" -e EXTRA="-display none -vnc 0.0.0.0:99,password=on -monitor unix:qemu.socket,server,nowait" sickcodes/docker-osx:big-sur
This is the log
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
++ id -u
++ id -g
+ sudo chown 1000:1000 /dev/kvm
++ id -u
++ id -g
+ sudo chown -R 1000:1000 /dev/snd
+ [[ 3 = max ]]
+ [[ 3 = half ]]
++ id -u
++ id -g
+ sudo chown -R 1000:1000 /dev/snd
+ exec qemu-system-x86_64 -m 3000 -cpu Penryn,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check, -machine q35,accel=kvm:tcg -smp 4,cores=4 -usb -device usb-kbd -device usb-tablet -device 'isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc' -drive if=pflash,format=raw,readonly=on,file=/home/arch/OSX-KVM/OVMF_CODE.fd -drive if=pflash,format=raw,file=/home/arch/OSX-KVM/OVMF_VARS-1024x768.fd -smbios type=2 -audiodev alsa,id=hda -device ich9-intel-hda -device hda-duplex,audiodev=hda -device ich9-ahci,id=sata -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file=/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2 -device ide-hd,bus=sata.2,drive=OpenCoreBoot -device ide-hd,bus=sata.3,drive=InstallMedia -drive id=InstallMedia,if=none,file=/home/arch/OSX-KVM/BaseSystem.img,format=qcow2 -drive id=MacHDD,if=none,file=/home/arch/OSX-KVM/mac_hdd_ng.img,format=qcow2 -device ide-hd,bus=sata.4,drive=MacHDD -netdev user,id=net0,hostfwd=tcp::10022-:22,hostfwd=tcp::5900-:5900, -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:09:49:17 -monitor stdio -boot menu=on -vga vmware -display none -vnc 0.0.0.0:99,password=on -monitor unix:qemu.socket,server,nowait
QEMU 6.0.0 monitor - type 'help' for more information
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
alsa: Could not initialize DAC
alsa: Failed to open `default':
alsa: Reason: No such file or directory
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
alsa: Could not initialize DAC
alsa: Failed to open `default':
alsa: Reason: No such file or directory
audio: Failed to create voice `dac'
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
alsa: Could not initialize ADC
alsa: Failed to open `default':
alsa: Reason: No such file or directory
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
alsa: Could not initialize ADC
alsa: Failed to open `default':
alsa: Reason: No such file or directory
audio: Failed to create voice `adc'
I'm trying run with this command. but still can't connect to VNC
docker run -i -d --name osx_big-sur --device /dev/kvm -p 50922:10022 -p 5999:5999 -v /tmp/.X11-unix:/tmp/.X11-unix -e QEMU_SOCK="${PWD}/qemu.socket" -e USERNAME=test -e PASSWORD=test -e "DISPLAY=${DISPLAY:-:0.0}" -e EXTRA="-display none -vnc 0.0.0.0:99,password=on -monitor unix:qemu.socket,server,nowait" sickcodes/docker-osx:big-sur
This is the log
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 ++ id -u ++ id -g + sudo chown 1000:1000 /dev/kvm ++ id -u ++ id -g + sudo chown -R 1000:1000 /dev/snd + [[ 3 = max ]] + [[ 3 = half ]] ++ id -u ++ id -g + sudo chown -R 1000:1000 /dev/snd + exec qemu-system-x86_64 -m 3000 -cpu Penryn,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check, -machine q35,accel=kvm:tcg -smp 4,cores=4 -usb -device usb-kbd -device usb-tablet -device 'isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc' -drive if=pflash,format=raw,readonly=on,file=/home/arch/OSX-KVM/OVMF_CODE.fd -drive if=pflash,format=raw,file=/home/arch/OSX-KVM/OVMF_VARS-1024x768.fd -smbios type=2 -audiodev alsa,id=hda -device ich9-intel-hda -device hda-duplex,audiodev=hda -device ich9-ahci,id=sata -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file=/home/arch/OSX-KVM/OpenCore-Catalina/OpenCore.qcow2 -device ide-hd,bus=sata.2,drive=OpenCoreBoot -device ide-hd,bus=sata.3,drive=InstallMedia -drive id=InstallMedia,if=none,file=/home/arch/OSX-KVM/BaseSystem.img,format=qcow2 -drive id=MacHDD,if=none,file=/home/arch/OSX-KVM/mac_hdd_ng.img,format=qcow2 -device ide-hd,bus=sata.4,drive=MacHDD -netdev user,id=net0,hostfwd=tcp::10022-:22,hostfwd=tcp::5900-:5900, -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:09:49:17 -monitor stdio -boot menu=on -vga vmware -display none -vnc 0.0.0.0:99,password=on -monitor unix:qemu.socket,server,nowait QEMU 6.0.0 monitor - type 'help' for more information ALSA lib confmisc.c:855:(parse_card) cannot find card '0' ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default alsa: Could not initialize DAC alsa: Failed to open `default': alsa: Reason: No such file or directory ALSA lib confmisc.c:855:(parse_card) cannot find card '0' ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default alsa: Could not initialize DAC alsa: Failed to open `default': alsa: Reason: No such file or directory audio: Failed to create voice `dac' ALSA lib confmisc.c:855:(parse_card) cannot find card '0' ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default alsa: Could not initialize ADC alsa: Failed to open `default': alsa: Reason: No such file or directory ALSA lib confmisc.c:855:(parse_card) cannot find card '0' ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name ALSA lib conf.c:5111:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5599:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default alsa: Could not initialize ADC alsa: Failed to open `default': alsa: Reason: No such file or directory audio: Failed to create voice `adc'
Did you type "change vnc password user" into the Docker terminal and set a password?
i run docker in detach mode, so i can use interactive mode to input password
docker exec -it CHANGE_ME /bin/bash -c "sudo chown -R \$(id -u):\$(id -g) qemu.socket"
sendkeys () {
ARG="${1}"
for (( i = 0; i < "${#ARG}"; i++ )); do
LETTER="${ARG:$i:1}"
echo "sendkey ${LETTER}"
echo "sendkey ${LETTER}" | socat - "${2}"
sleep 0.1
done
}
echo "change vnc password user" | socat - unix-connect:qemu.socket
echo "password" | socat - unix-connect:qemu.socket
When running this, I'm getting that the socket refused connection ^
@GodTamIt Ahh because I didn't add it to the main Dockerfile.
You will have to docker exec -it CHANGE_ME /bin/bash -c "sudo chown -R \$(id -u):\$(id -g) qemu.socket" && bash Launch.sh
Will there also be a bundled docker image that has the no-vnc web client included which could be used in combination with a reverse proxy and an authentication provider?
Thx for the great work on this this project!
@10bn You can do that using https://github.com/dockur/macos
It will be helpful if we can set VNC password using
-e VNC_PASSWORD=<anything>
With NoVNC we are not only can remote using VNC but also from browser. Here the example: https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/
Overall this is greate project. Thanks