From 6e75e37eb0760e7fb27ea35909b3e738467e9107 Mon Sep 17 00:00:00 2001 From: FredWuCZ Date: Thu, 17 Oct 2024 13:05:29 +0800 Subject: [PATCH] Enable Windows VM in Docker --- desktop_env/providers/docker/manager.py | 4 ++-- desktop_env/providers/docker/provider.py | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/desktop_env/providers/docker/manager.py b/desktop_env/providers/docker/manager.py index 04ab5a1..58a52aa 100644 --- a/desktop_env/providers/docker/manager.py +++ b/desktop_env/providers/docker/manager.py @@ -27,7 +27,7 @@ MAX_RETRY_TIMES = 10 RETRY_INTERVAL = 5 UBUNTU_X86_URL = "https://huggingface.co/datasets/xlangai/ubuntu_osworld/resolve/main/Ubuntu.qcow2" -WINDOWS_X86_URL = r"https://huggingface.co/datasets/xlangai/windows_osworld/resolve/main/Windows%2010%20x64%20-%20copy.qcow2" +WINDOWS_X86_URL = r"https://huggingface.co/datasets/xlangai/windows_osworld/resolve/main/Windows-10-x64.qcow2" VMS_DIR = "./docker_vm_data" # Determine the platform and CPU architecture to decide the correct VM image to download @@ -120,7 +120,7 @@ class DockerVMManager(VMManager): def get_vm_path(self, os_type, region): global URL, DOWNLOADED_FILE_NAME if os_type == "Ubuntu": - URL = WINDOWS_X86_URL + URL = UBUNTU_X86_URL elif os_type == "Windows": URL = WINDOWS_X86_URL DOWNLOADED_FILE_NAME = URL.split('/')[-1] diff --git a/desktop_env/providers/docker/provider.py b/desktop_env/providers/docker/provider.py index 443e736..bc382e7 100644 --- a/desktop_env/providers/docker/provider.py +++ b/desktop_env/providers/docker/provider.py @@ -33,8 +33,7 @@ class DockerProvider(Provider): def start_emulator(self, path_to_vm: str, headless: bool, os_type: str): logger.info(f"Occupying ports: {self.vnc_port}, {self.server_port}, {self.chromium_port}") - uefi_rom_file = os.path.join(os.path.dirname(path_to_vm), "edk2-x86_64-code.fd") - self.container = self.client.containers.run("osworld-docker", environment=self.environment, cap_add=["NET_ADMIN"], devices=["/dev/kvm"], volumes={os.path.abspath(path_to_vm): {"bind": "/System.qcow2", "mode": "ro"}, os.path.abspath(uefi_rom_file): {"bind": "/storage/edk2-x86_64-code.fd", "mode": "ro"}}, ports={8006: self.vnc_port, 5000: self.server_port, 9222: self.chromium_port}, detach=True) + self.container = self.client.containers.run("happysixd/osworld-docker", environment=self.environment, cap_add=["NET_ADMIN"], devices=["/dev/kvm"], volumes={os.path.abspath(path_to_vm): {"bind": "/System.qcow2", "mode": "ro"}}, ports={8006: self.vnc_port, 5000: self.server_port, 9222: self.chromium_port}, detach=True) def download_screenshot(ip, port): url = f"http://{ip}:{port}/screenshot" try: