如何在 Lima 中启动 macOS 访客并获取登录密码?
【免费下载链接】limaLinux virtual machines, with a focus on running containers项目地址: https://gitcode.com/GitHub_Trending/lim/lima
本文解决一个具体任务:在 macOS 主机上,用 Lima 创建一个 macOS 虚拟访客(guest),启动后拿到 GUI 会话的登录密码。macOS 访客自 Lima v2.1 起以实验性(experimental)方式支持,文档给出的前置要求是Lima >= 2.1、macOS 主机、ARM 架构;macOS 访客只支持vz(Virtualization.framework)这一种 VM 类型,而vz本身要求 macOS 13.0 或更高版本。
准备条件
- 主机为 Apple Silicon(ARM)Mac,macOS 13.0 及以上(
vz虚拟化的要求); - Lima 版本不低于 2.1(
template:macos对应的 模板 中声明了minimumLimaVersion: 2.1.0); - macOS 镜像定义 中
arch: aarch64、os: Darwin,并注释说明 "vz is the only supported VM type for macOS guests",无需手动指定vmType。
启动 macOS 访客
在主机终端执行:
limactl start template:macos如果启动过程中出现交互提示,选择Proceed with the current configuration,然后等待终端打印READY(文档示例输出形如INFO[0029] READY. Run 'lima' to open the shell.)。
这里实例名默认取自模板名,即macos,后续命令都以该实例名为准。
可选分支:如果目标是把brew放进一个隔离的 macOS 环境,可以改用带 Homebrew 预装的模板:
limactl start template:homebrew-macos该 模板 在访客内用lima-sudo-askpass.sh脚本读取$HOME/password来自动完成 Homebrew 的非交互安装;文档注释说明这个脚本只用于初始设置,用户改密后即失效。
关于显示:macOS 安装器似乎要求存在显示设备,因此 templates/macos.yaml 中固定设置了video.display: "default"。访客启动后会在 GUI 会话中登录,此时需要用密码登录。
获取登录密码
文档说明:用户密码是随机生成的,存放在访客内的~/password文件中(/Users/<用户名>.guest目录下的password),并建议在首次登录后修改它。
在主机上执行:
limactl shell macos cat /Users/${USER}.guest/password其中${USER}是主机环境变量,会被 shell 展开为当前用户名;/Users/<用户名>.guest是 macOS 访客中独立的 guest home 目录(区别于只读挂载的/Users/<用户名>)。输出即 GUI 会话登录所需的密码。
验证访客可用
密码取到后,可以用一条 shell 命令确认实例已进入可执行状态:
limactl shell macos uname -alimactl shell <实例> <命令>用于在访客内执行命令,能正常返回输出即说明访客已启动、shell 通道可用;GUI 侧则用取到的密码完成首次登录。
已知限制(来自文档 Caveats)
macOS 访客与 Linux 访客的行为差异和当前不支持项,启动前需要知道:
- 密码登录已启用(Linux 访客默认是密钥登录);
- 无密码 sudo 在 macOS 访客上被禁用,仅
/sbin/shutdown -h now例外,且目前不可配置; - 不支持关闭视频显示;
- 不支持自动端口转发,需要手动用
ssh -L转发,或改用vzNAT网络按 IP 访问访客; - 不支持安装自定义
caCerts; - 无论何种模式,macOS 访客都不可用 containerd 和自动端口转发(plain 模式在此之上仅再禁用宿主目录挂载)。
可选:跳过首次登录设置向导
首次 GUI 登录时 macOS 会显示 Setup Assistant 系列设置界面。如果做自动化或无头式的 macOS 访客,可以在实例配置中设置(要求 Lima >= 2.3、macOS >= 13.0):
osOpts: Darwin: suppressFirstLoginSetup: true该项会让 Lima 在 provisioning 阶段、任何 GUI 会话开始之前,以 root 身份预写入com.apple.SetupAssistant.plist并预配置com.apple.SoftwareUpdate系统偏好,从而跳过设置界面和“自动更新 Mac”对话框。默认为未设置,即正常显示设置界面。若需完全自定义该 plist,可另用suppressFirstLoginSetupPlist逐字提供内容(此时文档说明不会再做<build>/<version>的版本替换,需要自行填入目标系统的构建号与版本号)。
参考资料
- macOS 访客文档:启动命令、密码位置、Caveats 与首次登录抑制
- template:macos / template:homebrew-macos:两个模板的完整定义
- vz 虚拟机类型说明:
vz的版本要求与已知问题
【免费下载链接】limaLinux virtual machines, with a focus on running containers项目地址: https://gitcode.com/GitHub_Trending/lim/lima
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考