Содержание статьи
Внешний монитор
Макбуки из первого поколения компьютеров на 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 и zsh
Homebrew — популярный сторонний пакетный менеджер для macOS. Если тебе нужна какая‑то консольная утилита, то, скорее всего, ты найдешь ее в Homebrew. С версии 3.0 Homebrew поддерживает ARM. До этого рабочим решением была установка Homebrew через слой бинарной трансляции Rosetta 2. Соответственно, все приложения, установленные оттуда, тоже проходили трансляцию и работали (но не так быстро, как могли бы армовские бинарники).
Сейчас достаточно поставить Homebrew через скрипт‑установщик и получать нативные пакеты для ARM.
$ xcode-select --install$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/$(logname)/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"
Но если понадобится переключаться между архитектурами, то можешь сделать себе такие алиасы в файле ~/.
или ~/.
:
alias intel="env /usr/bin/arch -x86_64 /bin/zsh --login"alias arm="env /usr/bin/arch -arm64 /bin/zsh --login"
Чуть позже мы столкнемся с практическим применением такого решения, но если вкратце, то скрипт конфигурации (./
) перед сборкой определяет переменные системы, в том числе и для какой архитектуры компилировать проект. Например, если сейчас выбрать режим i386 при установке Homebrew, то вместо бинарников для ARM64 мы получим версии для x86_64, что приведет к потере производительности.
Виртуальные машины
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, но и это не помогло мне сделать адаптивное разрешение экрана и общий с хостовой системой буфер обмена.
В общем, решение сыроватое, но вполне работоспособное и пока что бесплатное.
QEMU
QEMU — это глыба не только среди продуктов эмуляции, но и среди средств аппаратной виртуализации. Это основа гипервизора KVM, который использует аппаратные возможности современных процессоров. Базовая поддержка Apple Silicon уже есть в QEMU, и ее активно дорабатывают. Так что его в ряде случаев можно использовать как мощное средство виртуализации на M1.
Установка QEMU
Для начала подготовим необходимые пакеты для сборки:
$ brew install libffi gettext glib pkg-config autoconf automake pixman ninja
Клонируем репозиторий QEMU, добавляем ветку со включенным расширением BFloat16 и применяем патч Александра Графа:
$ git clone https://github.com/qemu/qemu && cd qemu
$ git checkout 3c93dfa42c394fdd55684f2fbf24cf2f39b97d47
$ curl https://patchwork.kernel.org/series/485309/mbox/ | git am
Собираем и устанавливаем QEMU:
$ mkdir build && cd build
$ ../configure --target-list=aarch64-softmmu
$ make -j8$ sudo make install
Готово, можно пользоваться!
Создание виртуальной машины с Ubuntu в QEMU
Давай попробуем поставить Ubuntu для x86_64.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»