Eugene Kalinin ce10d549dc fix(vz): stop the VM even when CanRequestStop is false
`LimaVzDriver.Stop()` returned an error without stopping the VM when
`CanRequestStop()` reported false, and it never removed the driver PID file.

When launchd sends SIGTERM to the host agent of a LaunchDaemon instance, the
host agent exits with `vz: CanRequestStop is not supported` and leaves `vz.pid`
behind. Within the same boot this is harmless, because `ReadPIDFile` removes
the PID file of a dead process, but after a reboot the recorded PID may have
been reused by an unrelated process. The instance then shows up as `Broken`
with "vz driver is running but host agent is not", and launchd with
`KeepAlive` crash-loops `limactl start`.

Ask the guest to shut down over SSH whenever the request could not be made
through the Virtualization framework, not only for the macOS guests that ignore
`RequestStop()`. The VM is never stopped forcibly with `VirtualMachine.Stop()`:
that does not give the guest a chance to stop cleanly, and may corrupt the disk.

Always remove the PID file when the driver stops, as the qemu and krunkit
drivers already do.

Related to #5087

Signed-off-by: Eugene Kalinin <e.v.kalinin@gmail.com>
2026-09-13 20:33:10 +03:00
2026-02-20 20:45:52 -08:00
2022-03-10 16:59:23 +09:00
2021-05-14 16:28:44 +09:00

[🌎Web site] [📖Documentation] [👤Slack (#lima)]

Shows a stylized 'Lima' text in bold, modern font

Lima: Linux Machines

Ask DeepWiki OpenSSF Best Practices OpenSSF Scorecard

Lima launches Linux virtual machines with automatic file sharing and port forwarding (similar to WSL2).

The original goal of Lima was to promote containerd including nerdctl (contaiNERD ctl) to Mac users, but Lima can be used for non-container applications as well.

Lima also supports other container engines (Docker, Podman, Kubernetes, etc.) and non-macOS hosts (Linux, NetBSD, etc.).

Getting started

Set up (Homebrew):

brew install lima
limactl start

To run Linux commands:

lima uname -a

To run containers with containerd:

lima nerdctl run --rm hello-world

To run containers with Docker:

limactl start template:docker
export DOCKER_HOST=$(limactl list docker --format 'unix://{{.Dir}}/sock/docker.sock')
docker run --rm hello-world

To run containers with Kubernetes:

limactl start template:k8s
export KUBECONFIG=$(limactl list k8s --format 'unix://{{.Dir}}/copied-from-guest/kubeconfig.yaml')
kubectl apply -f ...

See https://lima-vm.io/docs/ for the further information.

Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Developer Certificate of Origin (DCO): All commits must be signed off with git commit -s
  • Code licensing and pull request guidelines
  • Testing requirements

Community

Adopters

Container environments:

  • Rancher Desktop: Kubernetes and container management to the desktop
  • Colima: Docker (and Kubernetes) on macOS with minimal setup
  • Finch: Finch is a command line client for local container development
  • Podman Desktop: Podman Desktop GUI has a plug-in for Lima virtual machines

GUI:

Communication channels

Social media accounts

Follow us for project updates, release announcements, and community news:

Code of Conduct

Lima follows the CNCF Code of Conduct.


We are a Cloud Native Computing Foundation incubating project.

The Linux Foundation® (TLF) has registered trademarks and uses trademarks. For a list of TLF trademarks, see Trademark Usage.

Languages
Go 79.1%
Shell 18.5%
Makefile 1.5%
HTML 0.4%
PowerShell 0.4%