«Просто поставь Linux» — Apple услышала и теперь предлагает Linux прямо внутри вашего Mac

leer en español

13143
«Просто поставь Linux» — Apple услышала и теперь предлагает Linux прямо внутри вашего Mac

Apple выпустила container machines — постоянные Linux-виртуалки для разработчиков на Mac.

image

Apple решила упростить жизнь разработчикам, которым приходится писать код на Mac, а запускать готовые приложения уже в Linux. На конференции WWDC компания представила container machines – постоянные виртуальные машины с Linux, которые напоминают подсистему Windows для Linux, но сделаны под macOS.

Проблема знакома многим разработчикам. Рабочий компьютер может быть на macOS, а серверная среда, куда потом уезжает приложение, почти всегда работает на Linux. Из-за разницы между средой разработки и средой, где приложение запускают, появляются лишние настройки, несовместимости и неприятные сюрпризы. macOS и Linux похожи как Unix-подобные системы, но полного совпадения между ними всё равно нет.

Новая функция стала частью проекта Container, который Apple впервые показала на WWDC годом ранее. На нынешней конференции вышла версия 1.0, а вместе с ней появились container machines. Проект использует стандартные контейнеры Open Container Initiative, но запускает и обычные контейнеры, и новые «контейнерные машины» внутри лёгких виртуальных машин. Такой подход даёт более жёсткую изоляцию между Linux-средой и основной системой macOS.

Код проекта написан на Swift и открыт на GitHub под лицензией Apache 2.0. В основе лежит ещё один открытый пакет Apple под названием containerization. Пока инструмент выглядит скорее как проект для разработчиков, чем как полноценная часть macOS: он размещён на GitHub, а не встроен в систему напрямую. Поддерживается только macOS 26.

Установив инструмент, можно ввести команду container machine run – она открывает терминал внутри стандартной Linux-машины. Можно запустить и отдельную команду, например container machine run uname -a. В таком случае команда выполнится внутри Linux-среды, но пользователь останется в оболочке macOS.

Есть и ограничения. Команда container machine create работает только с образами, где есть системная программа инициализации /sbin/init. Многие контейнерные образы собирают под одно приложение, поэтому такого компонента в них нет. В таком случае разработчику придётся собрать собственный образ через Dockerfile. В документации Apple уже появились такие примеры.

Автор исходного материала проверил инструмент на практике. Ему удалось создать контейнерную машину на базе Ubuntu 24.04 с комплектом Swift, подключиться к ней из Visual Studio Code на macOS, собрать проект в Linux и запустить результат на стороне Mac. Но отлаживать код со Swift не вышло полностью: точки останова не срабатывали. В проекте на .NET код удалось отладить корректно.

По умолчанию container machine подключает домашнюю папку пользователя macOS с правами чтения и записи. Это удобно разработчикам: код и файлы доступны сразу с обеих сторон. Для безопасности такой вариант спорный. Вредоносный пакет, установленный внутри Linux-среды, теоретически может добраться до ключей и настроек в папке .ssh. Поведение можно изменить через параметр --home-mount, а самый безопасный вариант – полностью отключить доступ к домашней папке.

С памятью тоже есть нюанс. По умолчанию контейнерная машина получает половину всей памяти компьютера, но расходует её по мере необходимости. В тесте система выделила 32 ГБ, а после того как запустили виртуальную машину и PostgreSQL, фактически использовала около 1 ГБ. Проблема в другом: занятая память не возвращается обратно macOS, пока машина работает. Освободить её можно, только перезапустив виртуальную машину.

Запускать графические Linux-приложения в рамках проекта пока не планируют. В Windows подсистема WSL умеет запускать такие приложения через X11 или Wayland. В случае Apple пользователям предлагают установить XQuartz и подключаться к нему через сеть между контейнером и основной системой, но полноценной встроенной поддержки пока нет.

У Mac-разработчиков уже есть немало способов запускать Linux-контейнеры и виртуальные машины: Docker, Podman, Colima, UTM, VirtualBox, OrbStack и удалённые Linux-серверы по SSH. Поэтому Apple предстоит доказать, что её собственные контейнерные инструменты могут стать серьёзной альтернативой. Первые впечатления при этом неплохие: система работает быстро и выглядит лёгкой, хотя документацию, функции и работу с памятью ещё предстоит доработать.