Mac虚拟机, 在Win的Linux子系统的Docker里运行MacOS,操作系统大套娃

本期视频Mac虚拟机, 在Win的Linux子系统的Docker里运行MacOS,操作系统大套娃

介绍

这是一个究极套娃的Mac系统。我把它安装到了运行在Windows上的Linux子系统的Docker里面,一下子串联起了三大操作系统。我们可以在这个里面尝试一些Mac的专用软件,开发跨平台的软件,还有测试软件兼容性等等。

本期视频,我们一起来看一下如何部署这个究极套娃系统。本次我使用的项目是Docker-OSX,它可以让你以Docker的方式快速启动一个Mac OS。不过这个项目的硬件要求还是挺高的,普通的Linux小主机的性能是满足不了的,所以这次我准备使用我的Windows电脑运行Docker。

爬爬虾之前有完整视频介绍过WSL(也就是运行在Windows上的Linux子系统),还有讲过Docker Desktop,介绍过Docker的各种玩法。对这块不熟悉的观众朋友们,可以找来那些视频看看基础部分。本期的讲解速度比较快,各位坐稳扶好,我们马上开始。

准备工作

  1. 打开任务管理器,切换到性能CPU,确保这里的CPU虚拟化开启。
  1. 在任务栏搜索功能,点击"启用或关闭Windows功能"。我们拖到最下面,勾选上这两个:"适用于Linux的Windows子系统"和"虚拟机平台",然后点击确定。这里按照提示重新启动电脑。
  1. 在搜索栏中搜索CMD,右键以管理员身份运行命令提示符。我们输入这个命令:

    wsl --install --web-download

如果您的电脑处于国内网络的话,这里我建议加上--web-download,可以减少因为网络问题导致下载失败。然后点击回车,开始安装。

安装WSL

可以看到,这里默认下载的Linux发行版是Ubuntu。它提示我输入一个用户名,这里我当然就输入我的用户名:tech-shrimp 技术爬爬虾。输入一个密码,好,出现到这个界面,我们就安装完成了。

配置WSL

WSL安装完成以后,我们需要修改一下配置:

  1. 进入我的电脑,打开C盘,用户,找到你的用户名字。
  1. 在这个文件夹下面,我们需要新建一个WSL的配置文件。我们新建一下,新建文本文件,这个文件名字是.wslconfig。
  1. 然后我们编辑一下这个文件,右键用记事本打开,添加一行配置。我们可以在这一节Docker-OSX项目的Windows部署文档找到所有需要的配置。我们把这个配置复制过来,拷贝进去,然后保存一下。

    [wsl2]
    nestedVirtualization=true

  2. 这个配置的功能是允许虚拟机的嵌套。修改完成后执行这个命令让配置生效。

安装Docker Desktop

下面我们就来看一下如何使用WSL在电脑上安装Docker。Docker Desktop安装好以后,我们需要修改一下设置:

  1. 点击这个小齿轮,进入设置。
  2. 选择这里的General,我们确保这个选项是勾上的:Use the WSL 2 based engine。
  1. 然后我们点击这里的Resources,选择WSL integration。
  2. 我们勾选上"Enable integration with my default WSL",然后把下面这个Ubuntu这里也勾选上
  1. 右下角点击Apply and restart。

然后我们右键在终端打开,这里就可以开启我们的WSL实例。这里我就选择刚才默认安装的Ubuntu版本。这里输入docker ps,如果能显示出这一行来,说明Docker可以使用。如果不能使用,我们检查一下是否开启了Docker Desktop,是否把这里都勾选上了。

安装KVM和X11

我们按照教程继续操作。这里输入kvm-ok,检查一下kvm是否已经安装了。这里进入我的Ubuntu虚拟机,输入kvm-ok,这里显示找不到命令,我们需要先把kvm安装一下。

不过安装包之前,我们先更新一下apt索引,这是一个好习惯:

复制代码
sudo apt update

然后我们把这一长串的命令拷贝过来安装一下。

复制代码
sudo apt -y install bridge-utils cpu-checker libvirt-clients libvirt-daemon qemu qemu-kvm

我们再输入kvm-ok,这里显示exists,那就成功了。

然后我们还需要再安装一个东西,把这个命令拷贝过来。x11是一个远程桌面的控制软件,把它安装一下。

复制代码
sudo apt install x11-apps -y

运行Docker-OSX

一切准备就绪了,我们可以运行Docker了。这里有很多的Docker命令,对应的不同的版本。这里我使用这个Ventura版本的,我把这个命令复制下来,修改一点东西。

我修改一下这个镜像地址。众所周知的原因,现在从Dockerhub想要拉取一个2GB的镜像是根本不可能的,所以这里我从阿里云的私库拉取。我把前面这一段换成我自己的仓库地址,这是我上传到阿里云的私人仓库的地址。

复制代码
docker run -it \
    --device /dev/kvm \
    -p 50922:10022 \
    -e "DISPLAY=${DISPLAY:-:0.0}" \
    -v /mnt/wslg/.X11-unix:/tmp/.X11-unix \
    -e GENERATE_UNIQUE=true \
    -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom.plist' \
    registry.cn-hangzhou.aliyuncs.com/shrimp-images/docker-osx:ventura

爬爬虾之前还有一个完整项目,介绍如何把Dockerhub的镜像推送到阿里云的私有仓库,可以极大的提高在国内拉取镜像的速度,非常的好用。

最后我把修改好的命令复制下来,粘贴到控制台里,然后回车。

安装MacOS

镜像拉取完以后,它就开始启动了。我们耐心的等待一会儿,等待命令执行到这一行的时候,会弹出一个qemu窗口。我们还是耐心的等待一会儿。

好,到这一步重点来了:

  1. 这里我们需要先点击这个Disk utility,点击Continue。
  1. 这里选择你最大的那块磁盘,这里我是274 GB这个的,然后点击这个Erase。这个系统并不会占你274 GB的空间,它是一个虚拟的磁盘,它是用多少占用多少,所以这里不需要担心。
  1. 我们给这个磁盘起一个名字,这里我叫ShrimpDisk(爬爬虾的磁盘)。
  2. 然后点击Erase,把这个磁盘格式化。点击Done然后我们叉掉这个窗口。
  3. 这里选择第二个Reinstall macOS,点击Continue。
  1. 一路点击Continue,点击Agree,Agree。
  2. 选择我们刚才创建的那个磁盘,点击Continue。

这里显示需要两小时才能安装好,不过一般用不了这么久。我们耐心的等待一会儿。到这个界面,什么也不用点,他会自动进行下一步。然后进入最后的配置,这里我一路点击Continue,能跳过的步骤我都点击跳过,也不需要登录苹果账号。创建一个用户名密码。

总结

这个系统用起来谈不上有多流畅,我觉得最大的作用是给没有Mac设备的人提供一个虚拟环境,可以用来测试软件。

视频的最后,我们来看一下如何保存这个系统以及如何重新启动:

  1. 我们需要关闭系统的时候,直接把这个窗口叉掉就可以了。
  2. 叉掉以后,在Docker这个界面也就停止运行了。
  3. 我们使用docker ps -a这个命令看一下,可以看到容器还在,也就是你的更改都保存在容器里面,但是容器已经停止运行了。
  1. 如果下次还想重启容器的话,我们执行这个命令:

    docker start -ai -i [容器ID]

今天的视频就到这里,感谢大家的点赞支持,我们下期再见。

相关推荐
AlfredZhao7 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346613 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪15 小时前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
AI创界者1 天前
PilotTTS 一键整合包(Win/Mac):8G 显存畅跑,实测解锁情绪与副语言的精准控制
人工智能·macos·aigc·音视频
Alsn861 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
不会C语言的男孩1 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈1 天前
Unix 与 Linux 异同小叙
linux·服务器·unix