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 не удаётся.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org