Lima linux on mac

Создано ПО для превращения «макбуков» в Linux-ПК по технологии, «подсмотренной» у Microsoft

Неофициальная «подсистема macOS для Linux»

Состоялся первый релиз проекта Lima, в рамках которого ведется разработка среды для запуска Linux-приложений в операционной системе Apple macOS. Об этом сообщил профильный ресурс Phoronix.

Согласно описанию проекта, размещенному на его официальной странице, Lima можно рассматривать как своего рода неофициальную «подсистему macOS для Linux», названную по аналогии с разработкой корпорации Microsoft – Windows Subsystem for Linux (WSL, «Подсистема Windows для Linux»). Решаемые задачи и выбранный подход к их решению у Lima и WSL2 во многом схожи.

Lima поддерживает запуск программ для Linux, собранных под архитектуры x86_64 (процессоры Intel, AMD) и ARM (aarch64). Заявлена возможность исполнения ARM-сборок приложений в x86-окружении и в любых других комбинациях. Однако, как подчеркивается на странице проекта, варианты «ARM на ARM» и «x86 на ARM» пока не были протестированы разработчиками.

Lima (Linux-on-Mac) – проект с открытым исходным кодом, который распространяется на условиях свободной лицензии Apache 2.0. Код опубликован на хостинге проектов Github. Владельцем репозитория числится японский программист под псевдонимом AkihiroSudo, который также называет себя мейнтейнером проектов Moby, BuildKit, containerd и runc. Разработка ведется на языке программирования Go.

На момент публикации материала актуальной является Lima версии 0.1.0. Разработчиками подготовлены бинарные сборки под платформы x86_64 и ARM. Их размер в нераспакованном виде лишь немного превышает 8 МБ, без учета зависимостей.

Принцип работы

Работа Linux-прослойки обеспечивается при помощи запуска виртуальных машин с Linux, содержащих containerd – инструментарий для управления запуском готовых образов совместимых с Docker контейнеров.

Эмуляция «неродного» железа осуществляется силами свободного ПО Qemu с ускорителем HVF – его пользователю придется установить вручную, например, с помощью менеджера пакетов Homebrew и настроить самостоятельно.

Реализована поддержка совместного доступа к файлам и перенаправление портов в Linux-окружении за счет использования sshocker и reverse ssh.

Авторами проекта заявлена поддержка популярных Linux-дистрибутивов Ubuntu и Fedora.

Управление Lima осуществляется из командной строки. Создание графического интерфейса на базе фреймворков Qt или Electron в планах разработчиков.

Альтернативы

Проект Lima – это не первая и не единственная попытка обеспечить запуск Linux-приложений на «железе» Apple в среде macOS. К примеру, добиться этого можно достаточно давно с помощью бесплатного Oracle Virtualbox, который позволяет развернуть в macOS виртуальную машину, в том числе и под управлением Linux.

Стоит также упомянуть Noah – инструмент, который не полагается на виртуализацию. Принцип его работы скорее напоминает WINE (Wine is not emulator): программа «на лету» транслирует системные вызовы ядра Linux в вызовы ядра macOS (Darwin). Кроме того, Noah включает интерпретатор ELF – стандартного для Linux формата исполняемых файлов. Однако, судя по репозиторию проекта, его развитие не ведется как минимум год. Кроме того, Noah позиционировался автором как проект экспериментальный, который поддерживает запуск далеко не всего пула доступных Linux-приложений.

Linux-приложения в Windows

Корпорация Microsoft развивает подсистему Windows для Linux, которая позволяет запускать Linux-приложения в ОС Windows 10 при помощи встроенных средств виртуализации и контейнеризации. Целевая аудитория решения – разработчики кроссплатформенного ПО.

Подсистема впервые появилась в Windows 10 в 2016 г., но позволяла запускать исключительно программы, взаимодействие с которыми осуществляется посредством командной строки.

О том, что ведется разработка второй версии WSL (WSL2) Microsoft сообщила в мае 2019 г. Новое поколение подсистемы, в которую было включено уже полноценное ядро Linux, стало важной частью релиза Windows 10 2004, который состоялся в конце мая 2020 г. Тогда же Microsoft анонсировала будущую поддержку запуска Linux-приложений с графическим интерфейсом (Graphical User Interface, GUI).

Читайте также:  Linux часть имени файла

В апреле 2021 г., как ранее сообщал CNews, тестировщики-добровольцы впервые получили доступ к сборке Windows 10, в которой реализован запуск таких приложений. Были заявлены поддержка звука «из коробки», GPU-ускорения и «бесшовная» интеграция в Windows-окружение. Выполнение Linux-приложений c GUI обеспечивает компонент Windows 10, который разработчики называют WSLg – часть WSL2.

Источник

Lima: подсистема macOS для Linux

Lima запускает виртуальные машины Linux на macOS с автоматическим общим доступом, переадресацией портов и средой выполнения контейнеров containerd .

Lima можно рассматривать как своего родна неофициальную подсистему macOS для Linux или containerd для Mac.

Примеры

Консольная UNIX-утилита uname

Совместное использование файлов в macOS и Linux

Запуск контейнеров containerd (вместе с контейнерами Docker)

http://127.0.0.1:8080 доступен как из macOS, так и из Linux.

Примечание: привилегированные порты (0-1023) не могут быть перенаправлены.

Используйте containerd и nerdctl (containerd ctl).

Начало работы

Требования (Intel Mac)

  • Программа для эмуляции аппаратного обеспечения QEMU (brew install qemu);
  • Выполните следующие команды, чтобы включить —accel=hvf :

Требования (ARM Mac

  • QEMU c поддержкой —accel=hvf . Доступна здесь .

Примечание: Lima не тестируется на ARM Mac.

Установка

Загрузите архив с бинарными файлами и распакуйте его в директории /usr/local .

Для установки исходников запустите make && make install .

Использование

  • Запустите , чтобы запустить экземпляр Linux. Имя экземпляра по умолчанию — default . Lima автоматически открывает редактор (vi) для просмотра и изменения конфигурации. Подождите, пока на главном терминале не появится надпись READY ;
  • Запустите limactl shell чтобы запустить на Linux. Для экземпляра default эта команда может быть сокращена просто до lima . Команда lima также принимает имя экземпляра как переменную среды $LIMA_INSTANCE ;
  • Запустите limactl ls , чтобы отобразить экземпляры;
  • Запустите limactl delete , чтобы удалить экземпляр;
  • Чтобы включить завершение bash, добавьте source в

Примечание: обязательно сделайте резервную копию ваших данных перед запуском 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 в гостевой системе.

    Highload нужны авторы технических текстов. Вы наш человек, если разбираетесь в разработке, знаете языки программирования и умеете просто писать о сложном!
    Откликнуться на вакансию можно здесь .

    Как правильно удалить большое количество файлов из папки на Linux’e

    Источник

    Lima linux on mac

    Lima: Linux virtual machines (on macOS, in most cases)

    Lima launches Linux virtual machines with automatic file sharing, port forwarding, and containerd.

    Lima can be considered as a some sort of unofficial «macOS subsystem for Linux», or «containerd for Mac».

    Lima is expected to be used on macOS hosts, but can be used on Linux hosts as well.

    ✅ Automatic file sharing

    ✅ Automatic port forwarding

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

    • Rancher Desktop: Kubernetes and container management to the desktop
    • Colima: Docker (and Kubernetes) on macOS with minimal setup
    • Lima xbar plugin — xbar plugin to start/stop VMs from the menu bar and see their running status.

    Sharing files across macOS and Linux

    Running containerd containers (compatible with Docker containers)

    http://127.0.0.1:8080 is accessible from both macOS and Linux.

    Install recent version of QEMU. v6.1.0 or later is recommended.

    On ARM hosts, a patched version of QEMU has to be installed for enabling -accel hvf support.

    The patch was merged into the master branch on 2021-09-21 and will be included in QEMU v6.2.0.

    The patch is already cherry-picked in the Homebrew package of QEMU since 6.1.0_1 bottle.

    • Download the binary archive of Lima from https://github.com/lima-vm/lima/releases , and extract it under /usr/local (or somewhere else). For instance:
    • To install Lima from the source, run make && make install .

    NOTE Lima is not regularly tested on ARM Mac (due to lack of CI).

    Run limactl start to start the Linux instance. The default instance name is «default». Lima automatically opens an editor ( vi ) for reviewing and modifying the configuration. Wait until «READY» to be printed on the host terminal.

    Run limactl shell to launch on Linux. For the «default» instance, this command can be shortened as lima . The lima command also accepts the instance name as the environment variable $LIMA_INSTANCE .

    Run limactl copy . to copy files between instances, or between instances and the host. Use : to specify a source or target inside an instance.

    Run limactl list [—json] to show the instances.

    Run limactl stop [—force] to stop the instance.

    Run limactl delete [—force] to delete the instance.

    To enable bash completion, add source to

    ⚠️ CAUTION: make sure to back up your data

    Lima may have bugs that result in loss of data.

    Make sure to back up your data before running Lima.

    Especially, the following data might be easily lost:

    • Data in the shared writable directories ( /tmp/lima by default), probably after hibernation of the host machine (e.g., after closing and reopening the laptop lid)
    • Data in the VM image, mostly when upgrading the version of lima

    The current default spec:

    • OS: Ubuntu 21.04 (Hirsute Hippo)
    • CPU: 4 cores
    • Memory: 4 GiB
    • Disk: 100 GiB
    • Mounts:

    (read-only), /tmp/lima (writable)

  • SSH: 127.0.0.1:60022
    • Hypervisor: QEMU with HVF accelerator
    • Filesystem sharing: reverse sshfs (planned to be replaced with 9p soon)
    • Port forwarding: ssh -L , automated by watching /proc/net/tcp and iptables events in the guest

    Contributing to Lima

    Please certify your Developer Certificate of Origin (DCO), by signing off your commit with git commit -s and with your real name.

    Please squash commits.

    • Test on ARM Mac
    • Performance optimization
    • More guest distros
    • Windows hosts
    • GUI with system tray icon (Qt or Electron, for portability)
    • VirtFS to replace the current reverse sshfs (work has to be done on QEMU repo)
    • vsock to replace SSH (work has to be done on QEMU repo)

    «What’s my login password?»

    Password is disabled and locked by default. You have to use limactl shell bash (or lima bash ) to open a shell.

    Alternatively, you may also directly ssh into the guest: ssh -p 60022 -i

    /.lima/_config/user -o NoHostAuthenticationForLocalhost=yes 127.0.0.1 .

    «Does Lima work on ARM Mac?»

    Yes, it should work, but not regularly tested on ARM (due to lack of CI).

    «Can I run non-Ubuntu guests?»

    Debian, Fedora, Alpine, Arch Linux, and openSUSE are also known to work. See ./examples/ .

    An image has to satisfy the following requirements:

    • systemd or OpenRC
    • cloud-init
    • The following binaries to be preinstalled:
      • sudo
    • The following binaries to be preinstalled, or installable via the package manager:
      • sshfs
      • newuidmap and newgidmap
    • apt-get , dnf , apk , pacman , or zypper (if you want to contribute support for another package manager, run git grep apt-get to find out where to modify)

    «Can I run other container engines such as Docker and Podman?»

    Yes, any container engine should work with Lima.

    The default Ubuntu image also contains LXD. Run lima sudo lxc init to set up LXD.

    «Can I run Lima with a remote Linux machine?»

    Lima itself does not support connecting to a remote Linux machine, but sshocker, the predecessor or Lima, provides similar features for remote Linux machines.

    e.g., run sshocker -v /Users/foo:/home/foo/mnt -p 8080:80 @ to expose /Users/foo to the remote machine as /home/foo/mnt , and forward localhost:8080 to the port 80 of the remote machine.

    «Advantages compared to Docker for Mac?»

    Lima is free software (Apache License 2.0), while Docker for Mac is not. Their EULA even prohibits disclosure of benchmarking result.

    On the other hand, Moby, aka Docker for Linux, is free software, but Moby/Docker lacks several novel features of containerd, such as:

    «QEMU crashes with HV_ERROR «

    If you have installed QEMU v6.0.0 or later on macOS 11 via homebrew, your QEMU binary should have been already automatically signed to enable HVF acceleration.

    However, if you see HV_ERROR , you might need to sign the binary manually.

    EOF codesign -s — —entitlements entitlements.xml —force /usr/local/bin/qemu-system-x86_64 «>

    Note: Only on macOS versions before 10.15.7 you might need to add this entitlement in addition:

    • Make sure that HVF is enabled with com.apple.security.hypervisor entitlement. See «QEMU crashes with HV_ERROR «.
    • Emulating non-native machines (ARM-on-Intel, Intel-on-ARM) is slow by design.
    • make sure qemu is codesigned, See «QEMU crashes with HV_ERROR «.
    • if you are on macOS 10.15.7 or 11.0 or later make sure the entitlement com.apple.vm.hypervisor is not added. It only works on older macOS versions. You can clear the codesigning with codesign —remove-signature /usr/local/bin/qemu-system-x86_64 and start over.

    «Port forwarding does not work»

    Prior to Lima v0.7.0, Lima did not support forwarding privileged ports (1-1023). e.g., you had to use 8080, not 80.

    Lima v0.7.0 and later supports forwarding privileged ports on macOS hosts.

    On Linux hosts, you might have to set sysctl value net.ipv4.ip_unprivileged_port_start=0 .

    stuck on «Waiting for the essential requirement 1 of X: «ssh»

    libslirp v4.6.0 used by QEMU is known to be broken. If you have libslirp v4.6.0 in /usr/local/Cellar/libslirp , you have to upgrade it to v4.6.1 or later ( brew upgrade ).

    «permission denied» for limactl cp command

    The copy command only works for instances that have been created by lima 0.5.0 or later. You can manually install the required identity on older instances with (replace INSTANCE with actual instance name):

    «Cannot access the guest IP 192.168.5.15 from the host»

    The default guest IP 192.168.5.15 is not accessible from the host and other guests.

    To add another IP address that is accessible from the host and other virtual machines, enable vde_vmnet .

    «Hints for debugging other problems?»

    • Inspect logs:
      • limactl —debug start
      • $HOME/.lima/ /serial.log
      • /var/log/cloud-init-output.log (inside the guest)
      • /var/log/cloud-init.log (inside the guest)
    • Make sure that you aren’t mixing up tabs and spaces in the YAML.

    About

    Linux virtual machines, on macOS (aka «Linux-on-Mac», «macOS subsystem for Linux», «containerd for Mac», unofficially)

    Источник

    Читайте также:  Sd formatter для windows
    Оцените статью