В 2020 году Apple пред­ста­вила новую архи­тек­туру 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 и 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)"

Но если понадо­бит­ся перек­лючать­ся меж­ду архи­тек­турами, то можешь сде­лать себе такие али­асы в фай­ле ~/.bashrc или ~/.zshrc:

alias intel="env /usr/bin/arch -x86_64 /bin/zsh --login"
alias arm="env /usr/bin/arch -arm64 /bin/zsh --login"

Чуть поз­же мы стол­кнем­ся с прак­тичес­ким при­мене­нием такого решения, но если вкрат­це, то скрипт кон­фигура­ции (./configure) перед сбор­кой опре­деля­ет перемен­ные сис­темы, в том чис­ле и для какой архи­тек­туры ком­пилиро­вать про­ект. Нап­ример, если сей­час выб­рать режим 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»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    4 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии