Lima is a solution for macOS for managing Linux VM on macOS which plays well with Dev Containers. It has several advantages over Docker Desktop for macOS or Podman.
Let’s see how it can be used for the development of software for embedded hardware like ESP32-C3 using source code from Ferrous Systems training:
git clone https://github.com/ferrous-systems/espressif-trainings.git
Install Lima and Docker-CLI:
brew install lima docker
Create Linux VM with Dockerd (following instructions from Kevin O’Brien – Utilizing Docker CLI without Docker Desktop):
curl https://raw.githubusercontent.com/lima-vm/lima/master/examples/docker.yaml -O limactl start ./docker.yaml limactl shell docker sudo systemctl enable ssh.service
There is one important tweak in the Lima configuration. It’s necessary to enable write operation otherwise, the workspace mounted from VS Code is read-only. Open file ~/.lima/docker/lima.yaml and add writable flag to desired folder:
mounts: - location: "~" writable: true
Restart Lima to apply changes.
limactl stop docker limactl start docker
Create context for Docker-CLI to connect to dockerd running in the VM:
docker context create lima --docker "host=unix://${HOME}/.lima/docker/sock/docker.sock" docker context use lima
Open VS Code with the installed Remote Container plugin and click Re-Open in Container:
cd espressif-trainings code .
Open terminal in VS Code and build the example:
cd intro/hardware-check cp cfg.toml.example cfg.toml cargo build
Flashing of the resulting file could be done by espflash and mounting the device to Lima or using a tool like Adafruit WebSerial ESPTool. The file for flashing is located in the directory target/release.