Рубріки: Решения

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 в гостевой системе.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023