使用 Docker-OSX 在虚拟机中安装 macOS Big Sur 或 Catalina

Docker-OSX 是一个在 Docker 容器内使用 OSX-KVM 使 macOS 接近原生运行的项目。 使用它,您将能够在 QEMU 虚拟机(通过 Docker)中安装 macOS,并运行 macOS Catalina 或 Big Sur 桌面,或引导至 OSX shell。

Docker-OSX 项目提供了四个 Docker 镜像:

  • sickcodes/docker-osx:latest – 使用 macOS Catalina 的原始基础恢复映像
  • sickcodes/docker-osx:big-sur – 使用 macOS Big Sur 的原始基础恢复映像
  • sickcodes/docker-osx:naked – 提供您自己的 .img 文件 (使用 -v "${PWD}/disk.img:/image")
  • sickcodes/docker-osx:auto – 大 (~19.4GB) docker 镜像,可引导至 OSX shell (已启用 SSH,使用 user 作为用户名,alpine 作为密码;您需要大约 50GB 的磁盘空间来运行此映像)

功能包括:

  • X11转发
  • 全自动模式:直接启动到 OSX shell,甚至将命令作为运行时参数运行
  • Kubernetes 掌舵图。 见 ./helm
  • SSH 开启 localhost:50922
  • VNC 版本在 localhost:8888 (由于使用 VNC 存在安全风险,VNC 版本在单独的目录中)
  • 使用 docker commit 创建一个完全相同容器的 ARMY
  • Xfvb 无头模式

该项目还包括各种调整说明,例如转发额外端口、更改屏幕分辨率、启用网络转发、允许 USB 直通、使用大型预制图像和使用您自己的图像的快速启动说明等(所有这些都可在项目页面)。

值得注意的是,Apple 从一开始就不允许在非 Apple 硬件上安装 macOS,因此要合法使用它,您的操作系统必须安装在 Apple 硬件上。 另外,要使用它,您的计算机 CPU 需要支持硬件虚拟化; 从这里查看 KVM 清单以了解您的 CPU 是否支持它(您也可以运行 sudo 如果一切正常,kvm-ok 将返回“可以使用 KVM 加速”)。

在我的 Ubuntu 20.10 桌面上,使用 sickcodes/docker-osx:big-sur 图像花了大约 55 分钟。 Docker 镜像占用大约 3.2 GB 的磁盘空间,而容器空间使用量约为 35 GB。

您可能还想看看 Sosumi,一个可以在 Linux 上的虚拟机中轻松下载和安装 macOS Catalina 的 snap 包,它也使用 QEMU + KVM,并且基于 macOS-Simple-KVM。 值得注意的是,Sosumi 自首次发布以来一直没有更新。

您将在下面找到有关使用 Docker (Docker-OSX) 运行 macOS(Catalina 或 Big Sur)基本恢复映像、安装和运行 macOS 的说明(可以选择设置自定义分辨率;未指定选项时使用 1920×1080) . 还有移除容器的说明。

LazyDocker:Docker 和 Docker Compose 终端 UI

如何使用 Docker-OSX 在 QEMU + KVM 中安装 macOS (OSX)

1. 先决条件。

在继续之前,请确保您的计算机支持硬件虚拟化并在 BIOS 中启用它(您可以使用 sudo kvm-ok 如果一切正常,它将返回“可以使用 KVM 加速”)。 完成此操作后,您可以继续执行下面的其余说明。

首先确保您已安装 Docker(另请参阅官方 Docker 安装文档)。

如果您还没有在主机系统上安装 QEMU。 您可能还需要使用将您的用户添加到 kvm 组 sudo usermod -aG kvm $USER 使其正常工作。

至于所需的磁盘空间,请阅读本文后面的评论以进行粗略估计。 为了 sickcodes/docker-osx:auto 您需要大约 50 GB 的磁盘空间才能使用它。

2. 启动 Docker-OSX。

使用 Docker-OSX 运行 macOS Big Sur 或 Catalina (对于其他选项,请参阅 Docker-OSX 项目页面 – 例如,您可以无头运行它,使用您自己的映像,运行病码/docker-osx:latest 允许 SSH 进入 macOS 等;您可能还想查看这些自定义可用于设置 CPU 内核数、可用 RAM 等的 QEMU 参数):

  • 运行 macOS Big Sur (改变 WIDTHHEIGHT 要用于 macOS Big Sur 虚拟机的屏幕分辨率的值; 我在下面使用 1600×900)使用基本恢复映像:
docker run -it 
    --device /dev/kvm
    -p 50922:10022
    -e DEVICE_MODEL="iMacPro1,1"
    -e WIDTH=1600
    -e HEIGHT=900
    -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:big-sur

  • 运行 macOS Catalina (改变 WIDTHHEIGHT 要用于 macOS Big Sur 虚拟机的屏幕分辨率的值; 我在下面使用 1600×900)使用基本恢复映像:
docker run -it 
    --device /dev/kvm
    -p 50922:10022
    -e GENERATE_UNIQUE=true
    -e DEVICE_MODEL="iMacPro1,1"
    -e WIDTH=1600
    -e HEIGHT=900
    -v /tmp/.X11-unix:/tmp/.X11-unix
    -e "DISPLAY=${DISPLAY:-:0.0}"
    sickcodes/docker-osx:latest

这可能需要几分钟的时间。

上述 Docker 运行命令使用了使用 Docker 在 QEMU 中启动 macOS 的基本选项(基本恢复映像,用于安装 macOS),由 Docker-OSX 项目页面提供,并添加了屏幕分辨率选项。 如果您删除 GENERATE_UNIQUE, DEVICE_MODEL, WIDTHHEIGHT 选项,虚拟机将使用默认 (1920×1080) 屏幕分辨率。

3.使用磁盘工具格式化最大的QEMU HARDDISK。

几分钟后,macOS 虚拟机将启动。 启动到 macOS 基本系统并选择 Disk Utility 从菜单:

接下来,在“磁盘工具”工具中,从 2 QEMU HARDDISK Media 中检查左侧最大的硬盘,然后单击最大的(在我用于测试的版本中为 214,75 GB)。

提示:要让 QEMU 虚拟机松开鼠标,请按 Ctrl + Alt + g (在某些情况下,这只是 Ctrl + g)。

现在点击 Erase 磁盘工具工具栏上的按钮来格式化这个硬盘:

macOS QEMU Docker 磁盘实用程序

为磁盘设置一个名称,例如“macOS”,并将其他选项保留为默认值(它们是 Format: APFS for macOS Big Sur 和 Mac OS Extended (Journaled) for macOS Catalina,架构是 GUID 分区映射) )。

擦除最大的 QEMU 硬盘后, close 磁盘工具对话框。

4.在虚拟机中安装macOS。

关闭磁盘工具后,您将再次进入可以启动磁盘工具等的菜单。不过这一次,您需要选择选项 Reinstall macOS Big Sur (或者,如果您使用的是 sickcodes/docker-osx:latest 具有 Catalina 的图像,此选项仅称为 Reinstall macOS):

点击 Continue, 然后 Agree,您将进入一个屏幕,您可以从中选择您在第 3 步中格式化的硬盘(它使用您在擦除时输入的名称显示,例如 macOS 在我们的例子中)。 选择硬盘并单击 Continue

macOS QEMU Docker 选择磁盘

macOS Big Sur / Catalina(取决于您选择的图像)安装现在将开始:

macOS QEMU Docker 安装

一段时间后,mac OSX 虚拟机将重新启动。 选择 macOS Installer 启动项:

macOS QEMU Docker 安装程序

安装完成后,此引导条目将变为“macOS”,并允许您在虚拟机内引导到新的 macOS 安装:

macOS QEMU Docker macOS 启动菜单

现在您需要选择您所在的国家或地区,可选择使用您的 Apple ID 登录,同意条款和条件等,以及创建您的计算机帐户(用户名和密码)。

请注意,在安装 macOS 并首次启动后,我不得不选择两次 macOS 条目(第一次选择它后重新启动)。 还, 在 macOS 安装过程中存在鼠标滞后(和一般滞后),但是一旦您运行已安装的 macOS 虚拟机,这种情况就不再发生(或者不太明显;这取决于您的计算机硬件).

5. 启动新安装的 macOS 虚拟机。

当您要启动新安装的 macOS 虚拟机时,请运行 docker ps -a 查看容器 ID 和/或名称:

docker ps -a

然后启动容器:

docker start Container_ID_or_Name

代替 Container_ID_or_Name 使用上一个命令获得的容器 ID 或名称。

Portainer:用于远程或本地使用的基于 Web 的 Docker GUI

如何删除 Docker-OSX

所以你已经决定要删除 Docker-OSX。 首先运行以下命令以获取 Docker 容器名称和 ID 的列表:

docker container ls -a

使用此命令,确定要删除的容器。 现在使用以下命令停止并移除容器:

docker container stop ID_or_Image

docker container rm ID_or_Image

代替 ID_or_Image 使用上一个命令获得的容器 ID 或图像。

要删除 Docker-OSX 镜像,首先使用以下命令列出现有的 Docker 镜像:

docker image ls

接下来,使用以下命令删除 Docker-OSX 映像:

docker image rm Image_ID

代替 Image_ID 使用您使用上一个命令获得的图像 ID。

通过 cerebrux.net (GR)