Категория > Новости > M1 для хакера. Тестируем Homebrew, виртуалки, Docker и Node на новой архитектуре Apple - «Новости»
M1 для хакера. Тестируем Homebrew, виртуалки, Docker и Node на новой архитектуре Apple - «Новости»1-02-2022, 00:00. Автор: Григорий |
представила новую архитектуру Apple Silicon на базе ARM и объявила, что в течение двух лет переведет на нее все свои компьютеры. Для простых пользователей миграция проходит практически незаметно, а как насчет продвинутых? В этой статье я расскажу об итогах года использования MacBook Pro с M1 внутри и покажу те немногие подводные камни, с которыми мне довелось столкнуться.Внешний мониторМакбуки из первого поколения компьютеров на M1 поддерживали всего один внешний монитор (к Mac mini можно подключить два). С выходом новых MacBook Pro на M1 Pro и M1 Max ситуация изменилась: у них есть порт HDMI, который можно использовать для второго экрана. Если же менять ноутбук ты пока не хочешь, а для работы нужно несколько мониторов, то решением может стать док‑станция с поддержкой DisplayLink — например, Dell D6000 или CalDigit. Однако я просто отказался от использования трех мониторов и купил один, но UltraWide. Да, это не Retina Display, но если тебе нужно разрешение 5K, то выбор не велик — только LG UltraFine, стоящие 90 с чем‑то тысяч рублей. Недавно товарищ посоветовал мне великолепную утилиту, которая позволяет в разы улучшить работу с моим монитором. BetterDummy создает фиктивный дисплей, который поддерживает огромный набор разрешений Retina, а затем передает картинку с него на твой. Если твой монитор плохо поддерживается в macOS, то эта программа может кардинально изменить ситуацию. Например, для дисплея с разрешением 3440 × 1440 я рекомендую использовать следующие настройки. Единственная проблема, с которой я столкнулся при использовании BetterDummy, — невозможно выставить высокую частоту обновления (144 Гц). Оказалось, что это ограничение API CGVirtualDisplay в macOS, и исправить эту проблему может только Apple. Возможно, все изменится, когда появится поддержка ProMotion для AirPlay или Sidecar. Если ты хочешь иметь высокую частоту обновления экрана (144 Гц и выше) с разрешением 3440 на 1440 точек и более, то придется отказаться от BetterDummy и купить отдельный кабель USB Type-C → DisplayPort. Через универсальные хабы (у меня Native Union) работать с такими настройками не выйдет — не хватит пропускной способности порта для одновременного вывода изображения и подключения периферии. Homebrew и zshHomebrew — популярный сторонний пакетный менеджер для macOS. Если тебе нужна какая‑то консольная утилита, то, скорее всего, ты найдешь ее в Homebrew. С версии 3.0 Homebrew поддерживает ARM. До этого рабочим решением была установка Homebrew через слой бинарной трансляции Rosetta 2. Соответственно, все приложения, установленные оттуда, тоже проходили трансляцию и работали (но не так быстро, как могли бы армовские бинарники). Сейчас достаточно поставить Homebrew через скрипт‑установщик и получать нативные пакеты для ARM. $ /bin/bash -c "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' /Users/$(logname)/.zprofile Но если понадобится переключаться между архитектурами, то можешь сделать себе такие алиасы в файле
alias intel="env /usr/bin/arch -x86_64 /bin/zsh --login"
alias arm="env /usr/bin/arch -arm64 /bin/zsh --login"
Чуть позже мы столкнемся с практическим применением такого решения, но если вкратце, то скрипт конфигурации ( Виртуальные машиныParallels DesktopПродукт Parallels — это в данный момент самое функциональное решение для виртуализации на M1. Недаром его показывали на презентации Apple. Через Parallels Desktop можно в один клик установить дистрибутивы Ubuntu, Fedora, Debian и macOS Monterey. С версии 17.1.1 добавлена поддержка актуальной на данной момент версии Kali Linux — 2021.3. Драйверы гостевых машин оптимизированы и работают без нареканий (буфер обмена, сеть, динамическое разрешение, 3D-ускорение и прочие фичи). Проброс адаптера Wi-Fi или любого другого устройства работает корректно. Отдельно хочется поговорить о Windows 11 для ARM, которая умеет транслировать код приложений x86_64 в нативные вызовы ARM. Причем делает это весьма качественно, как и Rosetta 2. При помощи такой матрешки мне удалось запустить отладчик для кода x64 и без проблем увидеть регистры RBX, RSP, RBP и так далее. Так же работает и Visual Studio, которая смогла скомпилировать небольшой тестовый проект (Quasar RAT) в классическую архитектуру i386. И это все на виртуальной машине с гостевой Windows, для которой хостом выступает macOS для ARM. Фантастика! Не могу не отметить энергоэффективность при работе с виртуальными машинами. Запущенные фоном VM без серьезной нагрузки практически не влияют на время работы от аккумулятора. Помимо этого, в новых версиях Parallels был добавлен режим поездки, в котором еще сильнее снижается энергопотребление при бездействии VM. VMwareЕще один производитель популярных решений для виртуализации до недавнего времени был за бортом затеянного Apple переворота, но в конце сентября 2021 года компания VMware представила на всеобщее обозрение техническое превью VMware Fusion. Сейчас VMware Fusion можно бесплатно загрузить на странице продукта или же по прямой ссылке. Минимальный набор удобств присутствует, однако в Ubuntu мне не удалось настроить VMware Tools. Я установил открытую версию — open-vm-tools, но и это не помогло мне сделать адаптивное разрешение экрана и общий с хостовой системой буфер обмена. В общем, решение сыроватое, но вполне работоспособное и пока что бесплатное. QEMUQEMU — это глыба не только среди продуктов эмуляции, но и среди средств аппаратной виртуализации. Это основа гипервизора KVM, который использует аппаратные возможности современных процессоров. Базовая поддержка Apple Silicon уже есть в QEMU, и ее активно дорабатывают. Так что его в ряде случаев можно использовать как мощное средство виртуализации на M1. Установка QEMU Для начала подготовим необходимые пакеты для сборки:
Клонируем репозиторий QEMU, добавляем ветку со включенным расширением BFloat16 и применяем патч Александра Графа: $ git checkout 3c93dfa42c394fdd55684f2fbf24cf2f39b97d47 Собираем и устанавливаем QEMU: $ ../configure --target-list=aarch64-softmmu Готово, можно пользоваться! Создание виртуальной машины с Ubuntu в QEMU Давай попробуем поставить Ubuntu для x86_64. Перейти обратно к новости |