如何注册 Lima 实例在用户登录时自动启动(limactl autostart)?
【免费下载链接】limaLinux virtual machines, with a focus on running containers项目地址: https://gitcode.com/GitHub_Trending/lim/lima
如果你已经有可用的 Lima 实例,但每次登录后都要手动执行limactl start才能使用容器或开发环境,可以用limactl autostart把实例注册为"用户登录时自动启动"。Lima >= 2.2 提供该命令,支持 macOS 和 Linux;在 macOS 上它安装一个 LaunchAgent,在 Linux 上安装一个 systemd 用户服务。注册完成后,实例会在下一次登录以及之后的每次登录时于后台自动启动。旧命令limactl start-at-login自 v2.2 起已废弃,由limactl autostart取代(详见 website/content/en/docs/usage/autostart.md)。
前提条件
- 已安装 Lima >= 2.2(autostart 文档中给出的版本要求)。
- 目标实例已存在。
limactl autostart enable INSTANCE会先查找实例,实例不存在时命令直接报错instance "..." not found(见 cmd/limactl/autostart.go 的autostartEnableAction),所以不要对尚未limactl create的名称注册。
注册实例在登录时自动启动
在宿主机(macOS 或 Linux)的终端执行:
limactl autostart enable defaultdefault是实例名,替换为你自己的实例名称。--condition参数默认为login(用户登录时启动),所以上面命令无需额外参数即可实现"登录时自动启动";可选值只有login和boot,其中boot(系统启动时、早于任何用户会话启动)仅 macOS 支持,本文不展开。
注册成功时命令输出:
Instance "default" registered to start at login各平台写入的位置不同:
- macOS:在
~/Library/LaunchAgents/安装 LaunchAgent(服务名为io.lima-vm.autostart.<实例名>,见 pkg/autostart/launchd/launchd.go)。 - Linux:安装 systemd 用户服务
lima-vm@<实例名>.service,单元模板以limactl start %i --foreground启动实例(见 pkg/autostart/systemd/lima-vm@INSTANCE.service)。
注册完成后,退出并重新登录用户会话,实例会在后台自动启动;之后的每次登录同样会自动启动。
可选:关闭意外退出后的自动重启(keep-alive)
默认--keep-alive=true:如果 Lima host agent 意外退出,系统会自动重启它。要禁用该行为,注册时显式传入--keep-alive=false:
limactl autostart enable --keep-alive=false default该参数在两种平台上的具体作用不同(来自 autostart 文档的 Keep-alive behavior 一节):
- macOS(LaunchAgent 场景):launchd 是否会在 host agent 意外退出后自动重启它;
- Linux(systemd 用户服务):写入单元文件的
Restart=指令——启用时(默认)为on-failure,禁用时为no。
验证注册结果
文档给出的成功条件是:实例在下一次登录及之后的每次登录时于后台自动启动。可以按下面两步核对:
- 注册时确认命令输出
registered to start at login,且未出现failed to register ...错误。 - 重新登录后确认实例确实在后台运行(例如通过
limactl list查看实例状态,或用limactl shell default进入实例验证)。
另外,注册文件本身也落在文档说明的固定位置:macOS 在~/Library/LaunchAgents/,Linux 在用户级 systemd 配置目录中,可直接查看确认已写入。
取消注册
要移除自动启动,执行:
limactl autostart disable default输出为:
Instance "default" unregistered from start at login如果该实例本来就没有注册,命令会提示Instance "default" is not registered for automatic startup,可借此确认注册确实已被清除。在 macOS 上disable会先检查 LaunchAgent,若未命中再检查系统级 LaunchDaemon 并卸载(见 cmd/limactl/autostart_darwin.go)。
版本边界
Lima < 2.2 没有autostart命令,需要继续使用已废弃的start-at-login,其等价关系为limactl start-at-login等价于limactl autostart enable --condition=login:
# 注册 limactl start-at-login default # 取消注册 limactl start-at-login --enabled=false default升级到 Lima >= 2.2 后建议改用limactl autostart,start-at-login仅作为旧版本的兼容路径存在(源码中已标记Deprecated,见 cmd/limactl/start-at-login.go)。
【免费下载链接】limaLinux virtual machines, with a focus on running containers项目地址: https://gitcode.com/GitHub_Trending/lim/lima
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考