LINUX.ORG.RU

Apple Rosetta для Linux-приложений

 , , rosetta,


1

2

Начиная с macOS 13+, на чипах Apple silicon в гостевой виртуальной машине ARM c Linux можно запускать приложения Linux для х86_64.

При этом дистрибутив Linux должен быть собран для архитектуры ARM. Далее в гостевой виртуальной машине монтируется Rosetta Share и Rosetta регистрируется как обработчик для x86_64 ELF.

>>> Подробности (apple.com)

★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Ссылка интересная, но может, это всё-таки не в новости, а в мини-статьи?

Далее. Почитал материал по ссылке. К стыду своему, не совсем понял. Речь вроде бы про виртуализацию, но заметка Apple лежит в разделе для разработчиков и приводятся примеры программного кода. Код чего имеется в виду — того самого линукс-приложения, которое мы запускаем на маке или какой-то внешней оболочки?

Повторюсь, материал потенциально интересный для ЛОРа, но хотелось бы получить комментарии от людей в теме.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit
  1. пусть будет в статьи, хотя смысл - ознакомить с этой новостью, тк это с 13+ , а на макОС хороший тон не спешить 1-1.5 года с переходом по версии, те это свежак и по сути толком непотестенный еще, да и формат вроде тоже не статейный этой инфы так-то.

  2. https://developer.apple.com/documentation/virtualization

Во введении все вполне поясняется.

API на свифте или objC дает возможность замутить виртуалку с линуксом, но тк оно будет ARM, то прикрутили еще транслятор calling convention и прочего для ELF x86_64 и всё это каждый может свободно кодить … и даже «карапузы» с закосами :)

sloan ★★
() автор топика
Ответ на: комментарий от nightsinger

мало что знаю про wsl и планов погружаться в ЭТО нет

sloan ★★
() автор топика
Ответ на: комментарий от sloan

хотя смысл - ознакомить с этой новостью, тк это с 13+

Убедил.

hobbit ★★★★★
()

Ну т.е. можно писать приложения под линукс и запускать везде? Щикарно я считаю.

steemandlinux ★★★★★
()

Забавно, крупнейшие (и не очень) ОС запиливают поддержку linux-приложений. Как-то много внимания для «студенческой красноглазой поделки».

alex1101
()

Но нахрена? Эпплоспецифичный путь запускать x86 бинарники внутри линукса который работает внутри макоси. Ну такое себе, на самом деле. Чтобы девопсы могли запускать x86-only контейнеры внутри своего макбука?

no-dashi-v2 ★★★
()
Ответ на: комментарий от no-dashi-v2

Не обязательно девопсы, разработчикам тоже может понадобиться, если они пишут сервис, зависящий от другого.

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

Тогда они спокойно поднимут этот самый сервис от которого зависит их сервис на архитектуре AArch64

no-dashi-v2 ★★★
()
Ответ на: комментарий от hobbit

ну потому что это про то как портировать своё приложение на apple silicon не портируя его целиком а частично транслируя через розету. сходства с wsl в целом есть

Thero ★★★★★
()
Ответ на: комментарий от alex1101

Потому что проще запилить поддержку студенческой красноглазой поделки, чем довести оную до ума

Original_1
()
Ответ на: комментарий от exst

В макос пару раз в мажорных апдейтах прилетали проблемы с вайфаем, поэтому более осторожные люди ждут недельку после релиза. С иос и столько не ждут. Откуда он взял про год-полтора без понятия. Может какие-то единицы так и делают. Яблоки в целом достаточно оперативно фиксят баги, и столько ждать нет смысла. За это время десяток секьюрити апдейтов выйдет

Logopeft ★★
()
Последнее исправление: Logopeft (всего исправлений: 2)

Во-первых этому уже несколько месяцев, во-вторых это просто более быстрая замена qemu-user

Baz
()
Последнее исправление: Baz (всего исправлений: 1)
Ответ на: комментарий от alex1101

Чтобы окончательно загнать её под контейнерную шконку, очевидно же.

yoghurt ★★★★★
()

Слишком много условий. макос 13+, чипы какие-то «Яблоко кремний»…

Не нужно. Да и зачем на арме гонять x86? Понятно, что бывает прям надо, но в целом лучше не попадать в такие ситуации, заранее отказываясь от эппла в пользу более гетеросексуальных решений.

AVL2 ★★★★★
()

Пляски с бубном. Вместо того, чтобы просто купить нормальный ноутбук или купить или самому собрать (при наличии интереса) нормальный ПК.

Apple хорошо сделала, затруднив установку Linux. А то, я помню, тут были фанаты Apple, размахивающие своими Макбуками с Linux. Воображали себя какой-то «элитой». А Apple их мордой об стол.

Partisan ★★★★
()
Последнее исправление: Partisan (всего исправлений: 1)
Ответ на: комментарий от Partisan

Вместо того, чтобы просто купить нормальный ноутбук или купить или самому собрать (при наличии интереса) нормальный ПК.

Жужащий пылесборник без автономности =)

Apple хорошо сделала, затруднив установку Linux

Ну да, специально перевела ноуты на ARM =)

exst ★★★★
()
Последнее исправление: exst (всего исправлений: 1)

Я так и не понял. Докер контейнеры научились уже таким макаром запускать?

vbr ★★★★
()
Ответ на: комментарий от hobbit

Я понял и даже немного разбирался с этим поэтому могу ответить на конкретные вопросы.

В целом схема выглядит так:

Имеется библиотека от Эппл под названием Hypervisor.Framework. Она даёт низкоуровневое апи для написания пускалки виртуальных машин. Упомянул для полноты. Ее апи реально низкоуровневое и чтобы запустить виртуальный Линукс, нужно быть гуру.

Недавно добавили библиотеку Virtualization.Framework. Это надстройка над Hypervisor.Framework. По сути в этой библиотеке реализована полноценная виртуальная машина. Она адски высокоуровневая. В несколько десятков строк можно запустить консольный Линукс. В несколько сотен — с графикой. В ней встроена поддержка для запуска Линукса и макоси. Не знаю, в чем именно эта поддержка заключается.

Эти библиотеки для макоси, для Swift/ ObjC. Виртуализация идёт для родной архитектуры. То бишь на M1 можно запустить только ARM Линукс. Эмуляции других архитектур нет.

Далее. Не связано со всем предыдущим. С выпуском M1 Apple разработала компонент макоси под названием Rosetta. Он нужен для того, чтобы запускать x86 программы для макоси на процессоре Apple Silicone. Он работает путем преобразования инструкций с x86 на ARM во время выполнения и в целом работает очень быстро кроме некоторых пограничных случаев.

О чем эта новость: в прошлом году (новость слегка запоздала, ну да ладно) в Virtualization.Framework добавили новую фичу. Теперь на процессоре Apple Silicone, в запущенной хостовой макоси можно запустить ARM Linux. В этом Линукс нужно установить некую программку. И после этого внутри этого ARM линукса можно будет запускать x86 программы для линукса, используя технологию Rosetta.

В целом новость для обычных юзеров не слишком ценная. Больше для тех, кто с этой виртуализацией работает.

Мое понимание такое, что эта программка через специальный интерфейс передает x86 код в макось, в макоси он розеттой транслируется и возвращается ARM код обратно в запущенный в виртуалке линукс, где и выполняется.

Все это, конечно, проприетарно от начала до конца.

vbr ★★★★
()
Ответ на: комментарий от Logopeft

Ну я прям щас ставлю 12.6.3. Предыдущая версия тоже поддерживается. Я не думаю, что большинство так делает, но я обычно перехожу на следующую версию как раз через год после ее релиза. Мне новые фичи не нужны. А стабильность повыше.

Хотя вот на 13 скорей всего перейду пораньше. Как раз из-за фичи, которую в этой теме обсуждают - хочу с ней поэкспериментировать. Но это исключение. Мне и 10.8 хватало по большому счёту, это была первая макось, которой я пользовался и с тех пор я ничего нового в новых версиях не увидел для себя.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от Partisan

Ничего не затруднили. Асахи Линукс ставь и пользуйся. Драйверы не написали, да, не помогли, но и не мешают.

vbr ★★★★
()

Я не очень программер, но может быть кто-нибудь объяснит как вообще работают эти «запускалки»? Именно запускалки, а не полноценные эмуляторы архитектуры, запускающие образ.

Ладно, запустить бинарь не проблема. Проблема в том, что программа не состоит из одного бинаря, ей нужно окружение, библиотеки. Базовые библиотеки, условный glibc, openssl можно притащить с собой. Но что насчет тяжеловесных зависимостей, привязки к тем же X-am, Dbus, systemd в конце концов. Получается, что нужно эмулировать каждую из этих зависимостей? Да ну нах, проще сразу собирать под MacOS с учетом и архитектуры и API.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Нет. Эмулировать нужно только сисколлы ядра. Все остальное обеспечивается библиотеками той архитектуры, которая эмулируется. Обычными библиотеками из обычных пакетов из репов дистрибутива.

Взаимодействие с иксами, пульсой и подобным идет через сокеты и не зависит от архитектуры.

James_Holden ★★★★
()
Последнее исправление: James_Holden (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Все равно не понимаю. Вот есть условная программа, пусть например nginx, только не нативно собранный, а эмулируемый. Он пишет логи в syslog. Но как он будет работать под MacOS, если тут нет syslog? Перед запуском nginx'а придется запускать syslog?

А если программа обращается ну например в /proc, которого тоже в макакоси нет?

Я имею в виду не низкоуровневые вызовы типа ioctl() а в принципе работу в незнакомом окружении.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Так погоди. Тут речь о том что все не на макос работает, а на виртуалке с linux, запущенной на макос. В виртуалку пробрасывается эмулятор проца от макос, а все окружение линуксовое.

Вот так и будет.

James_Holden ★★★★
()
Ответ на: комментарий от James_Holden

А, ну так это мрак, как мне кажется.

Чем пробрасывать целое окружение ради одной программки, проще эту программку пропатчить под нативную работу на макоси.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Если она свободная - конечно проще ее собрать под мак. А если блоб? Не пропатчишь.

James_Holden ★★★★
()

Даёшь нативный Линух. А всякие WSL с Rosetta это самообман

kastro
()
Ответ на: комментарий от exst

без автономности

Что-то мне подсказывает, что если на макбуке крутить докеры через розетту, то он тоже будет не особо автономный.

no-such-file ★★★★★
()

э.... а зачем? если есть виртуалка с арм-линуксом то почему бы там не запускать арм-линукс-приложения?

kirill_rrr ★★★★★
()
Ответ на: комментарий от no-such-file

Что-то мне подсказывает, что если на макбуке крутить докеры через розетту, то он тоже будет не особо автономный.

Потребление одного ядра на i7 как у всего CPU кластера из 8 ядер на М1.

exst ★★★★
()
Ответ на: комментарий от no-such-file

ЛОЛ, ну да. Ты главное верь.

Че верь? У меня обе железки сейчас на столе.

exst ★★★★
()

Купить эппл, чтобы в виртуалке поставить Линукс. Да ещё и ARM… Месье знает толк в извращениях!

Vinni_Pooh ★★★★★
()

Главный юзкейс - гонять образы для x86_64-linux в докере. Оно и до этого работало через qemu, но очень медленно. Тестил нативную сборку софта для x86_64-linux через nix в докере - стало работать раз в десять быстрее. Для работы нужен Docker Desktop 4.16.0+ и галочка в настройках докера. В общем теперь на маках можно запускать линуксовый софт под две архитектуры с минимальными усилиями

Tsukasa
()
Ответ на: комментарий от alex1101

осмелюсь предположить, что линукс как ядро и вычислительную среду, основанную на стандартах никто поделкой не считает, чего не скажешь о ГУЙ на линуксе в большинстве проявлений и прочей белиберде поверх годной основы

sloan ★★
() автор топика
Ответ на: комментарий от no-dashi-v2

возможно внимание мелкософта и апле к линуксу говорит об их вере в корпоративное будущее линукса

sloan ★★
() автор топика
Ответ на: комментарий от Logopeft

он это взял из личного опыта и кругозора, у тебя это может быть противоположным и ты имеешь на это право, оставь его и мне

sloan ★★
() автор топика
Ответ на: комментарий от Logopeft

к сожалению техническая политика компании, даже лучшая, подчинена учетной и маркетинговым политикам, ткчт ответ - нет, апле и фиксит вовремя, и притемняет, и закрывает глаза если это выгодно …

также фактом является активная разработка крайней мажорной версии - выводы может каждый сделать сам

sloan ★★
() автор топика
Последнее исправление: sloan (всего исправлений: 1)
Ответ на: комментарий от Partisan

ты не мог бы привести пример «нормального ноута» за 70к - аналога МВА? спасибо.

sloan ★★
() автор топика
Ответ на: комментарий от kirill_rrr

ну наверное они что-то про это знают и ожидают, что так будет получаться не всегда, а в игре оставаться хотят :)

sloan ★★
() автор топика
Ответ на: комментарий от Vinni_Pooh

есть предложение взять паузу быть «пупом земли» и оглядеться :)

sloan ★★
() автор топика
Ответ на: комментарий от exst

тайминг не панацея, главная идея не попадать в бета-тестеры, если нет такого желания

разработка версии закончена - самое время начинать :)

sloan ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.