Lima: подсистема macOS для Linux
Lima запускает виртуальные машины Linux на macOS с автоматическим общим доступом, переадресацией портов и средой выполнения контейнеров containerd.
Lima можно рассматривать как своего родна неофициальную подсистему macOS для Linux или containerd для Mac.
Примеры
Консольная UNIX-утилита uname
$ uname -a Darwin macbook.local 20.4.0 Darwin Kernel Version 20.4.0: Thu Apr 22 21:46:47 PDT 2021; root:xnu-7195.101.2~1/RELEASE_X86_64 x86_64 $ lima uname -a Linux lima-default 5.11.0-16-generic #17-Ubuntu SMP Wed Apr 14 20:12:43 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ LIMA_INSTANCE=arm lima uname -a Linux lima-arm 5.11.0-16-generic #17-Ubuntu SMP Wed Apr 14 20:10:16 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
Совместное использование файлов в macOS и Linux
$ echo "files under /Users on macOS filesystem are readable from Linux" > some-file $ lima cat some-file files under /Users on macOS filesystem are readable from Linux $ lima sh -c 'echo "/tmp/lima is writable from both macOS and Linux" > /tmp/lima/another-file' $ cat /tmp/lima/another-file /tmp/lima is writable from both macOS and Linux"
Запуск контейнеров containerd (вместе с контейнерами Docker)
$ lima nerdctl run -d --name nginx -p 127.0.0.1:8080:80 nginx:alpine
http://127.0.0.1:8080 доступен как из macOS, так и из Linux.
Примечание: привилегированные порты (0-1023) не могут быть перенаправлены.
Используйте containerd и nerdctl (containerd ctl).
Начало работы
Требования (Intel Mac)
- Программа для эмуляции аппаратного обеспечения QEMU
(brew install qemu);
- Выполните следующие команды, чтобы включить
--accel=hvf
:
cat >entitlements.xml <<EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.hypervisor</key> <true/> </dict> </plist> EOF codesign -s - --entitlements entitlements.xml --force /usr/local/bin/qemu-system-x86_64
Требования (ARM Mac
- QEMU c поддержкой
--accel=hvf
. Доступна здесь.
Примечание: Lima не тестируется на ARM Mac.
Установка
Загрузите архив с бинарными файлами и распакуйте его в директории /usr/local
.
Для установки исходников запустите make && make install
.
Использование
- Запустите , чтобы запустить экземпляр Linux. Имя экземпляра по умолчанию —
default
. Lima автоматически открывает редактор(vi)
для просмотра и изменения конфигурации. Подождите, пока на главном терминале не появится надписьREADY
; - Запустите
limactl shell <INSTANCE> <COMMAND>
чтобы запустить <COMMAND> на Linux. Для экземпляраdefault
эта команда может быть сокращена просто доlima <COMMAND>
. Командаlima
также принимает имя экземпляра как переменную среды$LIMA_INSTANCE
; - Запустите
limactl ls
, чтобы отобразить экземпляры; - Запустите
limactl delete <INSTANCE>
, чтобы удалить экземпляр; - Чтобы включить завершение bash, добавьте
source <(limactl completion bash)
в~/.bash_profile
.
Примечание: обязательно сделайте резервную копию ваших данных перед запуском Lima, потому что в ней могут содержаться ошибки, приводящие к потере данных. Особенно уязвимы следующие типы данных:
- Данные в общих каталогах с возможностью записи (по умолчанию —
/tmp/lima
), вероятно, после гибернации хост-машины (например, после закрытия и повторного открытия крышки ноутбука); - Данные в образе VM — в основном при обновлении Lima.
Конфигурация
Смотреть здесь.
Текущая спецификация:
- ОС: Ubuntu 21.04 (Hirsute Hippo);
- ЦП (x86_64): Haswell v4, 4 cores;
- ЦП (aarch64): Cortex A72, 4 cores;
- Память: 4 GB;
- Диск: 100 GB;
- Mounts:
~
(только для чтения),/tmp/lima
(для записи); - SSH: 127.0.0.1:60022.
Как это работает
- Гипервизор: QEMU с ускорителем HVF;
- Совместное использование файловой системы: обратный туннель sshfs;
- Перенаправление портов:
ssh -L
, автоматическое отслеживание/proc/net/tcp
в гостевой системе.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: