MacOS以其流畅性和简介性,被大家所熟知,但没有实际体验过,接下来我将介绍自己基于Windows 11 的WSL2子系统,借助Docker来运行MacOS,帮助大家可以实际上手体验。
文章目录
一、说明
特别鸣谢,本文实际安装教程,主要参照如下两篇博客,并结合了自己实际中遇到的问题,重新进行了梳理存档,仅供学习交流使用。
参考博客:
告别黑苹果 !Docker-OSX:Windows11 wsl2子系统直接在 Docker 上一键部署安装 macOS 系统
手把手教你在Windows上通过Docker运行MacOS,超炫酷!
以下是本文使用的windows系统和版本:Windows11 专业版 24H2。
二、环境准备
需要确保windows 11 开启了虚拟化的功能以及,安装和更新了最新的WSL2。
1. 确认开启了CPU虚拟化
打开计算机任务管理器,切换到性能-CPU 查看虚拟化状态,如下图:
如果已开启则进入下一步,否则,需要电脑重启,进入BIOS界面,进行高级CPU配置,使能相应的CPU虚拟化功能。
2. 启用WSL子系统
打开控制面板,进入程序的卸载程序面板:
配置:启用或关闭windows功能选项,在其中找到并勾选虚拟化平台和linux的子系统的能力,并重启电脑。
3. 安装Linux子系统
直接在微软应用商城中,搜索ubuntu即可,点击下载。我选择的最新的Ubuntu 24.04.1 LTS
注:默认不会自动安装,需要在任务栏搜索下载的ubuntu,进行打开输入用户名以及两次密码,才能安装完成。
然后,windows就会自动开始安装ubuntu,在cmd窗口输入用户名和密码即可!
4. 配置开启wls虚拟机嵌套
在进入系统盘下的用户目录,本地磁盘C->用户->用户名目录,并配置文件管理器的查看选项,使其显示隐藏项目。
如下:
然后,在此目录下新建一个文件,命名为.wslconfig,文件内容如下,其中的memory可以根据自己的电脑适当调整。
[wsl2]
memory=16GB
nestedVirtualization=true
[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
5. 安装docker
下载地址:https://docs.docker.com/desktop/install/windows-install/
1、点击windows版本进行下载:
2、直接默认安装在C盘,进行正常安装
3、出现提示时,确保选中配置也上的WSL2的选项,一般默认两个选项都选择。
4、启动Docker后,可以选择不登陆,直接点击“齿轮”进行设置。
以此点击如下配置:
(如果这里没有显示自己安装的ubuntu版本,可以打开一下安装包,确认自己是否安装了还是只是下载了,通过看自己有无设置用户名和密码验证)
最后,点击Apply&restart,重启Docker
至此,所有准备工作就绪,准备构建镜像安装macOS。
三、构建镜像:
更新一下仓库的包:
1、安装KVM:
执行如下命令进行安装:
sudo apt -y install bridge-utils cpu-checker libvirt-clients libvirt-daemon qemu qemu-kvm
执行kvm-ok命令,出现如下提示,表示安装成功。
2、安装x11工具
sudo apt install x11-apps -y
3、安装Docker-OSX镜像
1、子系统验证子系统是否正常,执行如下指令
docker ps
返回如下信息,说明docker正常:
2、验证docker正常之后,执行如下代码,拉去镜像并部署容器:
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
3、容器安装成功之后,会自动弹出一个图形化界面,进行macos安装。选择macos base system
之后,点击顶部file,配置安装语言切换为中文。
4、点击选择第二个磁盘,然后,设置名称为macos
具体安装系统教程,请参考此博客进行安装即可。
四、遇到的问题与解决
1、安装镜像提示如下报错:
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 10 ms: Couldn't connect to server
解决方法:
1、打开 https://www.ipaddress.com/ 查看IP address,获得对应的IP。(需要VPN)
2、使用sudo vim /etc/hosts命令打开不能访问的机器的hosts文件,添加如下内容:
185.199.108.133 raw.Githubusercontent.com
185.199.109.133 raw.Githubusercontent.com
185.199.110.133 raw.Githubusercontent.com
185.199.111.133 raw.Githubusercontent.com
如果是基于windows的WSL2,也需要编辑一下windows下的host文件。
对于 Windows,请在以下路径中打开 host 文件,也需要添加上述内容。
C:\Windows\System32\drivers\etc\hosts
再次执行相关命令,就不会出现无法访问的错误了。
2、kvm安装失败
可以按照如下方法进行检查:
使用grep指令,检查硬件是否支持虚拟化
grep -Eoc '(vmx|svm)' /proc/cpuinfo
如果你的 CPU 支持硬件虚拟化,这个命令将会打印出大于0的数字,这代表 CPU 核心数目。否则,如果输出为0,它意味着这个 CPU 不支持硬件虚拟化。
在一些机器上,虚拟化技术可能被厂商在 BIOS 中禁用了。
想要检查 VT 是否在 BIOS 中启用了,使用kvm-ok工具,它被包含在cpu-checker软件包。以 root 或者其他有 sudo 权限用户身份运行下面的命令,安装这个软件包:
sudo apt update
sudo apt install cpu-checker
一旦安装完成,检查你的系统是否可以运行硬件加速的 KVM 虚拟机:
kvm-ok
如果处理器虚拟化能力没有在 BIOS 中被禁用,命令将会打印出:
INFO: /dev/kvm exists
KVM acceleration can be used
上述解决方案参考此[博客]。(https://cloud.tencent.com/developer/article/1657533)