本期视频Mac虚拟机, 在Win的Linux子系统的Docker里运行MacOS,操作系统大套娃
介绍
这是一个究极套娃的Mac系统。我把它安装到了运行在Windows上的Linux子系统的Docker里面,一下子串联起了三大操作系统。我们可以在这个里面尝试一些Mac的专用软件,开发跨平台的软件,还有测试软件兼容性等等。
本期视频,我们一起来看一下如何部署这个究极套娃系统。本次我使用的项目是Docker-OSX,它可以让你以Docker的方式快速启动一个Mac OS。不过这个项目的硬件要求还是挺高的,普通的Linux小主机的性能是满足不了的,所以这次我准备使用我的Windows电脑运行Docker。
爬爬虾之前有完整视频介绍过WSL(也就是运行在Windows上的Linux子系统),还有讲过Docker Desktop,介绍过Docker的各种玩法。对这块不熟悉的观众朋友们,可以找来那些视频看看基础部分。本期的讲解速度比较快,各位坐稳扶好,我们马上开始。
准备工作
- 打开任务管理器,切换到性能CPU,确保这里的CPU虚拟化开启。
- 在任务栏搜索功能,点击"启用或关闭Windows功能"。我们拖到最下面,勾选上这两个:"适用于Linux的Windows子系统"和"虚拟机平台",然后点击确定。这里按照提示重新启动电脑。
-
在搜索栏中搜索CMD,右键以管理员身份运行命令提示符。我们输入这个命令:
wsl --install --web-download
如果您的电脑处于国内网络的话,这里我建议加上--web-download,可以减少因为网络问题导致下载失败。然后点击回车,开始安装。
安装WSL
可以看到,这里默认下载的Linux发行版是Ubuntu。它提示我输入一个用户名,这里我当然就输入我的用户名:tech-shrimp 技术爬爬虾。输入一个密码,好,出现到这个界面,我们就安装完成了。
配置WSL
WSL安装完成以后,我们需要修改一下配置:
- 进入我的电脑,打开C盘,用户,找到你的用户名字。
- 在这个文件夹下面,我们需要新建一个WSL的配置文件。我们新建一下,新建文本文件,这个文件名字是.wslconfig。
-
然后我们编辑一下这个文件,右键用记事本打开,添加一行配置。我们可以在这一节Docker-OSX项目的Windows部署文档找到所有需要的配置。我们把这个配置复制过来,拷贝进去,然后保存一下。
[wsl2]
nestedVirtualization=true -
这个配置的功能是允许虚拟机的嵌套。修改完成后执行这个命令让配置生效。
安装Docker Desktop
下面我们就来看一下如何使用WSL在电脑上安装Docker。Docker Desktop安装好以后,我们需要修改一下设置:
- 点击这个小齿轮,进入设置。
- 选择这里的General,我们确保这个选项是勾上的:Use the WSL 2 based engine。
- 然后我们点击这里的Resources,选择WSL integration。
- 我们勾选上"Enable integration with my default WSL",然后把下面这个Ubuntu这里也勾选上
- 右下角点击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窗口。我们还是耐心的等待一会儿。
好,到这一步重点来了:
- 这里我们需要先点击这个Disk utility,点击Continue。
- 这里选择你最大的那块磁盘,这里我是274 GB这个的,然后点击这个Erase。这个系统并不会占你274 GB的空间,它是一个虚拟的磁盘,它是用多少占用多少,所以这里不需要担心。
- 我们给这个磁盘起一个名字,这里我叫ShrimpDisk(爬爬虾的磁盘)。
- 然后点击Erase,把这个磁盘格式化。点击Done然后我们叉掉这个窗口。
- 这里选择第二个Reinstall macOS,点击Continue。
- 一路点击Continue,点击Agree,Agree。
- 选择我们刚才创建的那个磁盘,点击Continue。
这里显示需要两小时才能安装好,不过一般用不了这么久。我们耐心的等待一会儿。到这个界面,什么也不用点,他会自动进行下一步。然后进入最后的配置,这里我一路点击Continue,能跳过的步骤我都点击跳过,也不需要登录苹果账号。创建一个用户名密码。
总结
这个系统用起来谈不上有多流畅,我觉得最大的作用是给没有Mac设备的人提供一个虚拟环境,可以用来测试软件。
视频的最后,我们来看一下如何保存这个系统以及如何重新启动:
- 我们需要关闭系统的时候,直接把这个窗口叉掉就可以了。
- 叉掉以后,在Docker这个界面也就停止运行了。
- 我们使用
docker ps -a
这个命令看一下,可以看到容器还在,也就是你的更改都保存在容器里面,但是容器已经停止运行了。
-
如果下次还想重启容器的话,我们执行这个命令:
docker start -ai -i [容器ID]
今天的视频就到这里,感谢大家的点赞支持,我们下期再见。