vak: (Default)
[personal profile] vak
Все знают утилиту Wine, которая запускает бинарные программы Windows на Линуксе. Интеловский бинарный код выполняется как родной, а обращения к операционной системе (системные вызовы) перехватываются и обрабатываются. То же самое делает noah, позволяя выполнять линуксные бинарники на MacOS.

На картинке показано, как под noah стартует линуксный bash, а из него запускаются линуксные приложения xeyes, xclock, xfwrite и компилятор gcc.



Утилита глюкавая, и если вызвана неправильно, падает со странными ошибками. Но её исходник может служить источником ценной информации, как правильно работать с маковским гипервизором. К примеру, если вы соберёте noah из исходников на последней версии MacOS, программа будет падать с ошибкой:
!!PANIC!!
perror is "Undefined error: 0" if it is valid
could not create the vm: error code fae94007
Это означает, что нет прав доступа к гипервизору. Надо разрешить доступ командой:
codesign -s - --entitlements app.entitlements --force noah
При этом в файле app.entitlements должно находиться следующее содержимое:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.hypervisor</key>
    <true/>
</dict>
</plist>
Большой минус noah: она понимает только бинарники 64-битного линукса для архитектуры x86_64. Запустить бинарники i386 не удаётся.

Date: 2022-08-05 19:00 (UTC)
From: [personal profile] ivanrubilo
Фиг знает, никогда Wine не любил - всегда что-то или криво, или шрифты уехавшие или просто крешится приложение, да ещё и кучу мусора создаёт. Лучше уж по старинке в qemu или чём-то таком, откуда не расползётся. Ну либо линупс-бокс или хз там ssh -X на край.