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 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.